"Infrastruktura kao kod" izazov je s kojim se isplati uhvatiti u koštac, pogotovo za ogromne okoline

“Infrastruktura kao kod” izazov je s kojim se isplati uhvatiti u koštac, pogotovo za ogromne okoline

Što je sustav veći, to IaC (Infrastructure-as-Code) donosi više prednosti. Kako to izgleda u praksi?

Matija Gašpar glavni je DevOps inženjer u Raiffeisenbank Hrvatska (RBA). 35-godišnji Zagrepčanin u tu je banku pristigao prije nešto manje od četiri godine, nakon što je završio Tehničko veleučilište u Zagrebu i potom radio u više tvrtki, mahom bankama.

Jedan od glavnih poslova kojim se bavio – i trenutno bavi u RBA – implementacija je infrastrukture kao računalnog koda (Infrastructure as a code, IaC). Što je veći sustav, to su automatizacija, oporavak i konzistencija istog važniji. Zbog toga IaC donosi više prednosti većem sustavu poput banaka, nego manjim radnim okolinama, objašnjava Matija.

Brojne su prednosti i unapređenja koja dobivamo zahvaljujući ovakvoj implementaciji jer IaC automatizira podizanje i upravljanje infrastrukture. Konfiguracija infrastrukture definirana je u kodu i lako se pokreće pomoću alata kao što su Terraform i Ansible.

Možda najbitnija prednost je konzistencija i mogućnost lakog obnavljanja i ponavljanja infrastrukturnih taskova. Naime, sav kod je pohranjen na nekom sustavu verzioniranja kao što je Git, odakle ga se može lako revidirati i pokretati po potrebi.

Sve ovisi o veličini okoline

Proces migracije svih RBA aplikacija i alata na novu okolinu još je u tijeku, no Matija procjenjuje kako je realan vremenski okvir za implementaciju IaC u sustavu kao što je RBA od šest mjeseci do godinu dana. To obuhvaća postavljanje koda i okoline, kao i migraciju određenog broja aplikacija, nekad se dio vremena i resursa potroši i na isprobavanje raznih rješenja koja bi mogla biti korisna.

Nakon što se pokaže da aplikacije na novoj okolini uspješno rade, počinje se s migracijom preostalih. Koliko će to trajati, ovisi o veličini okoline koju imate – koja je, naravno, veća kad je riječ o bankama.

Na migraciji je u RBA radilo pet do osam ljudi, svaki zadužen za svoju tehnologiju i migraciju uz njih povezanih komponenti na novo okruženje. Broj je varirao ovisno o potrebi posla u danom trenutku za određeni segment.

Recimo, mrežnog administratora trebamo za početne IP adrese, propuštanja, podešavanje load balancera, pa je u tim trenucima njegova angažiranost veća. Nakon što to odradi, njegov posao se smanjuje i tu je po potrebi.

U migraciju je bilo uključeno i nekoliko vanjskih suradnika. To se pokazalo korisnim jer – unatoč tome što su poznavali IaC i automatizaciju – Matija i njegov tim nisu imali direktnog iskustva sa samim procesom migracije, odnosno najboljim načinima i alatima kako ju provesti od početka do kraja. Uključivanje ljudi s odgovarajućim iskustvima i znanjem svakako je ubrzalo cijeli proces.

Izazovi po IaCu

Ipak, bila je to po mnogim aspektima izazovna implementacija. Jedan od važnijih, recimo, bila je potreba za suradnjom timova oko migracije određene aplikacije.

Osim toga, to što se okolina poput one u RBA sastoji od velikog broja aplikacija nije predstavljalo najveći problem. Veći je izazov bilo to što razne aplikacije rade na različite načine i imaju drukčije zahtjeve, prilagođene svojoj svrsi i potrebama.

Kao tim za migraciju kod pisanja predloška za naseljavanje pojedinih aplikacija morali smo paziti na potrebe i zahtjeve svake. Zbog toga je bilo izazovno napisati jedan univerzalni predložak koda koji će zadovoljiti svaku aplikaciju.

Također, trebalo je s timovima koji održavaju aplikaciju dogovoriti idealno vrijeme i proces migracije. Problem bi se pojavio i kad neka od aplikacija nije bila prethodno pisana za mikroservisnu arhitekturu.

Zbog toga nije bila u tom trenutku prikladna za migraciju. Kako bi to omogućili, Matija i njegov tim trebali su prepraviti njen kod.

Alati za integraciju i isporuku

Alate Argo, Helm, Terraform i Git odabrali su zato što općenito slove – a za sad se i u praksi pokazuju – kao najbolja rješenja na tržištu za stalnu integraciju i isporuku (continuous integration and continuous delivery/deployment, CI/CD) i IaC općenito.

ArgoCD omogućuje jednostavno i efikasno naseljavanje, skaliranje i nadogradnju aplikacija, dok se Terraform, recimo, koristi za provizioniranje svih potrebnih resursa za funkcioniranje infrastrukture na koju će se naseljavati aplikacije.

U praksi to znači da zapišemo željenu konfiguraciju naše infrastrukture u HCL-u, jeziku kojeg Terraform koristi, pohranimo ju na naš Git klijent te ju preko tog klijenta instanciramo, odnosno pokrećemo.

Taj napisani kod sadržava i kreira Kubernetes cluster, kafka cluster ili MSK u slučaju AWS-a, potrebne baze, alate za nadzor i logiranje kao što su Grafana, Prometheus, Opensearch i tako dalje.

Preko Terraforma podižemo sve potrebno za naseljivu okolinu za aplikacije, njihov nadzor i održivost.

Kao lokaciju za pohranjivanje vlastitog koda koristili su Git, kojeg se – osim za čuvanje i upravljanje kodom – koristi i za druge stvari. Recimo, može poslužiti i za cijeli CI dio, prethodi deployu aplikacija koji odrađuje ArgoCD, dodaje Matija.

ArgoCD se primarno koristi za inicijalno naseljavanje i kasniji deploy novih verzija već postojećih aplikacija. Također omogućuje, do određene mjere, praćenje logova i pregled samih aplikacija naseljenih preko njega.

Iako se okolina poput one u RBA sastoji od velikog broja aplikacija, veći izazov u implementaciji IaC-a im je bio taj što razne aplikacije rade na različite načine i imaju drukčije zahtjeve.

Lokalno i u cloudu

Zamišljeno je da svaka aplikacija prethodno ima svoj repozitorij na Gitu koda pisanog specifično za nju. On bi trebao biti strukturiran prema postavkama predefiniranih templatea za Helm.

Helm ili helm chartovi su zapravo YAML predlošci koji opisuju i definiraju neki Kubernetes resurs. Služe kako bi kod deploya preko ArgoCD-a olakšali i automatizirali samu isporuku aplikacija, pošto je već prethodno definirano koju strukturu datoteka treba imati u svom repozitoriju i koje parametre te datoteke moraju sadržavati.

Helm je – u situaciji kad se koriste Argo i Kubernetes – praktičan jer preko svojih chartova automatizira instalaciju i konfiguraciju potrebnih resursa na radnoj okolini, objašnjava Matija. Samo provizioniranje infrastrukture, ako je u cloudu, moguće je uz pomoć svestranih alata kao što je već spomenuti Terraform ili, primjerice, nativnog AWS alata kao što je Cloud Formation.

Odlučili smo se za Terraform jer preko njega možemo provizionirati potrebne resurse lokalno i u cloudu, a i jer je dosta dobro pokriven raznim modulima i dokumentacijom.

Jedan klik za deploy

Taj repozitorij kod kreiranja aplikacije biva naveden kao referentna točka u ArgoCD-u te ju ArgoCD naseli na Kubernetes cluster koji mu je prethodno postavljen kao ciljana okolina za deploy.

Nakon što smo prvi puta naselili aplikaciju, kasnije u ArgoCD-u kod naseljavanja nove verzije samo zamijenimo vrijednost stare verzije za novu (čiji smo novi kod prethodno stavili na Git klijent) te ju Argo sam automatski sinkronizira i naseli.

Glavna ideja je, zaključio je Matija, sustav postaviti tako da se jednim klikom za deploy koda digne cijela okolina.

Ako u budućnosti dođe do greške u sustavu, ponovo se istim deploy postupkom okolina vraća u prvotno ispravno stanje, sa svim podacima do prije greške.

Ovim postupkom smo dobili na brzini podizanja i rada na našoj okolini (primjerice, nadogradnje i povećanja sustava), održivosti i sigurnosti samog sustava te lakšem revidiranju komponenti sustava, pošto je sve pohranjeno na jednom mjestu u kodu.

I za kraj, Matiju smo pitali i što za njega označava #RBAmakesITeasy, slogan IT odjela, kojim komuniciraju da IT može biti jednostavniji i lakši, kolegijalnost veća, a kultura opuštenija – s više fokusa na ljude.

Za mene RBA potiče i omogućava edukacije te korištenje novih tehnologija na IT tržištu. Samim time mi omogućava da radim i razvijam svoje vještine na tehnologijama koje se nakon zajedničke procjene pokažu najboljim za našu okolinu.

Sukladno članku 94. Zakona o elektroničkim medijima, komentiranje članaka na Netokraciji dopušteno je samo korisnicima koji ostave svoje ime i prezime te mail adresu i prihvate pravila ponašanja.

Pravila ponašanja

Na Netokraciji za vas stvaramo kvalitetan, autorski potpisan sadržaj i zaista se veselimo vašim kvalitetnim, kontruktivnim komentarima. Poštujmo stoga jedni druge prilikom komentiranja, kao i Zakon, držeći se sljedećih pravila ponašanja:

  • Ne budite 💩: Nema vrijeđanja, diskriminiranja, ni psovanja (osim ako nije osobni izričaj, ali onda neka psovka bude općenita, a ne usmjerena prema nekome). Također, upoznajte se sa stavkom 2. članka 94. Zakona o elektroničkim medijima prije no što ostavite komentar.
  • Samo kvalitetna rasprava, manje trolanja: Ne morate se ni sa kim slagati, ali budite konstruktivni i doprinesite raspravi! Svako trolanje, flameanje, koliko god "plesalo" na granici, leti van.
  • Imenom i prezimenom, nismo Anonymous 👤: Autor sadržaja stoji iza svog sadržaja, stoga stojite i vi iza svog komentara. Koristimo ime i prezime te pravu email adresu.

Kako koristimo podatke koje ostavljate? Bacite oko na našu izjavu o privatnosti.

Sve ostale komentare ćemo s guštom spaliti, jer ne zaslužuju svoje mjesto na internetu.

Odgovori

Tvoja e-mail adresa neće biti objavljena.

Popularno

Mobilne aplikacije

ZET-ov štrajk iznjedrio nova digitalna rješenja za prijevoz po Zagrebu

Zagreb je jutros ostao bez redovitog tramvajskog i autobusnog prometa, no građani su brzo počeli tražiti alternativna rješenja. Uz organiziranje zajedničkih vožnji, pojavilo se i nekoliko digitalnih projekata koji pokušavaju povezati vozače i putnike.

Vodič

Imate pretplatu na AI alate? Evo što računovođe kažu o ispravnom evidentiranju

U novoj kolumni Bruno Cvitanović, direktor računovodstvenog i konzultantskog servisa Brojevi objašnjava kako računovodstveno tretirati AI alate, što vrijedi za poduzetnike izvan sustava PDV-a i na koje pogreške treba paziti.

Programiranje

Tim od šest developera, dva QA-a i jednog Product Ownera postaje prošlost

Florian Krause ima trideset godina iskustva u razvoju softvera, jedan propali startup i čvrsto mišljenje: tim od šest developera, dva QA-a i jednog product ownera postaje prošlost. Na The Geek Gatheringu u Osijeku objasnio je čime se takva postava zamjenjuje.

Što ste propustili

Pametni automobili

Napokon smo se provozali Verneovim robotaksijem!

Nakon što smo u Zagrebu bezuspješno pokušali uhvatiti Verneov robotaksi putem Uberove aplikacije, zvijezde su se posložile i mi smo dobili poziv koji se ne odbija.

Umjetna inteligencija

Tko zbog AI-ja i dalje ulaže u ljude, a tko otpušta 50% radne snage?

Dok neke tvrtke nastavljaju i zapošljavati i ulagati u AI, druge su odabrale samo potonje. Kako različite tvrtke pristupaju promjenama na tržištu, doznali smo na Automation Summitu.

Novost

Gamepires najavio otpuštanja, smanjuje tim koji radi na SCUM-u

Gamepires, koji stoji iza igre SCUM, smanjuje broj zaposlenih zbog zahtjevnih tržišnih uvjeta. Objava dolazi nekoliko mjeseci nakon što je studio preuzeo britanski Splash Damage.

Vodič

Imate pretplatu na AI alate? Evo što računovođe kažu o ispravnom evidentiranju

U novoj kolumni Bruno Cvitanović, direktor računovodstvenog i konzultantskog servisa Brojevi objašnjava kako računovodstveno tretirati AI alate, što vrijedi za poduzetnike izvan sustava PDV-a i na koje pogreške treba paziti.

Veliki intervjui

Ako AI može napraviti film ili igru, što ostaje kreativcima? Odgovara CEO Nanobita

Može li umjetna inteligencija promijeniti način na koji nastaju filmovi i igre, a da pritom ne žrtvujemo kvalitetu priče i kreativnu viziju? Nanobit već testira odgovor na to pitanje, razvijajući AI produkcijske procese koji otvaraju mogućnost stvaranja sadržaja velikom brzinom.

Netokracija Podcast

Dekan FER-a: AI ne može zamijeniti temeljno znanje inženjera

Umjetna inteligencija mijenja način na koji radimo, ali bez temeljnih znanja nema ni kvalitetnih inženjera ni ozbiljnog tehnološkog napretka. U razgovoru s dekanom FER-a otkrivamo zašto je važno ulagati u istraživanje i razvoj, kako povezati fakultete i industriju te gdje se otvaraju nove prilike za Hrvatsku – od robotike i fizičke umjetne inteligencije do razvoja visokotehnoloških proizvoda.