Arhitektura mikrostoritev
Sodoben pristop k razvoju programskih sistemov.
Ko aplikacije postanejo preobsežne, je čas za prehod na mikrostoritve.
Predstavljajte si, da gradite hišo. Običajno so sobe, napeljava in vse ostalo zgrajene znotraj štirih sten hiše, kar pomeni, da je hiša monolitna struktura. Kaj pa, če bi želeli dodati novo spalnico? Takrat bi morali podreti celotno hišo in jo na novo zgraditi, da bi vanjo umestili novo sobo.
Tu nastopi arhitektura mikrostoritev, kjer je hiša ali v našem primeru storitev zgrajena iz neke vrste lego kock. Vsak kos predstavlja posamezno mikrostoritev, ki opravlja določeno funkcijo in omogoča neodvisen razvoj, nameščanje in razširljivost. Tako kot dodajanje novih kock v hišo, tudi dodajanje nove mikrostoritve v arhitekturo mikrostoritev ne zahteva zaustavitve celotnega sistema, zato je idealna za uporabo v sodobnih in razširljivih sistemih programske opreme. V tem članku bomo podrobneje predstavili arhitekturo mikrostoritev.
Primer arhitekture mikrostoritev
Tokrat bo naš hipotetični projekt spletno mesto za e-trgovino. Da bi spletno mesto delovalo, morajo spletne in mobilne aplikacije komunicirati z različnimi mikrostoritvami, ki spletnemu mestu posredujejo določene informacije. Vsaka storitev je povezana s svojo podatkovno zbirko, ki je neodvisna od drugih in deluje kot samostojen element. Poglejmo si nekaj mikrostoritev, ki bi jih lahko uporabljala naša spletna stran za e-trgovino.
Ena od storitev komunicira s podatkovno zbirko uporabniških računov in zagotavlja informacije o uporabnikih, kot so podatki o naslovu ali plačilih. Storitev za zaloge se lahko uporablja za preverjanje, kateri izdelki so na voljo v skladišču in jih lahko uporabniki kupijo. Plačilna storitev skrbi za postopek plačila blaga s strani uporabnikov, storitev pošiljanja pa razporedi pakiranje in dostavo. Vsaka storitev deluje samostojno, ekipe pa lahko razvijajo in preizkušajo nove rešitve neodvisno od drugih mikrostoritev, kar zmanjšuje tveganje za nastanek napak.
Katere so ključne značilnosti arhitekture mikrostoritev?
Storitve z več komponentami: sestavljajo jo posamezne, ohlapno povezane komponente storitev, ki jih je mogoče razvijati, uvajati in spreminjati neodvisno, ne da bi to vplivalo na preostali del sistema.
Visoka stopnja vzdrževanja in testiranja: omogoča hitro uvajanje novih funkcij ter enostavno posodabljanje kode, izločanje napak in hroščev ter preklic sprememb, kadar je to potrebno.
Majhne ekipe: arhitektura mikrostoritev spodbuja sprejetje agilnih praks, ki majhnim ekipam omogočajo samostojno delo in hitro premikanje, kar skrajša razvojne cikle.
Organiziranost na podlagi delovnih zmožnosti: Storitve so organizirane okoli delovnih zmožnosti, ekipe pa so multifunkcijske in imajo celotno paleto znanj in spretnosti, potrebnih za razvoj.
Avtomatizirana infrastruktura: Ekipe uporabljajo CI/CD za avtomatizacijo infrastrukture, tako da je mogoče vsako storitev zgraditi in uvesti samostojno, ne da bi to vplivalo na druge enote.
Gradnjo mikrostoritev iz monolitnih storitev je treba ločiti na dva dela. Prvi je tehnični, drugi pa organizacijski. V tehničnem delu moramo monolitno storitev razstaviti na mikrostoritve, kar je že samo po sebi zahtevno, vendar pa se tveganje za neuspeh zmanjšuje z neprekinjenim izvajanjem in stalnim spremljanjem s strani ekipe. To nas pripelje do drugega, organizacijskega dela, ki zahteva razdelitev ekipe na manjše ekipe, osredotočene na razvoj in delovanje njihovega dela aplikacije.
Mikrostoritev ali ne?
Čeprav je to morda zapletena naloga, še nikoli ni bil boljši čas za raziskovanje novega vznemirljivega pristopa k razvoju programske opreme, ki bo podjetjem, ki še vedno uporabljajo monolitno arhitekturo, prinesel številne prednosti.
Mikrostoritve z razdelitvijo aplikacij na manjše, avtonomne komponente ekipam omogočajo učinkovitejše in fleksibilnejše delo. Mikrostoritve omogočajo organizacijam, da neodvisno razvijajo, nameščajo in vzdržujejo posamezne storitve. To omogoča hitrejše uvajanje novih funkcij na trg in večjo prilagodljivost pri odzivanju na spreminjajoče se poslovne potrebe.