paint-brush
Ndenge nini kosala na complexité tango ya ko conçoivre ba systèmes logicielspene@fairday
64,370 botángi
64,370 botángi

Ndenge nini kosala na complexité tango ya ko conçoivre ba systèmes logiciels

pene Aleksei23m2024/02/05
Read on Terminal Reader
Read this story w/o Javascript

Molai mingi; Mpo na kotánga

Complexité nde ennemi! Tóyeba ndenge ya kosala na likambo yango!
featured image - Ndenge nini kosala na complexité tango ya ko conçoivre ba systèmes logiciels
Aleksei HackerNoon profile picture

Ezali na ntina nini?

Mikolo nionso, moment nionso na carrière na biso ya ingénierie, tokutanaka na ba problèmes ebele ya ndenge na ndenge ya complexité mpe ba situations ndenge na ndenge esika esengeli tozua décision to to postponer yango mpo na manque ya ba données. Ntango nyonso oyo tozali kotonga misala ya sika, kotonga ba infrastructures, to kutu tosalaka ba processus ya développement, tosimbaka mokili monene ya mikakatano ndenge na ndenge.


Ezali mpasi, mpe mbala mosusu kutu ekoki kosalema te, kotánga mikakatano nyonso. Okokutana na mwa makambo oyo kaka soki ozali kosala na niche moko ya sikisiki. Epayi mosusu, ezali na mingi oyo biso banso tosengeli kososola lolenge nini kosilisa, lokola ezali na ntina mingi mpo na kotonga ba systèmes informatiques. Na probabilité ya likolo, okokutana na bango na ba projets nionso.


Na lisolo oyo, nakoyebisa makambo oyo nakutanaki na yango na mwa mikakatano oyo nakutanaki na yango ntango nazalaki kosala baprogramɛ ya logiciel.

Soucis ya Cross-Cutting ezali nini?

Soki totali na kati ya Wikipedia, tokokuta ndimbola oyo elandi


Na développement logiciel orienté aspect, ba soucis transversaux ezali ba aspects ya programme oyo etali ba modules ebele, sans possibilité ya kozala encapsulé na moko na yango. Mbala mingi mitungisi oyo ekoki te kopɔla na bopeto uta na oyo etikali ya système ezala na bokeli pe bosaleli, pe ekoki kosala ete ezala bopanzani (kozongisa ba code), kokangama (ba dépendances ya tina kati ya ba systèmes), to nionso mibale.


Ezali kolimbola mingi nini ezali, kasi nalingi koyeisa yango mwa moke mpe koyeisa pete:

Soucis transversal ezali likanisi to eteni ya système/organisation oyo etali (to ‘ekataka’) biteni mosusu mingi.


Ba exemples ya malamu ya ba soucis ya boye ezali architecture ya système, logging, sécurité, gestion ya transaction, télémétrie, conception ya base de données mpe ezali na ba misusu ebele. Tokoyebisa makambo mingi na yango na nsima na lisolo oyo.


Na niveau ya code, ba soucis transversales esalemaka mingi mingi na kosalelaka ba techniques lokola Aspect-Oriented Programming (AOP) , esika ba soucis wana e modulariser na ba composantes separates oyo ekoki kosalelama na application mobimba. Yango esalaka ete logique ya mombongo ezala isolé na ba soucis wana, kosala que code ezala plus lisible mpe maintenable.

Bokeseni ya makambo

Ezali na ba façons ebele possibles ndenge nini ko classer ba aspects en segmentation na ba propriétés différentes lokola portée, taille, fonctionnalité, importance, cible, na misusu, mais na article oyo, nako salela classification ya portée simple. Na oyo, nalingi koloba esika nini aspect spécifique oyo etalisami ezala organisation mobimba, système moko particulier, to élément spécifique ya système wana.


Donc, nakokabola ba aspects na Macro na Micro .


Na aspect Macro nalingi koloba mingi mingi ba considérations oyo tolandaka pona système mobimba lokola architecture ya système oyo eponami na conception na yango (monolithique, microservices, architecture orientée service), stack ya technologie, structure ya organisation, etc. Ba aspects macro ezali surtout na lien na stratégique na niveau ya likolo bikateli oyo ezwamaka.


Entre temps, aspect ya Micro ezali beaucoup plus proche ya niveau ya code na développement. Na ndakisa, cadre nini esalelamaka mpo na kosala interaction na base de données, structure ya projet ya ba dossiers mpe ba classes, to même ba modèles spécifiques ya conception ya objet.


Atako classification oyo ezali idéal te, esalisaka na ko structurer compréhension ya ba problèmes possibles pe importance pe impact ya ba solutions oyo tosalelaka na yango.


Na lisolo oyo, likebi na ngai ya libosoliboso ekozala na makambo ya macro.

Ba Aspects ya Macro

Bobongisi ya ebongiseli

Tango nabandaki kaka koyekola architecture logicielle, natangaki ba articles ebele ya intéressant sur loi ya Conway mpe impact na yango na structure ya organisation. Surtout oyo . Donc, loi oyo elobi que


Ebongiseli nyonso oyo ekosala mayele ya système (oyo elimbolami na monene) ekobimisa bokeli oyo ebongiseli na yango ezali kopi ya ebongiseli ya bopanzi sango.


Nandimaka ntango nyonso ete likanisi oyo ezali mpenza ya mokili mobimba mpe ezali komonisa Mobeko ya Wolo.


Na sima nabandaki koyekola approche ya Domain-Driven Design (DDD) ya Eric Evans pona ba systèmes ya modélisation. Eric Evans azali kopesa ntina ya koyeba Bounded Context. Likanisi oyo esangisi kokabola modèle ya domaine complexe na biteni ya mike, oyo ekoki ko gérer mingi, moko na moko ezali na ensemble na yango ya boyebi oyo ezali na ndelo. Ndenge oyo esalisaka na bosololi malamu ya ekipi, mpamba te ekitisaka mposa ya boyebi mingi ya domaine mobimba mpe ekitisaka mbongwana ya contexte, na yango ekosala ete masolo ezala malamu. Kobongola contexte ezali likambo ya mabe mpe oyo esɛngaka biloko mingi koleka. Ata baordinatɛrɛ ezali kobunda na yango. Atako ezali mpasi mpo na kokokisa bozangi mobimba ya mbongwana ya contexte, nakanisi ete yango nde tosengeli kosala makasi mpo na yango.


Fantasy about keeping in mind a lot of bounded contexts

Soki tozongi na Mibeko ya Conway, namoni makambo mingi na yango.


Likambo ya liboso oyo nakutanaki na yango na Loi ya Conway, oyo ezali kopesa likanisi ete design ya système ezali mirrore ya structure ya organisation, ezali potentiel ya kosala ba Contextes Limites complexes mpe complètes. Complexité oyo ebimaka tango structure ya organisation ezali alignée te na ba frontières ya domaine, ememaka na ba Contextes Bounded oyo ezali fortement interdépendant mpe chargé na information. Ezali komema na mbala na mbala kobongola contexte mpo na équipe ya développement.


Likambo mosusu ezali ete terminologie ya organisation e fuite na niveau ya code. Tango ba structures ya organisation ebongwanaka, esengaka ba modifications ya codebase, ko consommer ba ressources ya valeur.


Na yango, kolanda Inverse Conway Maneuver esalisaka mpo na kotonga système mpe ebongiseli oyo elendisaka architecture logicielle oyo elingi. Kasi, ezali na ntina koloba ete approche oyo ekosala malamu mingi te na architecture mpe ba structures oyo esi esalemi mpo mbongwana na eteni oyo eumelaka, kasi ezali kosala exceptionnellement na ba startups mpo bazali noki mpo na kokotisa mbongwana nyonso.

Bole Monene ya Potopoto

Modèle oyo to “anti-modèle“ e diriger kotonga système sans architecture moko te. Ezali na mibeko te, bandelo te, mpe mayele moko te mpo na ndenge ya kopekisa makambo ya mindɔndɔmindɔndɔ oyo ezali kokola oyo ekoki kopengolama te. Complexité ezali ennemi oyo eleki somo na mobembo ya kotonga ba systèmes logiciels.


Entertaining illustration made by ChatGPT

Mpo na koboya kotonga lolenge ya système ya ndenge wana, tosengeli kolanda mibeko mpe mikakatano ya sikisiki.

Architecture ya système

Ezali na bandimbola ebele mpo na Architecture ya Logiciel. Nasepelaka na mingi na bango puisque ba couvrir ba aspects différents na yango. Kasi, mpo na kozala na likoki ya kokanisa na ntina na architecture, tosengeli na lolenge ya bomoto kosala mwa ndambo na yango na makanisi na biso. Mpe ezali likambo ya kokamwa koloba ete ndimbola yango ekoki kobongwana. Donc, au moins pona sikoyo, naza na description oyo elandi pona ngai moko.


Architecture logicielle ezali na ntina ya mikano mpe maponi oyo osalaka mikolo nyonso oyo ezali na bopusi na système oyo etongami.


Mpo na kozwa bikateli oyo osengeli kozala na yango na “saki” na yo mitinda mpe ndenge ya kosilisa mikakatano oyo ezali kobima, ezali mpe na ntina mingi koloba ete kososola masɛngami ezali fungola mpo na kotonga oyo mombongo esengeli na yango. Kasi, tango mosusu masengi ezalaka polele te to kutu elimbolami te, na likambo oyo, ezali malamu kozela mpo na kozwa bososoli mingi to kotia motema na mayele na yo mpe kotia motema na intuition na yo. Kasi ata ndenge nini, okoki te kozwa bikateli malamu soki ozali na mitinda mpe mitinda te oyo okoki kotyela motema. Wana nde esika nazali koya na ndimbola ya Style ya Architecture Logicielle.


Style ya Architecture ya Logiciel ezali ensemble ya ba principes na ba modèles oyo e désigner ndenge ya kotonga logiciel.


Ezali na ebele ya ba styles architecturaux différents oyo etali mingi ba côtés ndenge na ndenge ya architecture planifiée, mpe ko appliquer multiple na yango na mbala moko ezali situation normale.


Na ndakisa, na ndakisa:

  1. Architecture monolithique ya kosala

  2. Conception oyo etambwisami na domaine

  3. Basée na ba composants

  4. Ba microservices ya ba microservices

  5. Tuyau na ba filtres

  6. Etambwisami na makambo

  7. Micronoyau ya moke

  8. Oyo etali mosala


mpe bongo na bongo...


Ya solo, bazali na matomba mpe mabe na bango, kasi likambo ya ntina mingi oyo nayekoli ezali ete architecture ekoli mokemoke nzokande etali mikakatano ya solosolo. Kobanda na architecture monolithique ezali choix munene pona ko réduire ba complexités opérationnelles, très probablement architecture oyo eko correspondre na ba besoins na yo même après ko rejoindre étape ya Product-market Fit (PMI) ya kotonga produit. Na échelle, okoki kotalela kokende epai ya approche dirigée par événement mpe ba microservices mpo na kozua déploiement indépendant, environnement ya stack tech hétérogène, mpe architecture moins couplé (mpe moins transparent entre temps en raison ya nature ya approche conduite par événement mpe pub-sub soki ba adopter yango). Bopete mpe bokasi ezali penepene mpe ezali na bopusi monene moko na mosusu. Mbala mingi, ba architectures compliquées ezali na impact na vitesse ya développement ya ba fonctionnalités ya sika, ko soutenir pe ko maintenir oyo ezali, pe ko défier évolution naturelle ya système.


Kasi, mbala mingi ba systèmes complexes esengaka architecture complexe mpe complète, oyo ezali inévitable.


Na bosembo, oyo ezali likambo ya monene mingi mpenza, mpe ezali na makanisi mingi ya minene na ntina na lolenge ya kobongisa mpe kotonga ba systèmes mpo na évolution naturelle. Na kotalela makambo oyo nakutanaki na yango, nasali mayele oyo elandi:

  1. Presque toujours ebandi na style ya architecture monolithique puisque elongolaka mingi ya ba problèmes oyo ebimaka en raison ya nature ya ba systèmes distribués. Ezali mpe na sens kolanda monolith modulaire mpo na ko focuser na ba composants ya kotonga oyo ezali na ba frontières claires. Kosalela approche basée na composante ekokaki kosalisa bango ba communiquer bango na bango na kosalelaka ba événements, kasi kozala na ba appels directs (aka RPC) e simplifier makambo na ebandeli. Kasi, ezali na ntina mingi kolandela ba dépendances entre ba composants puisque soki composante A eyebi mingi na ntina ya composante B, peut-être, ezali na sens kosangisa yango na moko.
  2. Tango okomi pene na situation tango esengeli o échelle développement na système na yo, okoki ko considérer kolanda modèle ya Stangler pona kobimisa malembe malembe ba composants oyo esengeli ko déployer indépendamment to même échelle na ba exigences spécifiques.
  3. Sikoyo, soki ozali na vision claire ya avenir, oyo ezali mua chance incroyable, okokaki ko décider na architecture oyo olingi. Na moment oyo, okokaki ko décider kokende na architecture ya microservices en appliquant pe ba approches ya Orchestration na Chorégraphie, ko incorporer modèle CQRS pona ba opérations ya kokoma pe kotanga na échelle indépendante, to même ko décider kokangama na architecture monolithique soki ekokani na ba besoins na yo.


Ezali mpe na ntina mingi kososola mituya mpe ba metrics lokola DAU (Utilisateurs actifs ya mokolo na mokolo), MAU (Utilisateurs actifs ya sanza), RPC (Request par Second), mpe TPC (Transaction Par Second) lokola ekoki kosalisa yo osala ba choix mpo architecture mpo na 100 usagers actifs na 100 millions ya ba usagers actifs ekeseni.


Lokola note ya suka, nakoloba que architecture ezali na impact ya munene na succès ya produit. Architecture mal conçue pona ba produits esengeli na échelle, oyo très probablement ememaka na échec puisque ba clients bakozela te tango okosala échelle ya système, bakopona concurrent, yango wana esengeli tozala avant échelle potentielle. Atako nandimi ete tango mosusu ekokaki kozala approche maigre te, idée ezali ya kozala na système évolutif mais déjà échelonné te. Par contre, kozala na système moko très compliqué mpe déjà échelle na ba clients te to ba plans ya kozua mingi na bango ekosɛnga yo mbongo na entreprise na yo pamba.

Pona ebele ya technologie

Kopona stack ya technologie ezali pe décision ya niveau macro puisque e influencer emploi, ba perspectives ya évolution naturelle ya système, évolution, na performance ya système.


Oyo ezali liste ya makambo ya moboko mpo na kopona ebele ya tekiniki:

  • Esengeli ya projet mpe complexité. Na ndakisa, application web ya pete ekoki kotongama na cadre ya Blazor soki ba développeurs na yo bazali na expérience na yango, kasi mpo na manque ya maturer ya WebAssembly, kopona React na Typescript mpo na succès ya long terme ekoki kozala décision ya malamu koleka
  • Ba besoins ya évolutivité na performance. Soki ozali kokanisa kozwa motango monene ya trafic, kopona ASP.NET Core na esika ya Django ekoki kozala liponi ya mayele mpo na performance na yango ya likolo na kosimba ba demandes concurrentes. Kasi, ekateli yango etaleli bonene ya mobembo oyo ozali kozela. Soki osengeli ko gérer potentiellement ba milliards ya ba demandes na latence ya moke, présence ya Garbage Collection ekoki kozala défi.
  • Kozwa bato na mosala, Tango ya Bokoli, mpe Ntalo. Mbala mingi, yango nde makambo oyo tosengeli komibanzabanza mpo na yango. Tango ya kosala Zando, Coût ya entretien, mpe stabilité ya Hiring ezo diriger ba besoins ya entreprise na yo sans ba obstacles.
  • Expertise ya équipe na ba ressources. Ensemble ya makoki ya équipe na yo ya développement ezali likambo ya motuya mingi. Ezali généralement efficace mingi kosalela ba technologies oyo équipe na yo esi eyebi longola se soki ezali na raison makasi ya ko investir na koyekola stack ya sika.
  • Kokóma mokóló. Lisanga ya makasi mpe écosystème ya bomengo ya ba bibliothèques mpe bisaleli ekoki ko faciliter mingi processus ya développement. Mbala mingi, mayele ya sika oyo eyebani mingi ezalaka na lisungi ya malamu koleka ya bato ya mboka, oyo ekoki kozala na motuya mingi mpo na kosilisa mikakatano mpe koluka biloko. Na yango, okokaki kobomba biloko mpe kotya likebi mingimingi na biloko oyo ozali kobimisa.
  • Bobateli mpe Lisungi ya ntango molai. Talá ndenge mayele yango ekoki kosalema na boumeli ya ntango molai. Ba technologies oyo ezwamaka mingi mpe esungami ezali na likoki mingi te ya kokoma ya kala mpe mingi mingi ezwamaka mbala na mbala ba mises à jour mpe kobongisama.


Ndenge nini kozala na ba piles ya technologie ebele ekoki kozala na bopusi na bokoli ya mombongo?

Na lolenge moko, kokotisa stack moko lisusu ekoki ko échelle ya emploi na yo, kasi na ngambo mosusu, ememaka ba frais ya entretien ya likolo puisque osengeli ko soutenir ba stacks nionso mibale. Donc, ndenge nalobaki liboso, na point de vue na ngai, kaka besoin supplémentaire nde esengeli kozala argument pona ko incorporer ba piles ya technologie mingi.


Kasi nini ezali na ntina na etinda ya kopona esaleli oyo eleki malamu mpo na mokakatano moko ya sikisiki?

Tango mosusu ozali na nzela mosusu te bobele komema bisaleli ya sika mpo na kosilisa mokakatano moko ya sikisiki na kotalela makanisi ndenge moko oyo tolobeli liboso, na makambo ya ndenge wana, ezali na ntina kopona solution oyo eleki malamu.


Kosala ba systèmes sans couplage ya likolo na technologie moko spécifique ekoki kozala défi. Atako bongo, ezali malamu kosala makasi mpo na kozala na ezalela oyo ebongiseli yango ekangami makasi te na mayele ya sika, mpe ekokufa te soki lobi, cadre to esaleli moko ya sikisiki ekómi na likama to kutu ekómi lisusu te.


Likambo mosusu ya ntina oyo esengeli kotalela ezali na boyokani na ba dépendances ya logiciel ya source ouverte mpe ya propriétaire. Logiciel propriétaire epesaka yo flexibilité moke mpe possibilité ya kozala personnalisé. Atako bongo, likambo oyo ezali likama mingi ezali kokangama ya motɛki, epai okómaka kolanda biloko ya motɛki, ntalo, mibeko mpe plan ya nzela. Yango ekoki kozala likama soki motɛki abongoli nzela, amatisi ntalo, to atiki biloko yango. Logiciel ya source ouverte ekitisaka risque oyo, lokola entite moko nde e contrôler yango te. Kolongola point moko ya échec na ba niveaux nionso ezali fonction ya kotonga ba systèmes ya kozala na confiance pona bokoli.

Point moko ya échec (SPOF) .

Point moko ya panne (SPOF) ezali kolobela eteni nyonso ya système oyo, soki elongi te, ekosala ete système mobimba etika kosala. Kolongola ba SPOF na ba niveau nionso ezali na tina mingi pona système nionso oyo esengaka disponibilité ya likolo. Nyonso, bakisa boyebi, basali, biloko ya système, ba fournisseurs ya cloud, mpe ba câbles ya internet, ekoki kozanga.


Ezali na ba techniques ya base ebele oyo tokokaki kosalela pona ko éliminer ba points unique ya échec:

  1. Kolongolama ya mosala. Kosalela redundance mpo na ba composantes critiques. Yango elingi koloba kozala na ba composants ya sauvegarde oyo ekoki kozua esika soki composante primaire elongi te. Redundance ekoki kosalelama na ba couches ndenge na ndenge ya système, na kati na yango matériel (serveurs, disques), réseautage (liens, commutateurs), mpe logiciel (ba bases de données, ba serveurs ya application). Soki ozali ko héberger nionso na Cloud Provider moko mpe kutu ozali na ba sauvegarde kuna, kanisá kotonga sauvegarde ya kobakisa mbala na mbala na mosusu mpo na kokitisa ntalo na yo oyo ebungaki soki likama esalemi.
  2. Ba Centres ya Ba Données. Kabola système na yo na bisika ebele ya physique, lokola ba centres ya ba données to ba régions ya cloud. Ndenge oyo ebatelaka système na yo na ba pannes spécifiques ya esika lokola ba panne ya courant to makama ya nature.
  3. Failover na likambo yango. Salelá ndenge ya kobongola makambo mpo na biloko na yo nyonso (DNS, CDN, Balanceurs de charge, Kubernetes, API Gateways, mpe Bases de données). Lokola makambo ekoki kobima na mbalakaka, ezali na ntina mingi kozala na plan ya sauvegarde mpo na ko remplacer composant nionso na clone na yango ndenge esengeli noki.
  4. Ba services ya disponibilité ya likolo. Sala que ba services na yo etongama po ezala évolutivement horizontalement pe ezala très disponible banda ebandeli na kolanda ba principes oyo elandi:
    • Pratiquer sans état ya service mpe koboya kobomba ba sessions ya usager na ba caches ya mémoire. Na esika na yango, salelá système ya cache oyo ekabolami, lokola Redis.
    • Bokima kotya motema na ordre chronologique ya consommation ya message tango ozali ko développer logique.
    • Minimiser ba changements ya kobuka pona kopekisa ko déranger ba consommateurs ya API. Soki likoki ezali, pona mbongwana oyo ekokani na nsima. Lisusu, talela ntalo uta ntango mosusu, kosalela mbongwana ya kobuka ekoki kozala na ntalo mingi.
    • Kokotisa exécution ya migration na pipeline ya déploiement.
    • Bosala stratégie ya ko traité ba demandes concurrentes.
    • Kosalela bokutani ya misala, bolandi, mpe bokati banzete mpo na kotombola bondimi mpe botali.
    • Développer logique d’affaires po ozala idempotent, kondima que ba échecs ya réseau ezali inévitable.
  5. Botali ya dépendance. Tala mbala na mbala mpe kokitisa ba dépendances ya libanda. Dépendance moko moko ya libanda ekoki kokotisa ba SPOF oyo ekoki kozala, yango wana ezali na tina ya kososola pe kokitisa makama oyo.
  6. Kokabola boyebi mbala na mbala. Kobosana ata moke te ntina ya kopalanganisa boyebi na kati ya ebongiseli na yo. Bato bakoki kozala oyo bakoki kokanisa te, mpe kotya motema na moto moko ezali likama. Lendisá bato ya ekipi bákɔtisa boyebi na bango na nimero na nzela ya mikanda. Kasi, kobosana te kolekisa ndelo na mikanda. Salelá bisaleli ndenge na ndenge ya AI mpo na kosala ete mosala yango ezala pɛtɛɛ.

Maloba ya nsuka

Na lisolo oyo, tolobelaki makambo mingi ya ntina ya Macro mpe ndenge nini tokoki kosala na complexité na yango.


Matɔndi mingi mpo na kotánga! Tokokutana mbala ya sima!