Šta je DevOps?

devops

DevOps je relativno novo zanimanje, ili bolje reći termin za grupu koncepata koji nije sasvim nov, ali je nedavno postao izuzetno popularan u IT zajednici. Za sada ne postoji opšte prihvaćena definicija ovog zanimanja, ali se u IT svetu najčešće pominje da je to termin koji je nastao iz dva trenda. Prvi je „Agile infrastructure“, odnosno „Agile operations“ jer se odnosi na upotrebu agilnih i lean metodologija u poslu. Drugi trend je nastao iz saradnje između developmenta (Dev) i operacija (Ops). Dakle, DevOps opisuje osobu koja je zadužena za rešavanje tehničkih pitanja u celom ciklusu razvoja softvera.

Drugim rečima, DevOps je osoba koja objedinjuje više IT disciplina i koja je zadužena za automatizaciju, sistemske poslove, skaliranje proizvoda, prilagođavanje servisa, objavljivanje gotovog proizvoda. Postoji i akademska definicija koja DevOps karakteriše kao skup praksi koje imaju za cilj smanjenje vremena između uvođenja promene u sistem i uvođenja te promene u normalnu proizvodnju, uz istovremeno osiguravanje visokog kvaliteta.

Zašto je potreban DevOps?

U agilnom razvoju, programeri često objavljuju svoj kod, ponekad se to dešava i više puta dnevno. To zahteva česta dodatna konfigurisanja radnog okruženja, kao i dodatna testiranja. Sistem administratori su protiv tog pristupa jer potencijalno dovodi do nestabilnosti u sistemu, pa čak i do pada servera. DevOps je tu da međusobno približi i ujedini sve koji učestvuju u procesu razvoja i deployment-a, kao i sistem administratore, QA inženjere, pa i krajnje korisnike. Naravno, uz sve to mora da se vodi računa da sistem u svakom trenutku bude stabilan i operativan. Da bi se to postiglo, DevOps mora da usvoji određene prakse, kao što su automatizacija, kontinuirana integracija, kontinuirana isporuka, kontinuirano testiranje i monitoring.

Pročitajte i tekst:  AOC predstavlja svoj praznični vodič za poklone

DevOps mora da se oslanja na automatizaciju i alate koji omogućavaju njenu realizaciju. Nema smisla ručno obavljati zadatke koji se često ponavljaju, koji se rade na isti način i koji daju identične rezultate. Automatizacijom takvih zadataka se štedi vreme, ali i izbegava mogućnost greške.

Kontinuirana integracija (Continuous Integration) je jedna od najvažnijih praksi u DevOps-u. Ona u prevodu znači da je potrebno što češće objavljivati i objedinjavati izvorni kod na kome se radi. Na primer, svaki zadatak (feature) developer kreira kao zasebni, tzv. feature branch, koji se nakon potrebnih izmena i osnovnih testiranja prvo postavlja na remote repositorijum kako bi bio vidljiv i ostalima, ali i uključuje (merge-uje) u neku veću bazu koda (develop branch). U agilnom razvoju se ovaj ciklus ponavlja više puta dnevno. To znači da svaki developer treba da aktivno prati šta rade ostali članovi tima, kako bi mogao da lako i uspešno integriše svoj kod sa ostalima. Istovremeno, ovakav pristup omogućava brže otkrivanje grešaka u kodu i njihovo ispravljanje.

Prema Scrum standardima, potrebno je odvojiti bar nedelju dana za testiranje aktivnih feature-a. Ali to ne znači da će QA inženjeri sedeti besposleno svo drugo vreme. Njihova saradnja sa developerima mora da bude kontinualna (Continuous Testing) i da se neprekidno prati i testira napravljeni i objavljeni kod. Pored toga, pod testiranjem se u DevOps kontekstu ne podrazumeva samo ručno testiranje opcija. Neophodna je automatizacija koja će, pored QA inženjera da izvrši dodatna testiranja u skladu sa zahtevima. Automatizovano testiranje će omogućiti da se obave i „load-stress“ testovi koji će pokazati kako se aplikacija ponaša kada se nađe u nekim realnim radnim okolnostima.

Pročitajte i tekst:  Specijalizovani alat za upravljanje instalacijama sa više projektora

Kontinuirana isporuka (Continuous Delivery) nadovezuje se na kontinualnu integraciju i kontinualno testiranje i odnosi se na deployment stabilnog i testiranog koda u produkcijsko okruženje. Ovo bi trebalo da se obavlja u što kraćim intervalima, recimo na kraju svakog sprint-a po Agile metodologiji.

Poslednji, ali ne i manje važan korak je monitoring. I ovde se sve svodi na automatizaciju i alate. Suština je da se rad u produkciji konstantno nadgleda, kako bi se dobili merljivi rezultati koji mogu da se upotrebe za unapređenje razvojnog okruženja u narednom ciklusu.