DevOps je metodologija koja već godinama ima zasluženo, važno mesto u efikasnom razvoju softverskih rešenja. Timovi koji se opredele za ovaj metod mogu da se okoriste čitavim spektrom prednosti za jednostavniji i efikasniji životni ciklus kreiranja i unapređenja softvera. Uronićemo danas u detaljniji prikaz ovih prednosti, ali prvo:
Šta je DevOps?
DevOps je pristup koji spaja razvoj softvera (development, “Dev”) sa IT praksama (operations, “Ops”) radi pojednostavljenja i skraćenja radnog procesa koji prethodi kreiranju jednog softverskog rešenja. Sve to izvodi se na infrastrukturi koja Dev i Ops timovima omogućava da rade na novim funkcionalnostima softvera, unapređuju i ažuriraju softver što lakše i što češće.
DevOps tim podrazumeva stručnjake iz obe oblasti kojima su zajednički cilj veća funkcionalnost, efikasnost, inovativnost i svakako kraći TTM (Time to Market).
U idealnim okolnostima, koristi usvajanja i pripreme DevOps pristupa su mnogobrojni:
1. Tehičke prednosti
- Jednostavniji proces rada
- Kontinuitet u kreiranju softverskih rešenja
- Automatizovano testiranje i brže rešavanje problema
- Sigurnija i stabilnija infrastruktura
- Brže testiranje rešenja
- Kraći time to market
2. Prednosti sa timskog aspekta
- Povećana produktivnost, inovativnost i kreativnost pojedinaca i čitavog tima
- Veća angažovanost zaposlenih
- Više prilika za razvoj usled optimizacije radnog ciklusa
- Bolja komunikacija i saradnja među članovima tima
DevOps je način razmišljanja
Preduslov za postizanje ovih prednosti je spremnost tima da usvoji DevOps metodologiju rada. Zato se često napominje da je DevOps pre svega način razmišljanja i kultura.
Članak objavljen u Gartneru navodi da je stopa uvođenja i korišćenja DevOps pristupa u stalnom rastu, međutim to usvajanje ne ide lako. Mnogi biznis lideri prijavljuju izazove u timu prilikom pokušaja da implementiraju DevOps metodologiju.
Da bi se ovi izazovi prevazišli potreban je timski rad na prihvatanju novog pristupa, koji se mora doživeti i kao kulturološka i poslovna promena sa ciljem pojednostavljenja i unapređenja projekata.
Ukoliko nameravate da prostudirate okvire DevOps metologije, najpre morate imati jasan uvid u to kako funkcionišu tradicionalni sistemi i koje izazove oni nose. Tek tada ste spremni da razumete potencijal automatizacije i DevOps pristupa koji umanjuje ili eliminiše probleme tipične za tradicionalni pristup.
Kako DevOps rešava probleme tradicionalnih sistema
Zamislimo malu softversku kompaniju A koja kreira mobilne aplikacije. Kompanija A ima dva tima koji zajedno rade na projektima – tim administratora sistema (Ops) i tim programera (Dev). Njihov uobičajeni tok posla izgleda otprilike ovako:
Dev tim razvija projekat na serveru i šalje specifikaciju Ops timu, koji je zadužen za podizanje servera prilagođenog prosleđenim specifikacijama i potrebama definisanim u tehničkoj dokumentaciji. Potom se ulazi u fazu testiranja servera, što, u zavisnosti od veličine projekta, može trajati i nekoliko meseci.
Kada je testiranje završeno, počinje faza produkcije, u kojoj se javlja najviše izazova. Jedan od češćih je da segmenti aplikacije koji su bili besprekorni u fazi razvoja, u produkciji jednostavno ne rade. Glavni razlog za to je razlika u dva okruženja (razvojno i produkciono), a ova situacija kreira čuveni jaz između developmenta i IT operacija (čuveno “radilo je na mojoj mašini!”).
Glavni cilj DevOps pristupa je da spoji dva tima, smanji rupu u efikasnosti i omogući okruženje u kojem se izazovi tipični za fazu produkcije neće dogoditi.
Ključna reč: automatizacija
Šta znači pravilno izveden proces automatizacije? Ako su svi članovi tima 100% sigurni da mogu brzo i efikasno da repliciraju čitavo radno okruženje, testiraju proizvod u fazi razvoja i znaju da će raditi i u fazi produkcije, to je automatizacija kakvoj se teži u DevOps metodologiji.
Glavni cilj DevOps automatizacije jeste pojednostavljenje svih segmenata koji utiču na rad i razvoj jedne aplikacije. Ti segmenti su:
- mreža
- serveri
- održavanje naloga
- servisi
- kreiranje korisnika
- bezbednost i
- analiza.
U idealnom DevOps okruženju, svi ovi segmenti bi trebalo da se tretiraju kao kod. Upoznajte Infrastructure as Code.
Infrastructure as Code model
Ideja “Infrastructure as Code” (infratruktura kao kod) modela je da se sistemi i uređaji potrebni za rad sotftvera tretiraju kao i sam softver. IaC podrazumeva razvoj DevOps alata pomoću kojih se gorepomenuti segmenti čuvaju kao kod, a potom se korišćenjem alata za automatizaciju infrastrukture smeštaju i održavaju. Kod postaje detaljna dokumentacija koja pokriva:
- šta se događa tokom faze razvoja
- šta se događa tokom produkcione faze
- koje promene se događaju
- gde i kada se događaju
- da li su nove serverske instance dodate ili ugašene
Cilj IaC modela je da omogući članovima tima visoku dostupnost kodova i skripti koji pripadaju određenom projektu. Na ovaj način, replikacija čitavih arhitektura je ne samo jednostavnija, efikasnija i isplativija, već predstavlja i odličnu osnovu za kreiranje novih okruženja za buduće projekte.
Važnost CI/CD-a (Continuous integration & Continuous deployment)
CI/CD je proces kojem DevOps metodologija duguje efikasnost i brojne koristi.
Continuous integration (CI) onima koji razvijaju softver omogućava:
- automatizovanu validaciju integrisanja novog koda u postojeći
- automatizovano testiranje
- brže ispravke bagova
- optimizovanje razvoja softverskog rešenja
- bolju komunkaciju i odnos u timu
Kad god se desi neka promena u kodu, CI alati automatski generišu novu verziju aplikacije i testiraju novi kod koji onda integrišu u repozitorijum. Ako programeri redovno dodaju novi kod i/ili prave izmene na postojećem kodu, čitav proces postaje još jednostavniji i integracija koda je gotovo besprekorna.
Ovaj vid automatizacije pomaže kompanijama da:
- smanje rizike
- poboljšaju komunikaciju u timu
- smanje dodatne troškove
- postignu konzistentnost u procesu razvoja koda
- uklone manuelno rešavanje problema i integracije
…i sveukupno poboljšaju procese rada, kvalitet proizvoda i brzinu izbacivanja softvera na tržište.
Continuous deployment (CD) podiže čitavu produkcionu priču na još viši nivo.
Svaki put kada programer napravi deo koda, ako je automatsko testiranje bilo uspešno, kod stiže u produkciju i brzo postaje dostupan korisnicima. Ovo jedinstveno radno okruženje oslobođeno je od zastoja u fazama razvoja, testiranja i produkcije, pa je DevOps tim koji je uspešno implementirao CI/CD proces nagrađen bržom i lakšom proizvodnjom softverskih rešenja.
Umesto zaključka
Da bi se adekvatno sproveo i omogućio prednosti za razvoj softvera o kojima smo pričali, DevOps proces mora biti pažljivo isplaniran. Procedura zavisi od kompleksnosti i veličine arhitekture i zahteva temeljan pristup u kom nema mesta žurbi.
Planiranje, organizovanje i primena DevOps metodologije podrazumeva da se svi segmenti pomeraju bez greške kako bi se sve faze sprovele uspešno, bez kompromisa i komplikacija. Jedino tako kompanija može iskoristiti koristi agilnog pristupa bez kojeg uskoro neće biti moguće zamisliti moderan razvoj softvera.