CROZ: udahnuli smo novi život preko 20 godina starom IT-jevskom “monolitu”

U sklopu priprema za konferenciju .debug na ovim ćemo stranicama objavljivati razne studije slučaja i priče o uspješnim developerskim projektima naših partnera. Ovoga puta red je došao na CROZ, čija je ekipa nedavno dovršila projekt “razbijanja monolita” i prebacivanja jednog njegovog dijela u 21. stoljeće – odnosno u cloud. Kako su softver pisan u neka softverski davna vremena osuvremenili pojasnili su i na svojem blogu. Nas je priča zainteresirala pa smo o njoj porazgovarali s Ivanom Krnićem, šefom software development pogona CROZ-a.

Kako je izgledao zadatak koji ste dobili od klijenta?

Naš zadatak je bio modernizacija postojećeg, 20 godina starog monolitnog sustava izgrađenog na tehnologijama koje su se u to doba smatrale špicom onoga što IT industrija može ponuditi ekstra-velikim, strogo reguliranim organizacijama koje dodatno barataju i velikom količinom financijskih podataka.

Nisu te (nazovimo ih “stare”) tehnologije u međuvremenu postale neupotrebljive za svoju izvornu svrhu upravljanja podacima niti nesigurne. Dapače, mnogi bi se složili da ni 20 godina kasnije ne postoje sustavi koji ekstremno velike količine podataka mogu obraditi tako brzo, točno i sigurno. No činjenica je također da se paradigma izgradnje modernih sustava promijenila i da je danas fokus na pristupačnom korisničkom sučelju, otvorenosti podataka, integriranju s drugim sustavima i izvršavanju u cloud okruženju. A sve su to značajke o kojima je malotko razmišljao prije 20 godina pa samim time niti “stare” tehnologije ne pomažu u njihovoj implementaciji.

Modernizacija se stoga nije sastojala od potpune zamjene postojećeg sustava novim – tako nešto bi bilo preskupo, prerizično i vrlo dugotrajno. Naprotiv, pristupilo se uvođenju novih komponenti sustava temeljenih na novim tehnologijama koje pomažu izgraditi bolje korisničko iskustvo i donose standardne mehanizme razmjene podataka s drugim sustavima.

Uvođenjem novih komponenti, postojeći je sustav funkcionalno i tehnički proširen točno tamo gdje je to bilo potrebno čime su zaštićena sva dotadašnja ulaganja u hardversku i softversku podršku. To što je sustav star ne znači da je loš. U pravilu stari sustavi utjelovljuju godine i godine iskustva, prilagođavanja i optimizacija te bi bilo neodgovorno samo ih odbaciti. Sjetimo se filma “Space Cowboys” – NASA bi svoju misiju ostvarila puno teže bez znanja i iskustva Clinta Eastwooda, Donalda Sutherlanda i ostalih 🙂

Koji su bili najveći izazovi postavljeni pred vaš tim developera?

U ovako složenim projektima rijetko kad postoji jedan veliki izazov. Uvijek se tu radi o nekoliko izazova koje treba istovremeno kontrolirati kako se ne bi stvorili uvjeti za “savršenu oluju”.

Od tehničkih izazova izdvojio bih uspostavljanje nove aplikativne mikroservisne arhitekture temeljene na konceptu “event sourcinga”, uspostavljanje privatne cloud okoline u kojoj se novo razvijene mikroservisne komponente izvršavaju te potpunu automatizaciju procesa izgradnje i instalacije mikroservisnih komponenti u izvršnu okolinu.

Složeni projekti uvijek donose i organizacijske izazove jer je u realizaciju uključeno puno timova. U našem slučaju radilo se o 6 timova unutar kojih je radila većina od gotovo 50 ljudi angažiranih na projektu u različitim rolama. Dodatnu dimenziju donijela je i suradnja s vanjskim tehnološkim partnerima u realizaciji. Komunikacija među toliko ljudi i održavanje transparentnosti statusa i napretka je zaista bio velik izazov.

Ne mogu u ovom trenu ne osvrnuti se na vlastitu konstataciju kako stari sustavi utjelovljuju godine i godine iskustva, prilagođavanja i optimizacija. Koliko god je to prednost, ponekad je to i mana jer dobar dio takvih optimizacijskih minijatura ostane nedokumentiran pa je potrebno dosta detektivskog posla kako bi se utvrdilo kako točno postojeći sustav funkcionira ispod haube.

Odabrali ste, kažete, riskantan put “razbijanja monolita”. Koje su vam tehnologije najviše pomogle u prebacivanju u cloud?

Prilikom “razbijanja monolita” koristili smo se provjerenom industrijskom strategijom sakrivanja monolita iza nove, lijepe i funkcionalne fasade. Svi vanjski sustavi koji su do tog trenutka komunicirali s monolitom počeli su jednostavno komunicirati s fasadom. Fasada nam omogućuje radikalne, ali kontrolirane strukturalne promjene na monolitu bez straha da će to imati utjecaja na sustave koji koriste monolit. Vrlo je to slično građevinskim radovima na zgradi kad prolaznici uvijek vide lijepu fasadu, a pojma nemaju da netko unutra kompletno mijenja vodovodne cijevi.

Za izgradnju fasade iskoristili smo API Management platformu IBM API Connect, a novu fasadu smo s postojećim servisima monolita spojili korištenjem integracijske platforme IBM Integration Bus. Nove mikroservisne komponente izgradili smo korištenjem Axon Frameworka koji je danas lider u implementaciji sustava temeljenih na konceptu “event sourcinga”. Sve mikroservisne komponente zapakirali smo u kontejnere i “zavrtili” na platformi Red Hat OpenShift što je u biti Red Hatova implementacija platforme Kubernetes.

Izdvojite nam za kraj glavne pouke ovog projekta. Što ste naučili, a da može poslužiti i drugima?

Gledajući izazove koje smo prošli, mislim da se još jednom pokazalo kako su organizacijski izazovi u usporedbi s tehničkim puno opasniji, ali istovremeno njihovim rješavanjem dobivamo i puno veću vrijednost. Tehnički izazovi se uvijek nekako riješe ako postoje transparentnost, komunikacija i zajedničko razumijevanje konačnog cilja. Ali da bi se do toga došlo, potrebno je riješiti gomilu organizacijskih izazova.

Jedna od naših vrijednih lekcija je da nikad nije prerano uključiti sve zainteresirane strane u definiranje procesa izgradnje, isporuke i instalacije komponenti sustava u izvršno okruženje. DevOps zajednica ima mantru “Shift left!” koja organizacijama sugerira da što više aspekata procesa razvoja i isporuke softvera pomaknu “ulijevo” u procesu, tj. pozabave se njima što je ranije moguće, idealno odmah na početku projekta. Odličan je savjet spojiti razvojne inženjere, sistemaše, sigurnosne stručnjake, testere i ostale role čim ranije kako bi se razmotrili svi njihovi zahtjevi te dizajnirala optimalna arhitektura sustava i optimalni proces pretvaranja programskog koda u sustav koji donosi vrijednost korisniku.

Razvoj softverskih sustava je izrazito socio-tehnološka aktivnost. Podržavanjem sociološke komponente uvelike povećavamo šanse za konačni uspjeh projekta.


Više o svemu saznajte na .debug konferenciji 12. i 13. prosinca 2019.