Kaj je pomembnost DevOps, kaj to pomeni za IT strokovnjake, opis metod, okvirov in orodij.

Od takrat, ko se je termin DevOps uveljavil v IT svetu, se je zgodilo veliko stvari. Glede na to, da ima velika večina ekosistema odprtokodno naravo, je pomembno preučiti, zakaj se je to začelo in kaj to pomeni za kariero v IT.
Что такое DevOps
Nihče ne more podati enega samega opisa, vendar menim, da je DevOps tehnološka struktura, ki omogoča interakcijo med razvojnimi ekipami in operativnimi ekipami za hitrejše uvajanje kode v proizvodne okolje z možnostjo ponavljanja in avtomatizacije. Preostanek članka bomo posvetili razčlenjevanju te izjave.
Beseda 'DevOps' je spoj besed 'razvoj' (development) in 'operacije' (operations). DevOps pomaga povečati hitrost dostave aplikacij in storitev. To omogoča organizacijam, da učinkovito oskrbujejo svoje stranke in postanejo bolj konkurenčne na trgu. Preprosto rečeno, DevOps je usklajenost med razvojem in IT-operacijami z učinkovitejšo interakcijo in sodelovanjem.
DevOps predpostavlja kulturo, kjer je sodelovanje med razvojnimi ekipami, operaterji in poslovnimi ekipami ključni vidik. Gre za več kot le orodja, saj DevOps v organizaciji stalno prinaša koristi tudi strankam. Orodja so ena izmed njegovih stebrov, skupaj z ljudmi in procesi. DevOps povečuje sposobnosti organizacij, da zagotavljajo visokokakovostne rešitve v čim krajšem času. Prav tako DevOps avtomatizira vse procese, od sestavljanja do uvajanja, aplikacije ali izdelka.
Razprava o DevOps se osredotoča na odnose med razvijalci, ljudmi, ki pišejo programsko opremo za preživetje, in operaterji, ki so odgovorni za podporo tej programski opremi.
Izzivi za razvijalsko ekipo
Razvijalci običajno z navdušenjem in željo uvajajo nove pristope in tehnologije za reševanje težav organizacij. Kljub temu se soočajo z nekaterimi izzivi:
- Konkurenčni trg ustvarja velik pritisk za pravočasno dostavo izdelka.
- Morajo se ukvarjati z upravljanjem kode, pripravljene za proizvodnjo, in uvajanjem novih funkcionalnosti.
- Cikel izdaje je lahko dolgotrajen, zato mora razvojna ekipa narediti več predpostavk pred uvajanjem aplikacij. V takšnih scenarijih je potrebno več dovoljenega časa za reševanje težav, ki se pojavijo med uvajanjem v proizvodnem ali testnem okolju.
Težave, s katerimi se sooča operativna ekipa
Operativne ekipe so zgodovinsko usmerjene v stabilnost in zanesljivost IT storitev. Zato se operativne ekipe trudijo doseči stabilnost s spremembami v virih, tehnologijah ali pristopih. Njihove naloge vključujejo:
- Upravljanje dodeljevanja virov ob rasti povpraševanja.
- Obdelava sprememb v oblikovanju ali nastavitvah, potrebnih za izvajanje v proizvodnem okolju.
- Diagnosticiranje in reševanje težav, povezanih s proizvodnjo, po samostojnem uvajanju aplikacij.
Kako DevOps rešuje težave med razvojem in delovanjem
Namesto da bi hkrati uvedli veliko funkcij aplikacije, si podjetja prizadevajo ugotoviti, ali lahko uvajajo majhno število funkcij za svoje stranke s serijo iteracij izdaje. Takšen pristop prinaša številne prednosti, kot so boljša kakovost programske opreme, hitrejši odziv strank itd. To pa zagotavlja visoko stopnjo zadovoljstva strank. Za dosego teh ciljev se od podjetij zahteva:
- Zmanjšati odstotek neuspešnih izidov pri novih različicah
- Povečati pogostost uvajanja
- Doseči hitrejši povprečni čas za obnovitev v primeru izida nove različice aplikacije.
- Zmanjšati čas za popravke
DevOps opravlja vse te naloge in pomaga zagotoviti nemoteno dobavo. Organizacije uporabljajo DevOps za dosego ravni uspešnosti, ki so bile pred nekaj leti nepredstavljive. Izvajajo na desetine, stotine in celo tisoče uvajanj dnevno, pri čemer zagotavljajo zanesljivost, stabilnost in varnost svetovne ravni. in njihovem vplivu na dobavo programske opreme).
DevOps se trudi rešiti različite probleme koji nastaju usled primene metodologija iz prošlosti, uključujući:
- Izolovanost rada timova za razvoj i operacije
- Testiranje i implementacija kao odvojene faze koje se sprovode nakon projektovanja i izrade, zahtevajući više vremena od ciklusa izrade.
- Prekomerna potrošnja vremena na testiranje, implementaciju i dizajn umesto fokusa na kreiranje osnovnih poslovnih usluga
- Ručno implementiranje koda koje dovodi do grešaka u produkciji
- Razlike u rasporedima rada timova za razvoj i operacije, što dovodi do dodatnih kašnjenja

Sukob između DevOps-a, Agile-a i tradicionalnog IT-a
DevOps se često razmatra u vezi sa drugim IT praksama, posebno sa agilnim i vodopadnim IT infrastrukturnim modelima.
Agile je skup principa, vrednosti i metoda proizvodnje softvera. Na primer, ako imate ideju koju želite da pretvorite u softver, možete iskoristiti principe i vrednosti Agile-a. Međutim, ovaj softver može raditi samo u okruženju za razvoj ili testiranje. Potreban vam je jednostavan i siguran način za brzo i dosledno prebacivanje softvera u produkciju, a to se postiže alatima i metodama DevOps-a. Agilna metodologija razvoja softvera fokusira se na procese razvoja, dok DevOps odgovara za razvoj i implementaciju na najsigurniji i najpouzdaniji način.
Upoređivanje tradicionalnog vodopadnog modela sa DevOps-om je dobar način da se razumeju prednosti koje DevOps pruža. U sledećem primeru pretpostavlja se da će aplikacija biti puštena za četiri nedelje, da je razvoj završen 85%, aplikacija će biti puštena, a proces nabavke servera za isporuku koda tek je započet.
Tradicionalni procesi
Procesi u DevOps-u
Nakon naručivanja novih servera, tim za razvoj radi na testiranju. Operativna grupa radi na obimnoj dokumentaciji potrebnoj u preduzećima za implementaciju infrastrukture.
Po oddaji naročila za nove strežnike ekipe razvijalcev in operaterjev skupaj delajo na procesih in dokumentaciji za namestitev novih strežnikov. To omogoča boljše razumevanje infrastrukturnih zahtev.
Informacije o obnovitvi po okvari, redundanci, lokacijah podatkovnih centrov in zahtevah za shranjevanje so popačene, saj manjkajo vhodni podatki ekipe razvijalcev, ki ima globoko znanje o uporabi.
Podrobne informacije o premagovanju okvar, redundanci, nujnem obnovitvenem procesu, lokacijah podatkovnih centrov in zahtevah za shranjevanje so znane in pravilne zahvaljujoč prispevku ekipe razvijalcev.
Operativna skupina nima vpogleda v napredek ekipe razvijalcev. Prav tako razvija načrt spremljanja na podlagi lastnih predpostavk.
Operativna skupina je popolnoma obveščena o napredku, ki ga je dosegla ekipa razvijalcev. Prav tako sodelujejo z ekipo razvijalcev in skupaj razvijajo načrt spremljanja, ki izpolnjuje IT in poslovne potrebe. Uporabljajo tudi orodja za spremljanje uspešnosti aplikacij (APM).
Obremenitveni test, ki se izvede pred zagon aplikacije, privede do okvare aplikacije, kar zamuja njen zagon.
Obremenitveni test, ki se izvede pred zagon aplikacije, privede do upada zmogljivosti. Ekipa razvijalcev hitro odpravi ozka grla, aplikacija pa se zažene pravočasno.
Življenjski cikel DevOps
DevOps vključuje sprejem nekaterih splošno sprejetih praks.
Neprekinjeno načrtovanje
Neprekinjeno načrtovanje se opira na načela vitkosti, da začne z malim, določi vire in rezultate, potrebne za preverjanje vrednosti poslovanja ali vizije, neprekinjeno prilagaja, meri napredek, raziskuje potrebe strank, spreminja smer po potrebi glede na agilnost, ter posodablja poslovni načrt.
Skupno razvijanje
Postopek skupinskega razvoja omogoča podjetjem, razvojnim ekipam in testnim ekipam, ki delujejo v različnih časovnih pasovih, neprekinjeno dostavo kakovostne programske opreme. Ta vključuje večplatformski razvoj, podporo programiranju v različnih jezikih, ustvarjanje uporabniških zgodb, snovanje idej in upravljanje življenjskega cikla. Skupinski razvoj zajema postopek in prakso neprekinjene integracije, kar spodbuja pogosto integracijo kode in samodejno sestavljanje. Pri pogosti implementaciji kode v aplikacijo se težave pri integraciji odkrijejo že v zgodnjih fazah življenjskega cikla (ko jih je lažje popraviti), skupni napori pri integraciji pa se zmanjšujejo zahvaljujoč neprekinjeni povratni informaciji, saj projekt prikazuje neprekinjen in bolj pregleden napredek.
Neprekinjeno testiranje
Neprekinjeno testiranje znižuje stroške testiranja, pomaga razvojnim ekipam uravnotežiti hitrost in kakovost. Odpravlja tudi ozka grla pri testiranju z virtualizacijo storitev ter poenostavlja ustvarjanje virtualiziranih testnih okolij, ki jih je mogoče enostavno deliti, namestiti in posodabljati, ko se sistemi spreminjajo. Te zmožnosti zmanjšujejo stroške za uvajanje in vzdrževanje testnih okolij ter skrajšajo časovni cikel testiranja, kar omogoča izvajanje integracijskega testiranja v zgodnjih fazah življenjskega cikla.
Neprekinjeno izdajanje in uvajanje
Te metodologije prinašajo eno od osnovnih praks: neprekinjeno izdajanje in uvajanje. To omogoča neprekinjen dejavnik, ki avtomatizira ključne procese. Zmanjšuje število ročnih operacij, čas čakanja na vire in obseg popravil, kar omogoča uvajanje s pritiskom na gumb, kar zagotavlja več izdaj, zmanjšanje števila napak in popolno preglednost.
Avtomatizacija igra ključno vlogo pri zagotavljanju stabilne in zanesljive izdaje programske opreme. Ena od najpomembnejših nalog je prevzem ročnih procesov, kot so sestavljanje, regresija, uvajanje in ustvarjanje infrastrukture, ter njihova avtomatizacija. To zahteva nadzor različic izvorne kode; scenarije testiranja in uvajanja; podatke o infrastrukturi in konfiguraciji aplikacij; ter knjižnice in pakete, od katerih je odvisna aplikacija. Še en pomemben dejavnik je sposobnost zahtevati stanje vseh okolij.
Neprekinjeno spremljanje
Neprekinjeno spremljanje zagotavlja oblikovanje poročil na ravni podjetja, ki pomagajo razvojnim ekipam razumeti razpoložljivost in zmogljivost aplikacij v proizvodnem okolju še preden so te uvajene v proizvodnjo. Zgodnja povratna informacija, ki jo zagotavlja neprekinjeno spremljanje, je odločilnega pomena za zmanjšanje stroškov napak in usmerjanje projektov v pravo smer. Ta praksa pogosto vključuje orodja za opazovanje, ki običajno razkrivajo kazalnike, povezane z zmogljivostjo aplikacij.
Stalna povratna informacija in optimizacija
Neprekinjena povratna informacija in optimizacija zagotavljata vizualno predstavo poteka kupcev in natančna določila problematičnih mest. Povratne informacije je mogoče vključiti tako v predprodajnih kot tudi v postprodukcijskih fazah, da maksimizirajo vrednost in zagotavljajo uspešno zaključitev še več transakcij. Vse to omogoča takojšnjo vizualizacijo prvotnega vzroka težav kupcev, ki vplivajo na njihovo obnašanje in posledično na poslovanje.

Prednosti DevOps
DevOps lahko spodbuja ustvarjanje okolja, v katerem razvijalci in operaterji delujejo kot ena ekipa za dosego skupnih ciljev. Pomemben mejniki v tem procesu je uvedba neprekinjene integracije in neprekinjenega dostavljanja (CI/CD). Te metode bodo ekipam omogočile hitrejše trženje programske opreme z manj napakami.
Pomembne prednosti DevOps so:
- Predvidljivost: DevOps nudi znatno nižu učestalost kvarova prilikom izdavanja novih verzija.
- Održavanje: DevOps omogućava lako oporavak u slučaju kvara nove verzije ili isključenja aplikacije.
- Reprodukcija: Sistem kontrole verzija za gradnju ili kod omogućava vraćanje ranijih verzija po potrebi.
- Viši kvalitet: Rešavanje infrastrukturnih problema poboljšava kvalitet razvoja aplikacija.
- Vreme izlaska na tržište: Optimizacija isporuke softvera smanjuje vreme izlaska na tržište za 50%.
- Smanjenje rizika: Osiguranje sigurnosti tokom životnog ciklusa softvera smanjuje broj grešaka tokom celog životnog ciklusa.
- Ekonomičnost: Težnja ka ekonomičnosti prilikom razvoja softvera dopada se višem menadžmentu.
- Otpornost: Softverski sistem je stabilniji, sigurniji, a promene se mogu testirati.
- Veći kodni osnov se deli na upravljive delove: DevOps se zasniva na agilnim razvojnim metodama koje omogućavaju deljenje većeg kodnog osnova na manje i upravljive delove.
Principi DevOps-a
Usvajanje DevOps-a je iznelo nekoliko principa koji su evoluirali (i nastavljaju da evoluiraju). Većina pružatelja rešenja razvila je svoje modifikacije raznih metoda. Svi ti principi se zasnivaju na sveobuhvatnom pristupu DevOps-u, a organizacije svih veličina mogu ih koristiti.
Razvijajte i testirajte u okruženju sličnom produkciji
Suština je omogućiti timovima programera i stručnjacima za kontrolu kvaliteta (QA) da razvijaju i testiraju sisteme koji funkcionišu kao produkcijski sistemi, kako bi mogli da vide kako aplikacija reaguje i funkcioniše dugo pre nego što bude spremna za implementaciju.
Aplikacija mora biti povezana s produkcijskimi sistemi čim prej v življenjskem ciklu, da se rešijo tri glavne potencialne težave. Prvič, to omogoča testiranje aplikacije v okolju, ki je blizu realnemu. Drugič, to omogoča zgodnje testiranje in preverjanje procesov dostave aplikacije. Tretjič, to omogoča operativni ekipi, da preveri, kako se bo njihovo okolje obnašalo, ko bodo aplikacije nameščene, s čimer jim omogoča ustvarjanje natančno prilagojenega, aplikacijam usmerjenega okolja.
Namestitev z reproducibilnimi, zanesljivimi procesi
Ta princip omogoča razvojnikom in operaterjem vzdrževanje prilagodljivih procesov razvoja programske opreme skozi celoten življenjski cikel. Avtomatizacija je ključnega pomena za vzpostavitev iterativnih, zanesljivih in reproducibilnih procesov. Zato mora organizacija ustvariti dostavni trak, ki zagotavlja neprekinjeno avtomatizirano namestitev in testiranje. Pogosta namestitev tudi omogoča ekipam testiranje procesov namestitve, kar zmanjšuje tveganje za neuspehe namestitve med dejanskimi izdajami.
Nadzor in preverjanje kakovosti
Organizacije so dobre pri nadzoru aplikacij v produkciji, ker imajo orodja, ki beležijo metrike in ključne kazalnike uspešnosti (KPI) v realnem času. Ta princip prenaša nadzor na zgodnje faze življenjskega cikla, kar zagotavlja, da avtomatizirano testiranje spremlja funkcionalne in nefunkcionalne atribute aplikacije v zgodnjih fazah postopka. Kadarkoli je aplikacija testirana in nameščena, je treba preučiti in analizirati kazalnike kakovosti. Orodja za nadzor zagotavljajo zgodnje opozarjanje na težave, povezane z delovanjem in kakovostjo, ki se lahko pojavijo med proizvodnjo. Ti kazalniki morajo biti zbrani v obliki, dostopni in razumljivi vsem zainteresiranim stranem.
Izboljšanje povratnih krogov
Ena od ciljev procesov DevOps je, da organizacijam omogoči hitrejše odzivanje in uvajanje sprememb. Pri dobavi programske opreme ta cilj zahteva, da organizacija prejme povratne informacije že v zgodnji fazi in se nato hitro uči iz vsakega sprejetega koraka. Ta načelo zahteva od organizacij ustvarjanje komunikacijskih kanalov, ki omogočajo zainteresiranim stranem dostop in interakcijo v povratni informaciji. Razvoj lahko poteka z prilagajanjem njihovih projektnih načrtov ali prioritet. Proizvodnja lahko deluje z izboljšanjem proizvodnega okolja.
Dev
- Načrtovanje: Kanboard, Wekan in druge alternative Trello; GitLab, Tuleap, Redmine in druge alternative JIRA; Mattermost, Roit.im, IRC in druge alternative Slack.
- Pisanje kode: Git, Gerrit, Bugzilla; Jenkins in druga orodja z odprto kodo za CI/CD
- Zbiranje: Apache Maven, Gradle, Apache Ant, Packer
- Testi: JUnit, Cucumber, Selenium, Apache JMeter
Ops
- Izdaja, izvajanje, operacije: Kubernetes, Nomad, Jenkins, Zuul, Spinnaker, Ansible, Apache ZooKeeper, etcd, Netflix Archaius, Terraform
- Nadzor: Grafana, Prometheus, Nagios, InfluxDB, Fluentd in drugi, pokriti v tem priročniku
(* Orodja za operacije so bila oštevilčena v vrstnem redu uporabe s strani operativnih ekip, vendar se njihov nabor prekriva s fazami življenjskega cikla orodij za izdajo in izvajanje. Za lažje branje je bilo oštevilčenje odstranjeno.)
Na záver
DevOps je vse bolj priljubljena metodologija, katere cilj je združiti razvijalce in operaterje v enoto. Je edinstvena, se razlikuje od tradicionalnih IT-operacij in dopolnjuje Agile (vendar ni tako fleksibilna).

Izvedite podrobnosti, kako pridobiti iskano poklicno usposabljanje od začetka ali nadgraditi svoje spretnosti in plačo s plačljivimi spletnimi tečaji SkillFactory:
- (12 mesecev)
še tečaji
- (12 tednov)
- (12 mesecev)
- (9 mesecev)
- (9 mesecev)
Koristno
Izvor: habr.com
