Autor: Jasmin Štrkonjić, DevOps inženjer u KING ICT-u
U današnjem digitalnom dobu i na sve konkurentnijem tržištu, brzina i agilnost u razvoju softvera ključni su elementi za postizanje konkurentske prednosti. U KING ICT-u usmjereni smo na inovativna rješenja i primjenu novih tehnologija u svim područjima poslovanja, a brzina i agilnost su neizbježni elementi za postizanje naših ciljeva.
Zato koristimo DevOps metodologiju koja nam pomaže u postizanju reputacijske brzine i kvalitete.
Što je uopće DevOps?
DevOps je multidisciplinarno područje između čistog razvoja softvera i infrastrukturnih operacija. Radi se o relativno novom području u svijetu IT-ja koje djeluje kao spona između ta dva svijeta. U DevOps timu dužnost nam je osigurati stabilno i sigurno okruženje za jednostavno puštanje aplikacija u produkciju, bilo da se radi u operativnom sustavu ili platformi namijenjenoj kontejnerskom okruženju. U svakom trenutku moramo osigurati izvršavanje posljednje stabilne inačice aplikacija. Možda je najvažnija uloga automatizirati repetitivne i dnevno operativne zadatke. Takvim pristupom razvojnim inženjerima osiguravamo da infrastruktura ne bude neka „crna kutija“, već okruženje kojim i oni sami mogu upravljati i imati svijest gdje se aplikacija izvršava i kako utječe na potrošnju resursa.
KING ICT je prepoznao važnost ovog pristupa i jedna od ključnih inicijativa tvrtke je usvajanje DevSecOps pristupa razvoju softvera korištenjem otvorenog koda kako bi se ubrzao razvoj i isporuka te povećala pouzdanost, sigurnost i kvaliteta softverskih rješenja, kontinuiran je proces.
DevOps u KING ICT-u kao jedinstveni proces
DevOps pristup razvoju softvera kombinira razvoj i operacije u jednom procesu. Naš DevOps pristup integriran je u sve faze razvoja softvera. To uključuje ključnu suradnju između programera, inženjera infrastrukture i operativnih timova. Cilj je stvoriti okruženje koje omogućuje brži razvoj i isporuku softvera, čime se povećava kvaliteta i pouzdanost sustava. U kontekstu DevOps paradigme, ključno je koristiti DevOps alate koji su uglavnom temelji na open source rješenjima. DevOps tim odgovoran je za uspostavu i kontinuirani razvoj platforme temeljene na Izvorno u oblaku tehnologije također otvorenog koda koji omogućuje razvojnim timovima potpunu automatizaciju infrastrukture. Kao rezultat, postiže se brži i kvalitetniji razvoj, testiranje, integracija i isporuka softvera.
Razvoj u iteracijama ili metodom “korak po korak”.
Kada govorimo o DevOps pristupu, razvoj u iteracijama je ključni element KING ICT-a. Umjesto da se cijeli projekt razvija u jednom velikom koraku i da se čeka dovršetak cijelog projekta, razvoj u iteracijama omogućuje razvoj softvera u manjim koracima, uz stalne testove i pregledavanja koda. Ovakav pristup omogućuje otkrivanje i rješavanje problema i prije nego što postane preveliki, što znači da se projekti mogu isporučiti u roku is manje pogrešaka. Potičemo pristup „fail-faster“ jer to zapravo znači da se razvojni inženjeri u kontroliranim uvjetima ne trebaju bojati grešaka. Štoviše, ako se tijekom faze razvoja i testiranja otkrije više grešaka, konačni proizvod je bolje kvalitete. Bitno je imati okruženje koje dopušta takav pristup, a razvoj mikroservisa koji su kontejnerski savršeno pristali.
Od razvoja do isporuke automatizacijom: CI/CD temeljen na otvorenom kodu
Kako bi se osigurala brza i učinkovita isporuka softvera, koristimo kontinuiranu integraciju i isporuku (CI/CD) temeljenu na otvorenom kodu. Radi se o procesnom pristupu nalik proizvodnoj traci, a omogućuje potpuno automatiziran proces. Većinom se proces sastoji od nekoliko ključnih točaka, a to su:
- Arhitektonsko planiranje – Planiranje
- Razvoj izvornog koda i određivanje verzije – Kodirati
- Automatizacija izgradnje aplikacije iz izvornog koda (pakirano samo jednom po iteraciji) – Izgraditi
- Kontrola kvalitete – Test
- Integracija s okolinom gdje se aplikacija izvodi (varijabilna okolina) – Otpuštanje
- Postavljanje aplikacija u okruženju gdje se izvodi – Rasporedi
- Optimizacija infrastrukture (virtualizacija, kontejnerizacija) – operirati
- Kontrolirati – Praćenje/bilježenje
Ovaj princip omogućuje iterativne promjene u softveru koji se automatski testira i isporučuje sve do proizvodnje, čime se osigurava visoka kvaliteta proizvoda, pouzdanost i brza isporuka na tržištu kada postoji potreba – proces se može ponavljati.
Infrastruktura kao kod i upravljanje konfiguracijom
Postoje još dva ključna elementa u našem pristupu, naime upravljanje infrastrukturom i konfiguracijom. IaaC omogućuje razvojnom vremenu kreiranje infrastrukturnih resursa za potrebe aplikacija kroz kod, što omogućuje brzu i jednostavnu reprodukciju infrastrukture u različitim okruženjima sličnim onim u proizvodnom okruženju.
Korištenje IaaC pristupa iz DevOps paradigme agnostičan je pristup infrastrukturi, a kreiranje takvih resursa predstavlja unificirani obrazac bez obzira nalazi li se infrastruktura na našim poslužiteljima ili negdje u Oblaku. Konfiguracijski menadžment, s druge strane, omogućuje razvojnom vremenu upravljanje konfiguracijama putem izvornog koda, bilo da se radi o konfiguracijama aplikacija ili infrastrukture. Korištenje posebnih alata temeljenih na otvorenom kodu olakšava deklarativno programiranje koje opisuje željeno stanje sustava, a definira se u manifestima, najčešće u yaml formatu. YAML je vrlo popularan programski jezik u DevOps svijetu jer je dizajniran na način da je jednostavan za čitanje i čovjeku razumljiv, a radi skladno drugim programskim jezicima.
Openshift kao „Ferrari“ među kubernetes klasterima
Puno je skraćenica i kompliciranih objašnjenja… Ništa nije “rocket science” i svatko to može naučiti – ako ima želju naučiti. Platforma kao usluga je prava DevOps platforma. Danas već možemo reći – u standardnom razvoju aplikacija mikroservisne arhitekture i kontejnerskog okruženja, DevOps timovi održavaju razne Kubernetes klastere različitih distribucija i dobavljača, ali mi u Kingu radimo na „Ferrariju“ među njima. Radi se o Openshift platformi.
Radi se zapravo o Kubernetes distribuciji koja ima puno dodatnih funkcionalnosti primjerenih programera. Openshift trenutno nudi najvišu razinu sigurnosti već ugrađenu u dizajn bazne slike spremnika kao temelj budućeg spremnika koji će se izvoditi u proizvodnji. Kada toj osnovnoj slici dodamo izvorni kod aplikacije, zapravo smo napravili sliku aplikacije. U tom procesu izgradnje primjenjuje se spomenuti CI/CD procesni pristup, gdje izvorni kod aplikacije prolazi kroz različite procese kontrole kvalitete i sigurnosti. Platforma nam također omogućuje centralno čuvanje slika aplikacija koje imaju oznaku (oznaku) verzije aplikacija, a po toj oznaci znamo koje smo funkcionalnosti ili ispravke nadogradili u tu verziju.
S obzirom da naši korisnici imaju različite platforme i sustave na kojima se koriste naša rješenja, moramo biti fleksibilni s isporukom, a Openshift nam to omogućuje. Zatim prihvaćamo našu konačnu verziju aplikacije i postavljamo je u korisnički repozitorij, gdje se opet, ovisno o platformi i načinu implementacije, pokreće u izvršnom proizvodnom okruženju.
Automatizacija je ključna u DevOps svijetu
Jako je važno da se mi u DevOps timu bavimo automatizacijom i da razumijemo što automatiziramo, pogotovo na početku naše karijere, kada činimo prve DevOps korake. Preporuča se učiniti bez pomoći popularne umjetne inteligencije (koja je izvrsna i zaista olakšava svakodnevni rad), ali znanje koje stječemo uloženim trudom ima puno veću vrijednost i širu primjenu. Zašto je automatizacija ključna u DevOps svijetu?
Pa kada automatiziramo, zapravo pišemo kod u obliku skripte namijenjene izvođenju na nekom operacijskom sustavu, čime smo na neki način bliži poslu koji rade razvojni inženjeri i možemo se poistovijetiti s njihovim potrebama. Zadaci mogu biti jednostavniji poput kreiranja novih korisničkih računala ili proširenja diskovnog prostora pa sve do složenijih kao što su instalacije sustava za aplikativno upravljanje identitetima (korisnicima) te podešavanja aplikativnih poslužitelja i izrade biblioteka koje razvoju olakšavaju posao.
Ansible je alat kojeg koristimo i jedan je od popularnijih koji značajno olakšava takve zadatke jer nam omogućuje da centralizirano upravljamo i orkestriramo automatizaciju. To nam daje puno veću kontrolu i smanjuje mogućnost pogreške. Neoprezna greška u automatizaciji može izazvati nedostupnost produkcijskih sustava i zato treba biti oprezan i uvijek testirati u okruženju koje nije produkcija.
Što nas čeka u budućnosti?
Implementacija i održavanje navedenih procesa je kontinuirani rad. Novi projekti dolaze, neki stari se reinžinjeriraju, a neki završavaju svoj životni ciklus. Angažman DevOps-a nužan je za racionalno upravljanje resursima, alatima i konfiguracijama. Također nastojimo timovima predstaviti neke novitete koji su testirani i spremni za korištenje u sklopu R&D faze, a koji dodaju vrijednost IT sustavu. Neki od budućih angažmana su dodatna poboljšanja CI/CD procesa, dodatna poboljšanja upravljanja osjetljivim podacima, uvođenje autonomnih operatera, blue/green deployment i još mnogo toga…
Budućnost DevSecOps-a u IT-u je, slobodno možemo reći, iznimno uzbudljiva, posebno imajući u vidu umjetnu inteligenciju koja je dosegla potpuno novu razinu u razumijevanju problema, rješavanju složenih zadataka i pronalaženju rješenja. Naša buduća rješenja sigurno će se sastojati i od ove komponente. To samo znači da ćemo profesionalne kompetencije dodatno obogatiti novim vještinama koje će oblikovati budućnost hrvatskog IT-a. Zato – pratite nas i postanite dio budućnosti s nama!
Više o temiIzvor:Bug.hr