Što je važnost DevOpsa, što on znači za IT stručnjake, opis metoda, okvira i alata.

Mnoge se stvari dogodile od kada je pojam DevOps postao ustaljen u IT svijetu. S obzirom na to da veći dio ekosustava ima otvoreni izvor, važno je razmotriti zašto je to počelo i što to znači za karijeru u IT-u.
Što je DevOps
Iako ne postoji jedinstvena definicija, smatram da je DevOps tehnološka struktura koja omogućuje suradnju između timova za razvoj i operativne timove za brže implementiranje koda u proizvodnim okruzima s mogućnostima ponavljanja i automatizacije. Ostatak članka uložiti ćemo u razlaganje ove tvrdnje.
Riječ 'DevOps' je spoj riječi 'razvoj' (development) i 'operacije' (operations). DevOps pomaže povećati brzinu isporuke aplikacija i usluga. Omogućuje organizacijama da učinkovito opslužuju svoje klijente i postanu konkurentnije na tržištu. Jednostavno rečeno, DevOps je usklađenost između razvoja i IT operacija s učinkovitijom interakcijom i suradnjom.
DevOps podrazumijeva kulturu u kojoj je suradnja između timova za razvoj, operatere i poslovne timove smatrana kritičnim aspektom. Radi se ne samo o alatima, jer DevOps u organizaciji kontinuirano donosi korist i klijentima. Alati su jedan od njegovih stupova, uz ljude i procese. DevOps povećava mogućnosti organizacija za pružanje visokokvalitetnih rješenja u najkraćem mogućem roku. Također, DevOps automatizira sve procese, od izrade do implementacije aplikacije ili proizvoda.
Rasprava o DevOpsu fokusira se na odnose između developera, ljudi koji pišu softver za život, i operatera, koji su odgovorni za održavanje tog softvera.
Izazovi za tim developera
Developeri obično s entuzijazmom i željom primjenjuju nove pristupe i tehnologije za rješavanje problema organizacija. Međutim, također se susreću s određenim izazovima:
- Konkurentno tržište stvara veliki pritisak za pravovremenu isporuku proizvoda.
- Oni trebaju brinuti o upravljanju kodom spremnim za proizvodnju i implementaciji novih mogućnosti.
- Ciklus isporuke može biti dug, pa programerskom timu često trebaju napraviti nekoliko pretpostavki prije nego što implementiraju aplikacije. U takvim scenarijima potrebna su veća vremenska ograničenja za rješavanje problema koji se javljaju tijekom implementacije u proizvodnom ili testnom okruženju.
Problemi s kojima se suočava operativna grupa
Operativne grupe povijesno su usmjerene na stabilnost i pouzdanost IT usluga. Zbog toga se operativne ekipe bave traženjem stabilnosti kroz izmjene resursa, tehnologija ili pristupa. Njihovi zadaci uključuju:
- Upravljanje distribucijom resursa kako raste potražnja.
- Obrada izmjena u dizajnu ili postavkama potrebnim za primjenu u proizvodnom okruženju.
- Dijagnosticiranje i rješavanje problema vezanih uz proizvodnju nakon samostalnog implementiranja aplikacija.
Kako DevOps rješava probleme razvoja i operacija
Umjesto da odjednom izbacuju veliki broj funkcionalnosti aplikacije, tvrtke nastoje otkriti mogu li implementirati manji broj funkcionalnosti za svoje korisnike kroz niz iteracija izdanja. Ovaj pristup ima niz prednosti, poput boljeg kvaliteta softvera, brže povratne informacije od korisnika itd. To, zauzvrat, osigurava visoku razinu zadovoljstva korisnika. Da bi postigli ove ciljeve, od tvrtki se zahtijeva:
- Smanjiti postotak neuspjeha prilikom izbacivanja novih izdanja
- Povećati učestalost implementacije
- Postići brže prosječno vrijeme oporavka u slučaju izlaska novog izdanja aplikacije.
- Smanjiti vrijeme za popravke
DevOps obavlja sve te zadatke i pomaže osigurati neometanu isporuku. Organizacije koriste DevOps kako bi postigle razine performansi koje su još nekoliko godina bile nezamislive. Izvode desetke, stotine, pa čak i tisuće implementacija dnevno, osiguravajući pritom pouzdanost, stabilnost i sigurnost svjetske klase. i njihovom utjecaju na isporuku softvera).
DevOps nastoji riješiti različite probleme koji nastaju kao rezultat primjene prošlih metodologija, uključujući:
- Isolacija rada timova za razvoj i operacije
- Testiranje i implementacija kao odvojene faze koje se izvršavaju nakon dizajniranja i izrade, a koje zahtijevaju više vremena od ciklusa izrade.
- Pretjerani gubici vremena na testiranje, implementaciju i dizajn umjesto fokusiranja na stvaranje osnovnih poslovnih usluga
- Ručno implementiranje koda, što dovodi do grešaka u proizvodnji
- Razlika u rasporedima rada timova za razvoj i operacije, što dovodi do dodatnih kašnjenja

Sukobi između DevOpsa, Agilea i tradicionalnog IT-a
DevOps se često diskutira u vezi s drugim IT praksama, posebno s agilnim i vodopadnim IT infrastruktura.
Agile je skup principa, vrijednosti i metoda za proizvodnju softvera. Na primjer, ako imate ideju koju želite pretvoriti u softver, možete koristiti principe i vrijednosti Agilea. No, taj softver može raditi samo u razvojnom ili testnom okruženju. Potreban vam je jednostavan i siguran način za brzo i visoko ponavljivo premještanje softvera u proizvodno okruženje, a put vodi kroz alate i metode DevOpsa. Agile metodologija razvoja softvera fokusira se na procese razvoja, dok DevOps preuzima odgovornost za razvoj i implementaciju – na najsigurniji i najpouzdaniji način.
Usporedba tradicionalnog vodopadnog modela s DevOpsom dobar je način za razumijevanje prednosti koje DevOps donosi. U sljedećem primjeru pretpostavlja se da će aplikacija biti pokrenuta za četiri tjedna, da je razvoj završen 85%, aplikacija će biti pokrenuta, a proces nabavke poslužitelja za slanje koda tek je započet.
Tradicionalni procesi
Procesi u DevOpsu
Nakon narudžbe novih poslužitelja, tim za razvoj radi na testiranju. Operativna grupa radi na opsežnoj dokumentaciji potrebnoj u poduzećima za implementaciju infrastrukture.
Nakon narudžbe novih servera, timovi programera i operatora zajednički rade na procesima i dokumentaciji za instalaciju novih servera. To omogućava bolje razumijevanje infrastrukturnih zahtjeva.
Informacije o oporavku od neuspjeha, redundanciji, lokacijama data centara i zahtjevima za pohranu su iskrivljene jer nedostaju ulazni podaci od tima programera koji posjeduje dubinsko znanje o primjeni.
Detaljne informacije o prevladavanju neuspjeha, redundanciji, oporavku u slučaju neuspjeha, lokacijama data centara i zahtjevima za pohranu su poznate i točne zahvaljujući doprinosu tima programera.
Operativna grupa nema predstavu o progresu tima programera. Također razvijaju plan praćenja na temelju vlastitih shvaćanja.
Operativna grupa je potpuno obaviještena o napretku koji je postigao tim programera. Oni također surađuju s timom programera i zajednički razvijaju plan praćenja koji zadovoljava IT i poslovne potrebe. Također koriste alate za praćenje performansi aplikacija (APM).
Opterećenje testa provedenog prije lansiranja aplikacije uzrokuje kvar aplikacije, što odgađa njegovo pokretanje.
Opterećenje testa provedenog prije lansiranja aplikacije dovodi do smanjenja performansi. Tim programera brzo rješava uska grla, a aplikacija se pokreće na vrijeme.
Životni ciklus DevOps
DevOps podrazumijeva usvajanje određenih općeprihvaćenih praksi.
Kontinuirano planiranje
Kontinuirano planiranje oslanja se na principe lean-a, kako bi se započelo s malim, utvrdilo resurse i rezultate potrebne za provjeru poslovne vrijednosti ili vizije, stalnu adaptaciju, mjerenje napretka, istraživanje potreba kupaca, promjenu smjera kada je potrebno uzimajući u obzir agilnost, te ažuriranje poslovnog plana.
Zajednički razvoj
Proces zajedničkog razvoja omogućava poslovanju, timovima programera i timovima testera, raspoređenim po različitim vremenskim zonama, kontinuirano isporučivanje kvalitetnog softvera. Uključuje višestruku platformu, podršku za programiranje na različitim jezicima, stvaranje korisničkih priča, razvoj ideja i upravljanje životnim ciklusom. Zajednički razvoj uključuje proces i praksu kontinuirane integracije, što potiče učestalu integraciju koda i automatsko kreiranje. Uz učestalu implementaciju koda u aplikaciju, problemi integracije se otkrivaju u ranim fazama životnog ciklusa (kada ih je lakše ispraviti), a opći trud oko integracije se smanjuje zahvaljujući kontinuiranoj povratnoj informaciji, dok projekat pokazuje stalan i jasan napredak.
Kontinuirano testiranje
Kontinuirano testiranje smanjuje troškove testiranja, pomažući timovima programera da uravnoteže brzinu i kvalitet. Također eliminiše uska grla u testiranju zahvaljujući virtualizaciji usluga i pojednostavljuje kreiranje virtualiziranih testnih okruženja koja se mogu lako dijeliti, implementirati i ažurirati kako se sistemi mijenjaju. Te mogućnosti smanjuju troškove za inicijalizaciju i održavanje testnih okruženja, kao i smanjuju vrijeme testnog ciklusa, omogućavajući integracijsko testiranje u ranim fazama životnog ciklusa.
Kontinuirano izdavanje i implementacija
Ove metodologije donose jednu od osnovnih praksi: kontinuirano izdavanje i implementaciju. Ovo obezbjeđuje kontinuirani cjevovod koji automatizuje ključne procese. Smanjuje broj ručnih operacija, vrijeme čekanja resursa i obim prepravki, omogućavajući implementaciju jednim pritiskom na dugme, što osigurava veći broj izdanja, smanjenje broja grešaka i potpunu transparentnost.
Automatizacija igra ključnu ulogu u osiguravanju stabilnog i pouzdanog izdanja softvera. Jedan od najvažnijih zadataka je preuzeti manualne procese, kao što su izgradnja, regresija, raspodjela i stvaranje infrastrukture, i automatizirati ih. Za to je potrebno upravljanje verzijama izvornog koda; skripte za testiranje i raspodjelu; podaci o infrastrukturi i konfiguraciji aplikacija; kao i biblioteke i paketi od kojih aplikacija ovisi. Još jedan važan faktor je mogućnost uvida u stanje svih okruženja.
Kontinuirano praćenje
Kontinuirano praćenje omogućuje generiranje izvještaja na razini poduzeća, koji pomažu timovima programera da razumiju dostupnost i performanse aplikacija u proizvodnom okruženju još prije nego što budu raspoređene u produkciju. Rano povratne informacije koje osigurava kontinuirano praćenje ključne su za smanjenje troškova grešaka i pravilno upravljanje projektima. Ova praksa često uključuje alate za nadzor koji obično otkrivaju pokazatelje povezane s performansama aplikacija.
Neprekidna povratna informacija i optimizacija
Kontinuirana povratna informacija i optimizacija pružaju vizualni prikaz toka kupaca i točno određuju problematična mjesta. Povratne informacije mogu biti uključene kako u preprodajnoj, tako i u postprodukcijskoj fazi kako bi se maksimizirao vrijednost i osigurala uspješna realizacija još većeg broja transakcija. Sve to osigurava trenutno vizualiziranje uzroka problema kupaca, koji utječu na njihovo ponašanje i utjecaj na poslovanje.

Prednosti DevOpsa
DevOps može doprinijeti stvaranju okruženja u kojem programeri i operateri rade kao jedan tim na postizanju zajedničkih ciljeva. Važna prekretnica u ovom procesu je implementacija kontinuirane integracije i kontinuirane isporuke (CI/CD). Ove metode omogućuju timovima brže izlazak softvera na tržište s manjim brojem grešaka.
Važne prednosti DevOpsa su:
- Predvidljivost: DevOps nudi znatno nižu učestalost kvarova pri izdavanju novih verzija.
- Održavanje: DevOps osigurava jednostavno obnavljanje u slučaju kvara nove verzije ili isključenja aplikacije.
- Reproduktivnost: Sustav kontrole verzija građenja ili koda omogućuje vraćanje na ranije verzije po potrebi.
- Veća kvaliteta: Rješavanje problema s infrastrukturom poboljšava kvalitetu razvoja aplikacija.
- Vrijeme izlaska na tržište: Optimizacija isporuke softvera smanjuje vrijeme izlaska na tržište za 50%.
- Smanjenje rizika: Osiguranje sigurnosti u životnom ciklusu softvera smanjuje broj nedostataka tijekom cijelog životnog ciklusa.
- Ekonomičnost: Težnja ka ekonomičnosti u razvoju softvera odgovara višem rukovodstvu.
- Otpornost: Softverski sustav je stabilniji, sigurniji, a promjene se mogu provjeravati.
- Veća baza koda se dijeli na upravljive dijelove: DevOps se temelji na fleksibilnim razvojnim metodama koje omogućuju dijeljenje velike baze koda na manje i upravljive dijelove.
Principi DevOps
Usvajanje DevOps-a stvorilo je nekoliko principa koji su se razvijali (i nastavljaju se razvijati). Većina dobavljača rješenja razvila je svoje vlastite modifikacije različitih metodologija. Svi ovi principi temelje se na cjelovitom pristupu DevOps-u, i organizacije svih veličina mogu ih koristiti.
Razvijajte i testirajte u okruženju sličnom proizvodnom
Suština je omogućiti timovima razvijača i stručnjaka za kontrolu kvalitete (QA) da razvijaju i testiraju sustave koji se ponašaju kao proizvodni sustavi, tako da mogu vidjeti kako aplikacija djeluje i radi dugo prije nego što bude spremna za implementaciju.
Aplikacija bi trebala biti povezana s proizvodnim sustavima što je prije moguće tijekom životnog ciklusa kako bi se riješila tri glavna potencijalna problema. Prvo, to omogućuje testiranje aplikacije u okruženju koje je blisko stvarnom. Drugo, to omogućuje testiranje i provjeru procesa isporuke aplikacije unaprijed. Treće, to omogućuje operativnom timu da na ranoj fazi životnog ciklusa provjeri kako će se njihovo okruženje ponašati kada se aplikacije implementiraju, omogućujeći im tako da stvore fino podešeno, aplikacijama orijentirano okruženje.
Implementacija s ponovljivim, pouzdanim procesima
Ova načela omogućuju timovima programera i operatera održavanje fleksibilnih procesa razvoja softvera tijekom cijelog životnog ciklusa. Automatizacija je ključna za stvaranje iterativnih, pouzdanih i ponovljivih procesa. Stoga organizacija mora stvoriti CI/CD cjevovod koji osigurava kontinuiranu automatiziranu implementaciju i testiranje. Česta implementacija također omogućuje timovima testiranje procesa implementacije, smanjujući tako rizik od pogrešaka tijekom stvarnih izdanja.
Praćenje i provjera kvalitete rada
Organizacije su dobre u praćenju aplikacija u proizvodnji jer imaju alate koji prate metrike i ključne pokazatelje izvedbe (KPI) u stvarnom vremenu. Ova načela donose praćenje na rane faze životnog ciklusa, jamčeći da automatizirano testiranje prati funkcionalne i nefunkcionalne atribute aplikacije tijekom rane faze procesa. Kada god se aplikacija testira i implementira, pokazatelji kvalitete trebaju se proučiti i analizirati. Alati za praćenje osiguravaju brzo upozorenje o problemima povezanima s operacijama i kvalitetom koji se mogu pojaviti tijekom proizvodnje. Ove metrike trebaju se prikupljati u formatu koji je dostupan i razumljiv svim dionicima.
Unapređenje ciklusa povratnih informacija
Jedan od ciljeva DevOps procesa je omogućiti organizacijama brže reagiranje i implementaciju promjena. U isporuci softvera, taj cilj zahtijeva da organizacija dobije povratne informacije u ranoj fazi te brzo uči iz svake poduzete mjere. Ova načela nalažu organizacijama da uspostave komunikacijske kanale koji omogućuju dionicima pristup i interakciju temeljem povratnih informacija. Razvoj može uključivati prilagodbu planova ili prioriteta. Proizvodnja može djelovati poboljšanjem proizvodnog okruženja.
Dev
- Planiranje: Kanboard, Wekan i druge alternative Trellu; GitLab, Tuleap, Redmine i druge alternative JIRA; Mattermost, Roit.im, IRC i druge alternative Slacku.
- Pisanje koda: Git, Gerrit, Bugzilla; Jenkins i drugi alati s otvorenim kodom za CI/CD.
- Izgradnja: Apache Maven, Gradle, Apache Ant, Packer.
- Testovi: JUnit, Cucumber, Selenium, Apache JMeter.
Ops
- Izdavanje, implementacija, operacije: Kubernetes, Nomad, Jenkins, Zuul, Spinnaker, Ansible, Apache ZooKeeper, etcd, Netflix Archaius, Terraform.
- Monitoring: Grafana, Prometheus, Nagios, InfluxDB, Fluentd i drugi alati obuhvaćeni u ovom priručniku.
(* Alati za operacije su numerirani redoslijedom korištenja od strane operativnih timova, no njihov alat se preklapa sa fazama životnog ciklusa alata za izdavanje i implementaciju. Radi lakšeg čitanja, numeracija je uklonjena.)
Za kraj
DevOps je sve popularnija metodologija čiji je cilj povezati programere i operatore u jedno. Ona je jedinstvena, razlikuje se od tradicionalnih IT operacija i dopunjuje Agile (ali nije jednako fleksibilna).

Saznajte detalje o tome kako steći traženu profesiju od nule ili unaprijediti svoje vještine i plaću pohađanjem plaćenih online tečajeva SkillFactory:
- (12 mjeseci)
više tečajeva
- (12 tjedana)
- (12 mjeseci)
- (9 mjeseci)
- (9 mjeseci)
Koristan
Izvor: habr.com
