Professional Documents
Culture Documents
Arhitektura Mikroservisa
Arhitektura Mikroservisa
Learn the Microservices overall Architecture, Building Blocks, Key Advantages, Challenges and
Industry Case Studies
udemy.com
Complex Release Cycles
Bilo koja aplikacija je dobra dok se nešto ne promeni. Dolaze novi zahtevi, nove forme sa zahtevima od strane korisnika,
nove tehnologije. Svi znamo da sve softverske aplikacije je potrebno da budu ažurirane na jedan ili drugi način. Glavno
pitanje ili glavni problem je vezan za vremenski interval između ovih verzija (ažurianja).
Možete zamisliti da kod koncept deljenog koda (shared code) i deljenih podataka (shared data) koji se koristi u monolitnoj
aplikaciji kreira čvrstu povezanost (tightly coupled) između modula, tako da nadolazeće softverske verzije će biti za celu
aplikaciju. Ok, svi moduli su zajedno jedan blok, kao jedan monolit.
Ukoliko iskoristimo naš sistem za prodaju karata za letove kao primer, zamislimo da se zahteva nova karakteristika (feature)
u specifičnom modulu i razvojni tim koji je brzo kreirao pomenutu karakteristiku, za par dana, ali ovaj modul je mođusobno
povezan sa drugim modulima, npr. sve komponente koriste istu bazu podataka i ukoliko izmenimo strukturu baze podataka
ili metapodatke, to može da utiče na veći broj komponenti. U tom scenariju aplikacija treba da bude testirana sa kraja na
kraj (end-to-end testing), da bi se videlo da li sve radi i funkcioniše kako se očekuje, čak iako je u pitanju veoma mala
karakteristika (feature). Takođe potrebno je da ponovno deploy-ujemo (redeploy) celu aplikaciju u produkciono okruženje
što znači da će biti više vremena kada sisitem ne radi (dowtime), veći broj nadogradnji (upgrade) i veći broj pritužbi
(complaints) od krajnjih korisnika kada sistem nije dostupan i više rizika da se nešto razvali tokom sisitemske nadogradnje.
Ukoliko pitate bilo kojeg sistema administratora, to je velika glavobolja da se ažurira veliki složen softver. To je razlog zašto
buduća verzija softvera za takav nivo aplikacije koji odgovara preduzeću (enterprise) će biti jednom u dužem vremenskom
periodu ili možda dva puta godišnje, jer su godišnji ciklusi u verziji softvera povezani zajedno jer ima smisla da se pakuju
male promene, u mnogo karakteristika, u većem broju modula zajedno i da se sačeka sledeči veliki softverski ciklus za
ažuriranje (release cycle).
Ključni nedostatak jeste da će velika monolitna aplikacija biti prepreka čestim deployment-ima. Svaki sledeći deployment
će biti kompleksan da se zakaže (schedule), složen za izvođenje i sa većim rizikom na uticanje na taj sisitem, koji će na
kraju obeshrabriti ljude da rade česta ažuriranja, au softverskom biznisu česta ažuriranja (update-ovi) su moranje, jer se
stvari menjaju veoma brzo. Kompanije bi htele da korist koncept neprekidne isporuke (continuous delivery) softverskih
ažuriranja. Takav pristup u kome se sprovode ciklusi od jednogodišnjeg ciklusa isporuke softvera su manje efektivni za
mnoge kompanije i organizacije koje bi htele da imaju više softverskih alata i ako je neka važna karakteristika potrebna
sada zašto čekati jednu godinu radi te karakteristike.
Kompanije bi želele da koriste koncept kontinualne isporuke (continous delivery) softverskih ažurianja i monolitne aplikacije
nisu dizajnirane da mogu da podnesu takva česta ažuriranja.
Summary
Kao brzo ponavljanje želim da zapamtite da monolitne arhitekture su i dalje veoma korisne metode razvoja softvera za
small-medium size software project. I mnogi projekti će koristiti ovaj razvojni stil u budućnosti na mnogim use-case-ovima.
Kako god, postoje glavni nedostavi ovakvog pristupa, kada pričamo o velikim i kompleksnim aplikacijama koje bi trebalo da
se menjaju češće i da su sposobne da efektivno koriste cloud okruženje.