Serverless computing (SC) nije samo hype termin često spominjani u IT-u. Donosi sa sobom velike promjene u deployment i development poljima, isto tako i u business svijetu. Od otvaranja potencijala korištenjem globalnih computing resursa do ekstenzibilnosti i fleksibilnosti, njegova primjena je široka i izgledno bez granica. SC omogućuje veću brzinu i responzivnost razvoja software-a, pritom otvarajući vrata lakoj implementaciji slučajeva koji do sada nisu ni podržani. Za razliku od nekih drugih tehnologija u IT-u, SC donosi konkretna poboljšanja i više je od samo prolaznog trenda. Kako interes ljudi uključenih u njegovu priču raste, tako raste njegov značaj.
Serverless computing ukratko
SC predstavlja arhitekturu u kojoj je Serverless computing provider nositelj odgovornosti za postavljanje okoline potrebne masovnom (large-scale) izvođenju aplikacija. Tu je uključena odgovornost providera da upravlja i održava (management and maintenance) infrastrukturu i brine o njenom oporavku od grešaka. Pošto SC stoji kao sloj apstrakcije nad hardware-om koji izvodi neki program, developeri, devops stručnjaci ili organizacije koje se bave deployment-om aplikacije, ne moraju brinuti o serverima koji vrte njihove aplikacije niti se baviti upravljanjem tih servera. Nama se kao developerima ta osobina SC-a osobito sviđa. Ali ipak, glavni poslovni argument za migraciju sustava na SC će izgledno biti to što je naplata servisa bazirana na količini resursa koji su korišteni od strane aplikacije. To znači da je kupovanje unaprijed samih fizičkih jedinica koje obavljaju posao stvar prošlosti što sa sobom donosi financijske uštede. S takvom odlikom, nije teško vidjeti zašto sve više klijenata prelazi na serverless. Da bismo bolje razumjeli zašto je to tako super, pogledajmo kako su se stvari razvijale kroz prošlost.
Goli metal – “Bare metal”
Tijekom 60-ih godina prošlog stoljeća, davno prije začeća SC modela, developeri i sistemski administratori su pripremali fizičke servere za software na način koji se rijetko prakticira danas. Kako bi se software pravilno pokrenuo i održavao, ulagalo se mnogo vremena i truda. Instaliranje operacijskih sustava i drivera, setupiranje memorije, diska i procerskih resursa te njihovo održavanje, bio je zadatak koji je koštao administratore mnoge neprospavane noći. Uz to, prijetile su loše strane čvrstog povezivanja software-a na fizičke servere u zgradi poput rizika od okolnih nepogoda (nestanak struje, ekološke katastrofe).
Virtualke
Slijedeći evolucijski korak seže daleko u 1970-e, kada su se pojavile prve virtualne mašine. Prilikom deploy-anja software-a, u ovoj se paradigmi promijenio fokus sa posvećenosti hardware-u na postavljanje simuliranih servera. To je ponešto olakšalo deployment proces s obzirom da minorne razlike u hardware-u više nisu bile problem i bilo je više fleksibilnosti kod samog ažuriranja. Takav razvoj je značio da software više nije toliko povezan sa specifičnim komadom hardware-a. U slučaju greške na hardware-u, virtualna mašina bi bila jednostavno migrirana na slijedeći server. Ali i dalje su postojale loše strane naslijeđene iz ere golog metala.
Kontejneri
U 80-ima dolazi kontejnerizacija deployment okružja, ali njezin pravi razvoj započinje tek nakon 2000. Sistemski administrator bi particionirali operacijske sustave što bi omogućilo da se više aplikacija vrti na istom stroju, bez ometanja jedna druge. U ovoj fazi, počeli su se popularizirati za olakšavanje inicijalizacije okoline i održavanje deployment procesa, vrijeme potrebno za razvoj aplikacije se smanjivalo dok se broj deployment ciklusa povećavao. Sve to je dovelo do povećanja kvalitete kod razvoja aplikacija i njihovog deploymenta.
Paradigma se mijenja
Možemo vidjeti da je deployment aplikacija baziranih na komunikaciji između servera i klijenta započeo na izoliranim i nezamjenjivim komadima hardware-a. Taj pristup se razvio do korištenja izoliranog, ali zamjenjivog hardware-a, da bi se na kasnije particioniranjem operacijskih sustava omogućilo zasebno pokretanje aplikacija. Predstavljeni modeli su se razlikovali u svojoj prirodi i benefitima, ali imali su nesretan zajednički nazivnik – software u većoj ili manjoj mjeri zavisi o hardware-u – što u krajnjoj liniji znači dodatnu potrošnju ljudskih, vremenskih i financijskih resursa. Iz toga se izrodio novi, revolucionarni model, model koji je donio pomak u paradigmi razmišljanja o deployment-u – cloud.
Početci Serverless computing modela
SC je ozbiljno stigao na deployment scenu 2008 kada je Google izdao beta verziju Google App Engine-a. Google App Engine je omogućavao deployment aplikacija na Cloud, rasterećen brige o serveru i detaljima njegova postavljanja. 2010-e je Microsoft objavio Microsoft Azure, a ubrzo su se priključili drugi veliki provideri poput IBM-a i AWS-a. To su najčešće spominjani Cloud provideri, no postoje i drugi operateri koji su popratili trend.
Ako pogledamo kako je to danas, za SC se odlučuju mnoge kompanije. Ali kao i s drugim velikim tehnologijama, postoje zablude oko načina njihova korištenja. S obzirom da SC kao paradigma predstavlja dedicirane servere provizionirane od strane nekog od providera, to znači da je manje opterećenja na devops timovima i drugim dijelovima organizacije. Unatoč tom benefitu, riječ serverlessbudi skepticizam u nekim ljudima, vodeći ih pogrešno do vjerovanja da SC ne uključuje servere. Izgledno je da je serverlesskao dio SC termina pogrešan odabir jer serverlesspredstavlja manju količinu posla koju programer ili devops tim ima na umu prilikom rada sa serverom, te manju potrošnju financijskih sredstava na serverske resurse zahvaljujući automatskom skaliranju.
Još jedan čest nesporazum se dešava pri korištenju termina serverless i function-as-a-service kao da su sinonimi. Istina je da su oba povezana s Cloud-om, ali ne predstavljaju istu stvar. Termin serverless je bliži definicije Cloud arhitekture, dok FaaS predstavlja samo dio servisa koje Cloud nudi. FaaS tvori jedan način kako implementirati Cloud arhitekturu, ali isto tako može biti samo jedan dio većeg sustava kojeg čini Cloud arhitektura. FaaS pruža infrastrukturu i servise koji su potrebni za deployment i upravljanje izoliranim funkcionalnostima aplikacije, eliminirajući kompleksnosti koje obično dolaze građenjem i razvijanjem velikih infrastruktura koje se obično povezuju s aplikacijom.
Da zaokružimo
Nakon što smo prošli kroz povijest deployment-a, jasno je da SC donosi velike promijene za rad nekih organizacija. Pritom je bitno biti svjestan činjenice da osobitosti SC-a koje donose prednosti za jedan tip organizacije se ne moraju nužno translatirati na njih sve. Ideja SC-a nije da promijeni apsolutno sve postojeće computing modele i načine rade; umjesto, tu je da nam pomogne otvarajući nam nove mogućnosti. Koje su uopće prednosti SC-a?
Niži troškovi, fleksibilnost troškova
Jedan od najvećih ograničenja u razviju visokokvalitetnog software-a su upravo troškovi koje takav development nosi sa sobom. Organizacije uvijek traže načine kako biti efektivni s troškovima, ulažući u tehnologije koji im pomažu maksimizirati resurse kojima raspolažu.
Fokus na business, umjesto tehničku potporu
Ova stavka ima veliku težinu s obzirom da podrazumijeva mnoge preduvjete koji omogućavaju takav focus. Korištenje SC-a, troškovi i vrijeme za deployment se smanjuje, a broj deployment ciklusa se povećava što ostavlja više resursa koji se mogu uložiti na razvijanje poslovnog modela. Isto tako, s mogućnostima koje serverless otvara, širi se playground za kreiranje i unaprijeđenje poslovnih ideja te iskustava krajnjih korisnika.
Elasticitet i fleksibilnost resursa
Cloud provideri jednostavno upravljaju blanasiranjem opterećenja na serverima, preuzimajući odgovornost i posao developera. To uključuje ne samo skaliranje prema gore, već i smanjenje uključenih resursa po potrebi.