Arhitektura, rojena za oblak
V krogih razvijalcev programske opreme se veliko govori o mikrostoritvah in arhitekturi, ukrojeni za oblačna računalniška okolja. Čeprav je tehnologija v bistvu stara že skoraj desetletje, šele zdaj stopa v ospredje – tudi z močnim slovenskim pridihom. Kaj se je spremenilo?
Razvoj programske opreme nikoli ne počiva. A še do nedavna so skoraj vse aplikacije temeljile na t. i. monolitni arhitekturi, ki ima zelo dolgo brado. Na voljo je že od konca 90. let prejšnjega stoletja. Programerji so aplikacije razvijali tako, da so vsebovale vse gradnike, potrebne za delovanje, tekle pa so na namenskih strežnikih. Javanske aplikacije so potrebovale aplikacijske strežnike, aplikacije v okolju .NET pa so zahtevale Microsoftov strežnik IIS. Kdor je želel spremeniti le delček aplikacije ali jo nadgraditi, je moral posodobiti celotno aplikacijo. Sčasoma je postalo jasno, da ima monolitna narava aplikacij precej primanjkljajev – njihovo izvajanje je lahko pospešila le večja zmogljivost strojne opreme, razširljivost je bila omejena. V času, ko je programska oprema začela predstavljati konkurenčno prednost podjetij, so se monolitne aplikacije izkazale za coklo razvoja. Podjetja, ki so stopničasto gradila svoje programsko okolje, so sčasoma začela porabljati več virov za upravljanje in vzdrževanje infrastrukture, ki je podpirala te poslovne aplikacije, kot pa za sam razvoj novih aplikacij.
Nujnost razbijanja monolitnosti
S prihodom rešitve Docker, ki je omogočila pakiranje posameznih gradnikov aplikacije v kontejnerje oziroma vsebnike, se je področje razvoja aplikacij močno spremenilo. Programerji so začeli monolitne aplikacije razbijati na ločene dele, poimenovane mikrostoritve. Zamisel je preprosta in odlično deluje v praksi – aplikacije so lahko sestavljene podobno kot kocke Lego – iz različnih gradnikov in povezanih storitev, ki se lahko posodabljajo in razvijajo ločeno, delujejo pa na infrastrukturi vsebnikov.
Platforme vsebnikov so za razliko od monolitnih rešitev povsem neodvisne od nižje ležeče infrastrukture (beri: strojne opreme). Zato se podjetja, ki tako programsko opremo uporabljajo, lažje odločijo za oblačne rešitve, saj jim omogočajo različne scenarije rabe programske opreme – predvsem kot storitev iz oblaka. Stvar gre seveda še precej dlje, razvoj oblačnih tehnologij in mikrostoritev je že tako napredoval, da si lahko podjetja danes omislijo celo posamezne funkcije kot storitev.
Hitra rast priljubljenosti rabe mikrostoritev med programerji je razumljiva, saj lahko rešijo vrsto aktualnih izzivov IT, predvsem tiste, ki se nanašajo na hitrost delovanja aplikacij in njihovo skalabilnost, pohitri pa se tudi sam razvoj. Arhitekturni slog, ki uporablja mikrostoritve, prej kompleksne aplikacije razbije na manjše dele (aplikacije in procese), ki med seboj komunicirajo ob pomoči vtičnikov API in znajo delovati neodvisno drug od drugega.
Manko ustreznih razvojnih orodij in ogrodij
Mikrostoritve so razvijalci programske opreme sprva razvijali v različnih programskih jezikih, pri čemer so se spoprijeli s (pod)povprečnimi orodji. Še največja težava je bila v tem, da ustreznega ogrodja za razvoj v najbolj razširjenem programskem jeziku java ni bilo na voljo, in to je vsaj začasno zavrlo pohod mikrostoritev.
Zamisel, da bi razvili rešitev za težavo, s katero se je spoprijemala globalna skupnost razvijalcev programske opreme, je dobilo tudi slovensko podjetje Sunesis. »Koncept arhitekture mikrostoritev se je rodil okoli leta 2011. Ko so v Netflixu in drugih uglednih programskih hišah začeli mikrostoritve opredeljevati kot nekakšno podrobno razdelano storitveno usmerjeno arhitekturo (SOA), smo jim več pozornosti namenili tudi v naši ekipi. Ker smo imeli že obilo praktičnih izkušenj s SOA, smo se odločili vložiti več časa in energije v obvladovanje mikrostoritev, vtičnikov API in drugih s to arhitekturo povezanih tehnologij,« se začetkov spominja prof. dr. Matjaž B. Jurič, ki razvoj mentorira od samih začetkov.
Slovensko ogrodje za mikrostoritve
V začetku leta 2014 so razvili prvo ogrodje za razvoj mikrostoritev v javi (na platformah Java EE in SE) in ga poimenovali Kumuluz. To je poudarjalo, da gre za arhitekturo, ki je načrtno izdelana za izvajanje v oblačnih okoljih. Njihovo pionirsko delo so hitro prepoznali strokovnjaki, jeseni 2014 je podjetje Sunesis že prejelo nagrado EuroCloud za najbolj inovativno oblačno storitev. Ko so leto pozneje dodali še rešitev za upravljanje vtičnikov API, je njihovo delo že postalo »vroča roba« v industriji razvoja programske opreme. Oktobra 2015 je rešitev KumuluzEE prejela prestižno nagrado za inovacije v javanskem svetu Java Duke’s Choice Award (nekakšnega oskarja v programerskem svetu) in se pridružila rešitvam, kot so Hadoop, Apache in Jenkins, ki jih danes pozna praktično vsak razvijalec.
»KumuluzEE resnično prinaša arhitekturo mikrostoritev v okolje Java EE. Podpira namreč vse tehnologije, kot so Maven, Fat JAR, Docker, API in spletni vsebniki, to pa razvijalcem omogoča razvoj aplikacij za katerikoli oblak. Če programsko opremo razvijate z Java EE, njihovo selitev v oblak opravite ob pomoči ogrodja KumuluzEE in mikrostoritev,« je navdušenje nad slovensko rešitvijo izrazil Arun Gupta, član odbora Cloud Native Computing Foundation in odgovorni tehnolog za odprto kodo v Amazon Web Services.
V naslednjih mesecih je rešitev dosegla nov mejnik. Ogrodje KumuluzEE je namreč postalo del družine MicroProfile, ki določa standarde na področju mikrostoritev v javi. S tem je KumuluzEE pristal v družbi multinacionalk, kot so IBM, Oracle in RedHat, in predstavlja uradno certificirano možnost za razvoj mikrostoritev v javi. Ogrodje, ki je odprtokodno in brezplačno za uporabo, v celoti temelji na Javi EE, kar pomeni, da je z njim ustvarjena programska koda v celoti prenosljiva med oblačnimi okolji.
Kritična masa razvijalcev je dosežena
Odločitev za nudenje ogrodja KumuluzEE v obliki odprte kode je bila zavedna, saj je želelo podjetje Sunesis na svojo stran pridobiti čim več uporabnikov. To mu je tudi uspelo, saj je omenjeno ogrodje s spletne strani podjetja preneslo že več kot 100.000 razvijalcev iz več kot sto držav. T. i. kritična masa razvijalcev je s tem dosežena, slovenska arhitekturna rešitev za izdelavo programske opreme za oblačna okolja pa se postavlja ob rob velikanom industrije IT.
»Z ogrodjem za mikrostoritve KumuluzEE in rešitvami za upravljanje APIjev smo in še vedno orjemo ledino na področju mikrostoritev v javi. Kumuluz je v svetovnem merilu prvo ogrodje, ki je ponudilo podporo odkrivanju storitev, konceptu, ki je ključnega pomena, ko začnemo mikrostoritve izvajati v okolju Kubernetes. Slednje omogočamo že dve leti, torej smo že zdavnaj v položaju, ki ga druga ogrodja želijo doseči,« je dodal prof. dr. Jurič.
Ogrodje KumuluzEE je zasnovano popolnoma modularno, kar pomeni, da so mikrostoritve, razvite v tem ogrodju, resnično majhne. To jim omogoča hiter zagon in nizko porabo pomnilnika. Neodvisni preizkusi kažejo, da v primerjavi z drugimi javanskimi ogrodji slovenska rešitev porabi vsaj 3-krat manj pomnilnika in se 2-krat hitreje zažene. Oboje je seveda izjemnega pomena za aplikacije, ki zahtevajo visoko razpoložljivost.
Narekovanje tempa razvoja
Ekipa podjetja Sunesis želi obdržati vodstvo, ki ga je pridobila v preteklih letih. KumulzEE poleg jave že podpira tudi druge programske jezike, kot sta node.js (javascript) in go, v prihodnosti pa bodo podprti še drugi jeziki. Razvijalci programske opreme so navdušeni tudi nad podporo najsodobnejšim tehnologijam komunikacije med mikrostoritvami, ki obsegajo GraphQL, gRPC in pretočne dogodke (Kafka), na voljo je podpora tehnologijam veriženja blokov (blockchain). Medtem pa se Sunesis že ukvarja z naslednjim razvojnim korakom, decentraliziranim izvajanjem mikrostoritev in APIjev, ki bo bržkone postalo priljubljeno šele čez nekaj let.
V zadnjem letu je slovensko podjetje pripravilo tudi številne predizdelane vtičnike API, ki temeljijo na mikrostoritvah. Ti predstavljajo osnovne gradnike digitalnih rešitev in podjetjem omogočajo, da pomembno pohitrijo in pospešijo razvoj lastnih digitalnih rešitev in aplikacij. Pristop, ki je še včeraj veljal za znanstveno fantastiko (beri: sestavljanje aplikacij po vzoru kock Lego), je danes dosegljiva realnost.
Dokazati se je treba tudi v praksi
Aplikacije, ki temeljijo na platformi Kumuluz, se uporabljajo globalno, največ uporabnikov prihaja iz Nemčije, ZDA, Brazilije, Francije in Anglije. Rešitve Kumuluz uporabljajo tudi številna domača podjetja in organizacije, med drugim Abanka, Adriatic Slovenica, Akrapovič, cyberGRID, Petrol, SRC in druga.
»Petrol uporablja Kumuluz kot pomemben sestavni del za svoje okolje mikrostoritev, ki poganja inovativne spletne in mobilne aplikacije za digitalno okolje, kot je na primer rešitev Na poti. Ta mikrostoritvena platforma zagotavlja vrsto poslovnih storitev, kot so naročanje, plačevanje, izstavljanje računa, obveščanje ter vrsto drugih funkcij za vse informacijske rešitve, ki jih uporabljajo naše stranke (mobilne aplikacije, spletna trgovina, samopostrežni portal, itd.). Z razvojem mikrostoritvene platforme na osnovi rešitve Kumuluz smo pospešili razvoj programske opreme, standardizirali vmesnike do ključnih notranjih sistemov (ERP, CRM) in skrajšali čas, potreben za vstop na trg. Kumuluz je postal del naše platforme za digitalno preobrazbo,« je praktično rabo slovenskega izdelka komentiral Pavel Škerlj, direktor informatike v družbi Petrol.
Mikrostoritve so torej sodobna programerska stvarnost. Razvijalci se ne sprašujejo več, čemu bi jih uporabljali, temveč kdaj in s katerimi o(g)rodji. Zavedajo se namreč, da se poti mimo mikrostoritev in APIjev ter arhitekturi, ukrojeni za oblačna računalniška okolja, ne bodo mogli izogniti.