Home BIZNIS I ZABAVACloud-native razvoj kao osnova agilnog IT poslovanja

Cloud-native razvoj kao osnova agilnog IT poslovanja

Zašto tradicionalni sistemi umiru i kako da izbegnete najskuplje greške u tranziciji na oblak.

od Zoran Ristic
cloud-native razvoj

Key Takeaways – Šta je najbitnije u ovom tekstu:

  • Tradicionalni IT sistemi su tehnički prevaziđeni; agilnost danas zahteva sisteme koji su po svojoj prirodi „rođeni“ u cloudu, a ne samo preseljeni u njega.

  • U ovom tekstu dubinski analiziramo šta zaista znači cloud-native razvoj i razbijamo zabludu da je cloud samo iznajmljivanje tuđeg servera.

  • Saznaćete kako mikroservisi (microservices), kontejneri (containers) i Kubernetes menjaju pravila igre, ali i zašto vas pogrešna DevOps strategija može koštati kompletnog IT budžeta.

  • Razmotrićemo buduće tehnološke trendove poput WebAssembly (Wasm) tehnologije i AI orkestracije, uz konkretne osvrte na to gde greše kompanije u našem regionu.

Priznajmo odmah na početku jednu surovu istinu: većina kompanija danas tvrdi da koristi cloud, ali zapravo samo plaćaju preskup hosting za svoj stari, tromi softver. U eri u kojoj startapi preuzimaju tržišne udele gigantima u roku od nekoliko meseci, oslanjanje na glomazne, monolitne aplikacije predstavlja ekvivalent trkanja formulom u kojoj ste vezali ručnu kočnicu.

Cloud-native razvoj nije samo još jedna tehnička poštapalica kojom se gađaju prodavci softvera. To je fundamentalna promena u filozofiji poslovanja. Ako vaš IT sistem ne može da se skalira automatski u tri ujutru na Black Friday, ili ako deploy (puštanje softvera u produkciju) zahteva da pola tima dežura vikendom – vi nemate agilan biznis. Imate tempiranu bombu.

U nastavku ćemo hirurški precizno secirati šta zaista znači prelazak na cloud-native arhitekturu, gde inženjeri najčešće lažu menadžment i kako da zaista iskoristite tehnologiju za poslovni rast.

Anatomija zablude: Šta cloud-native razvoj zapravo (ni)je

Termin cloud-native razvoj često se zloupotrebljava. Najčešća greška koju kompanije prave je takozvani lift-and-shift pristup. To podrazumeva da uzmete svoju staru, monolitnu aplikaciju iz lokalnog data centra i prebacite je na virtuelnu mašinu kod AWS-a, Google Cloud-a ili Microsoft Azure-a.

Da li ste sada u cloudu? Da. Da li je to cloud-native? Apsolutno ne.

Prema zvaničnoj definiciji koju je postavila Cloud Native Computing Foundation (CNCF), cloud-native tehnologije omogućavaju organizacijama da grade i pokreću skalabilne aplikacije u modernim, dinamičnim okruženjima kao što su javni, privatni i hibridni oblaci.

Pravi cloud-native razvoj znači da je aplikacija dizajnirana sa pretpostavkom da će se infrastruktura ispod nje stalno menjati, padati i ponovo podizati. To je softver koji se ne oslanja na jedan specifičan server. Ako taj server umre, softver to i ne oseti, jer je dizajniran da preživi haos. To je suština agilnosti – otpornost na promene i brzina prilagođavanja.

Sveta trojica moderne arhitekture: Mikroservisi, kontejneri i orkestracija

Da bismo razumeli mehaniku ovog procesa, moramo da razložimo cloud-native pristup na njegova tri osnovna tehnička stuba. Bez njih, agilnost ostaje samo mrtvo slovo na papiru menadžerskih prezentacija.

1. Mikroservisi (Microservices): Podeli pa vladaj U monolitnoj arhitekturi, sve funkcionalnosti aplikacije (logovanje, plaćanje, baza korisnika) nalaze se u jednom ogromnom bloku koda. Ako želite da promenite boju dugmeta za plaćanje, morate da testirate i ponovo pustite u rad celu aplikaciju.

Mikroservisi razbijaju taj monolit na desetine ili stotine malih, potpuno nezavisnih aplikacija. Servis za naplatu komunicira sa servisom za inventar putem API-ja. Ako jedan padne, ostatak sajta i dalje radi. Ako je Crni petak i imate ogroman broj transakcija, možete resursima pojačati samo „servis za naplatu“, dok „servis za recenzije“ ostaje na minimumu. To donosi neverovatnu finansijsku i tehničku fleksibilnost.

2. Kontejnerizacija (Containerization): Magija izolacije Kako bi ovi mikroservisi mogli bezbedno i brzo da rade, oni se pakuju u kontejnere. Alati poput Docker-a omogućavaju inženjerima da zapakuju deo koda, bazu i sve zavisnosti u jedan „paket“ koji će raditi potpuno identično na laptopu programera, na testnom serveru i u produkciji. Zaboravite na onaj čuveni programerski izgovor: „Ne znam zašto ne radi na serveru, kod mene na mašini radi savršeno.“ Kontejneri su eliminisali tu rečenicu iz modernog IT-a.

3. Orkestracija (Container Orchestration): Kubernetes kao vrhovni komandant Kada imate tri kontejnera, možete njima upravljati ručno. Kada vaš sistem naraste na tri hiljade kontejnera koji se pale i gase svake sekunde, potreban vam je dirigent. Tu na scenu stupa Kubernetes (K8s). Ovaj open-source sistem automatski raspoređuje kontejnere na dostupne servere, ponovo ih pokreće ako padnu i brine se o rutiranju mrežnog saobraćaja.

Kubernetes: Spasitelj ili najskuplja igračka tvojih inženjera?

Ovde moramo da budemo oštri i direktni. Kubernetes je verovatno najbolji softver za orkestraciju ikada napravljen. Ali, on je takođe i najbrži način da spalite budžet i izgorite svoj inženjerski tim ako vam zapravo nije potreban.

Mnoge kompanije pate od takozvanog Hype-Driven Development-a (razvoja vođenog trendovima). CTO ili lead inženjer pročitaju tekst o tome kako Netflix i Spotify koriste Kubernetes, pa odluče da je to sjajno rešenje za njihov e-commerce sajt koji ima 500 poseta dnevno. Rezultat? Dobijaju sistem koji je toliko prekompleksan da pola inženjerskog tima ne radi na razvoju proizvoda, već na pukom održavanju Kubernetesa.

Cloud-native ne znači slepo praćenje trendova. Često su Serverless arhitekture (gde cloud provajder upravlja celom infrastrukturom, a vi samo pišete kod) mnogo bolje, isplativije i agilnije rešenje za male i srednje timove od podizanja sopstvenog K8s klastera. Prava agilnost je znati kada ne treba koristiti najnoviji i najkompleksniji alat.

Velika DevOps laž i uspon Platform Engineering-a

Godinama su nam prodavali priču o DevOps kulturi. Ideja je bila plemenita: programeri treba i da pišu kod i da održavaju infrastrukturu. Skraćenica od „You build it, you run it“ (Ti ga napraviš, ti ga održavaš).

U stvarnosti, cloud-native ekosistem je postao toliko širok i kompleksan da je nemoguće tražiti od jednog programera da bude ekspert za React, baze podataka, Docker, Kubernetes bezbednost i CI/CD (Continuous Integration/Continuous Deployment) alate.

Kognitivno opterećenje inženjera je dostiglo maksimum, što je dovelo do uspona nečega što se danas zove Platform Engineering (Platformski inženjering). Pametne organizacije danas grade interne platforme. Cilj platformskog inženjeringa je da programerima pruži jasan interfejs („Internal Developer Portal“) preko kojeg mogu jednim klikom da dobiju okruženje za testiranje ili puste kod u produkciju, a da uopšte ne moraju da znaju kako taj Kubernetes u pozadini funkcioniše. Ovo drastično ubrzava ciklus isporuke softvera i smanjuje frustracije unutar timova.

Zato uvek savetujemo da redovno pratite analize na ITNetwork portalu, gde detaljno obrađujemo prelazak sa klasičnog DevOps-a na moderne interne platforme, jer je to trenutno ključna bitka za produktivnost.

FinOps šamar: Cloud nije jeftiniji, samo je lakše potrošiti novac

Postoji jedan stari prodajni mit da je prelazak na cloud u startu jeftiniji. Nije. Cloud-native razvoj omogućava elastičnost, ali ta elastičnost ima svoju cenu. Zbog neverovatne lakoće sa kojom inženjeri mogu da alociraju nove resurse, cloud računi na kraju meseca mogu da šokiraju menadžment.

Zato je danas agilno IT poslovanje neodvojivo od FinOps-a (Financial Operations). FinOps je kultura i praksa upravljanja finansijama u oblaku. On prisiljava inženjere i finansijski sektor da rade zajedno. Inženjer mora da razume da loše napisan mikroservis, koji pravi previše nepotrebnih upita ka bazi, ne troši samo milisekunde – on bukvalno troši dolare svake sekunde. Pravilno konfigurisane cloud-native aplikacije se „gase“ ili smanjuju potrošnju onda kada ih niko ne koristi, što je jedini način da cloud zaista postane finansijski isplativ.

Tržište Balkana i zamka „distribuiranog monolita“

Na domaćem tržištu, često viđamo arhitektonski anti-šablon koji se u industriji zove „distribuirani monolit“. Timovi, pod pritiskom menadžmenta da pređu na mikroservise, razbiju staru aplikaciju na 20 delova. Međutim, ti delovi su toliko loše dizajnirani i toliko zavise jedni od drugih, da ako jedan padne – pada sve. Umesto jednog stabilnog programa, sada imaju 20 malih koji komuniciraju preko spore mreže i stalno pucaju.

Ovo je greška u kulturi i dizajnu baze podataka, a ne u samoj tehnologiji. Ako želite da vidite kako ozbiljan marketing može pomoći vašem IT proizvodu kada je arhitektura zapravo ispravno postavljena, pogledajte kako Joombooz koristi AI i pametne video reklame da istakne prednosti tehnoloških proizvoda na pravom mestu. Ali zapamtite, nijedna marketinška kampanja ne može da spasi softver koji puca svaki put kada dobije malo veći saobraćaj.

Pogled u budućnost: Šta dolazi posle kontejnera?

Tehnologija ne stoji u mestu. Ako je cloud-native razvoj danas standard, šta je ono što će biti standard za tri do pet godina? Sudeći po stručnim podacima i kretanjima unutar CNCF zajednice, svedočimo smeni paradigmi:

1. WebAssembly (Wasm) na serveru Wasm, koji je prvobitno napravljen za pretraživače, silovito ulazi na servere. Kontejneri jesu sjajni, ali su i dalje relativno teški i zahtevaju milisekunde ili sekunde za pokretanje. WebAssembly moduli su manji, izolovani na nivou memorije i pokreću se u mikrosekundama. Wasm neće potpuno zameniti Docker, ali će u narednim godinama preuzeti ogroman deo serverless funkcija.

2. AI-native orkestracija Veštačka inteligencija (AI) više nije rezervisana samo za LLM modele. Ulazimo u eru gde će AI orkestrirati samu cloud-native infrastrukturu. K8s već ima autoskaliranje, ali AI orkestratori budućnosti će, koristeći prediktivnu analitiku, znati unapred kada će se desiti pikovi u saobraćaju i pripremati servere pre nego što prvi korisnik uopšte klikne na sajt.

3. Edge Computing i „Zero Trust“ bezbednost Zahvaljujući 5G mrežama i IoT uređajima, podaci se sve više obrađuju na samoj ivici mreže (Edge computing), bliže korisniku, a ne u centralizovanim cloud data centrima. Zbog toga se cloud-native aplikacije sve više dizajniraju sa ugrađenom Zero Trust bezbednosnom arhitekturom – sistemom u kojem se nikom (ni servisu, ni korisniku) ne veruje po automatizmu, čak i ako se nalazi unutar interne mreže.

Da li je vaš kod spreman za sutra?

Cloud-native razvoj nije trend. To je evolutivni filter za softverske kompanije. Oni koji uspeju da savladaju složenost mikroservisa, uspostave sigurnu kontejnerizaciju i ukrote finansijske aspekte cloud poslovanja, dobiće neverovatnu brzinu izlaska na tržište i otpornost na padove.

Oni koji to ignorišu, ili pak pokušaju da reše organizacione probleme slepim uvođenjem kompleksnih tehnologija bez suštinskog razumevanja, završiće sa preskupim i neupravljivim IT sistemima.

Agilno poslovanje nije lepljenje stikera po tabli. To je infrastruktura koja može da isprati vašu ideju istog dana kada ste je zamislili. Da li vaša to može?

Često Postavljana Pitanja (FAQ)

Šta je glavna razlika između tradicionalnog (monolitnog) i cloud-native razvoja? Monolitne aplikacije su izgrađene kao jedna velika celina; izmena jednog dela zahteva ponovno podizanje celog sistema. Cloud-native aplikacije se sastoje od nezavisnih komponenti (mikroservisa) koje su modularne, rade u kontejnerima i optimizovane su za rad na mreži.

Da li cloud-native aplikacije moraju biti vezane za jednog specifičnog cloud provajdera? Ne, naprotiv. Prave cloud-native aplikacije se dizajniraju tako da izbegnu vendor lock-in. Korišćenjem otvorenih tehnologija poput Docker-a i Kubernetes-a, te aplikacije postaju prenosive (portable) i mogu se pokretati na AWS-u, Google Cloud-u, Azure-u ili na on-premise serverima.

Šta je distribuirani monolit i zašto je opasan? Distribuirani monolit nastaje kada se velika aplikacija „na silu“ razbije u mikroservise koji su i dalje toliko zavisni jedni od drugih da ne mogu da funkcionišu samostalno. To donosi svu složenost mikroservisa (spora mrežna komunikacija, teško debagovanje), ali bez ijednog benefita poput nezavisnog skaliranja.

Da li mi je obavezno potreban Kubernetes za cloud-native aplikaciju? Apsolutno ne. Za mnoge kompanije sa manjim obimom saobraćaja, Serverless rešenja (poput AWS Lambda funkcija) ili fully-managed kontejnerska rešenja (poput Google Cloud Run) su daleko isplativija i brža opcija od postavljanja i održavanja K8s klastera.

Koji je najčešći skriveni trošak u cloud-native razvoju? Nepravilno konfigurisanje resursa, preveliki mrežni transferi između različitih zona u cloudu, i aplikacije koje rade na „praznom hodu“ 24/7 umesto da se gase kada nema korisnika. Implementacija FinOps kulture je jedino rešenje za optimizaciju ovih troškova.

Banner

Banner

Možda će vam se svideti i