Aká je dôležitosť DevOps, čo znamená pre IT odborníkov, popis metód, rámcov a nástrojov.

Odvtedy, čo sa termín DevOps etabloval v IT svete, sa toho veľa udialo. Vzhľadom na to, že väčšina ekosystému má otvorený zdrojový kód, je dôležité preskúmať, prečo to začalo a čo to znamená pre kariéru v IT.
Čo je DevOps
Hoci neexistuje jediné definovanie, myslím si, že DevOps je technologická štruktúra, ktorá zabezpečuje interakciu medzi tímami vývojárov a prevádzkovými tímami na rýchlejšie nasadenie kódu v produkčných prostrediach s možnosťou opakovania činností a automatizácie. Zvyšok článku strávime rozbaľovaním tohto tvrdenia.
Slovo „DevOps“ je kombináciou slov „vývoj“ (development) a „operácie“ (operations). DevOps pomáha zvýšiť rýchlosť dodávania aplikácií a služieb. Umožňuje organizáciám efektívne obsluhovať svojich zákazníkov a stať sa konkurencieschopnejšími na trhu. Jednoducho povedané, DevOps znamená súlad medzi vývojom a IT operáciami s efektívnejšou interakciou a spoluprácou.
DevOps predpokladá takú kultúru, v ktorej je spolupráca medzi tímami vývojárov, operátormi a obchodnými tímami považovaná za kriticky dôležitý aspekt. Nejde len o nástroje, pretože DevOps v organizácii neustále prináša prospech aj zákazníkom. Nástroje sú jedným z jeho pilierov, spolu s ľuďmi a procesmi. DevOps zvyšuje možnosti organizácií poskytovať kvalitné riešenia v najkratšom možnom čase. Taktiež DevOps automatizuje všetky procesy, od zostavovania po nasadenie aplikácie alebo produktu.
Diskusia o DevOps sa sústreďuje na vzťahy medzi vývojármi, ľuďmi, ktorí píšu softvér pre život, a operátormi, ktorí sú zodpovední za jeho podporu.
Výzvy pre tím vývojárov
Vývojári zvyčajne s nadšením a ochotou zavádzajú nové prístupy a technológie na riešenie problémov organizácií. Avšak čelí aj určitým problémom:
- Konkurentný trh vytvára veľký tlak na včasné dodanie produktu.
- Musí sa starať o riadenie kódu pripraveného na produkciu a zavádzanie nových funkcií.
- Cykly vydania môžu byť dlhé, a preto musí tím vývojárov robiť niekoľko predpokladov pred zavedením aplikácií. V takýchto scenároch je potrebný väčší časový rezerv, aby sa vyriešili problémy, ktoré sa objavia počas nasadenia do výrobného alebo testovacieho prostredia.
Problémy, ktorým čelí prevádzková skupina
Prevádzkové skupiny sú historicky orientované na stabilitu a spoľahlivosť IT služieb. Preto sa prevádzkové tímy snažia dosiahnuť stabilitu prostredníctvom zmien v prostriedkoch, technológiách alebo prístupoch. Ich úlohy zahŕňajú:
- Správa rozdeľovania prostriedkov v súvislosti s rastúcim dopytom.
- Spracovanie zmien v dizajne alebo konfiguráciách potrebných na uplatnenie v výrobných podmienkach.
- Diagnostika a riešenie problémov súvisiacich s výrobou po nainštalovaní aplikácií.
Ako DevOps rieši problémy vývoja a operácií
Namiesto toho, aby zavádzali veľké množstvo funkcií aplikácie naraz, sa spoločnosti snažia zistiť, či môžu nasadiť malé množstvo funkcií pre svojich klientov prostredníctvom série iterácií vydania. Tento prístup má niekoľko výhod, ako sú lepšia kvalita softvéru, rýchlejšia spätná väzba od klientov atď. To na oplátku zabezpečuje vysokú úroveň zákazníckej spokojnosti. Na dosiahnutie týchto cieľov musia spoločnosti:
- Znížiť percento chýb pri vydaní nových verzií
- Zvýšiť frekvenciu nasadenia
- Dosiahnuť rýchlejšiu priemernú dobu obnovy v prípade novej verzie aplikácie.
- Skraťte čas na opravy
DevOps plní všetky tieto úlohy a pomáha zabezpečiť nepretržité dodávanie. Organizácie používajú DevOps na dosiahnutie takých úrovní výkonnosti, ktoré pred niekoľkými rokmi boli nemysliteľné. Uskutočňujú desiatky, stovky a dokonca tisíce nasadení denne, pričom zabezpečujú spoľahlivosť, stabilitu a bezpečnosť svetovej triedy. a ich vplyve na dodávku softvéru).
DevOps sa snaží vyriešiť rôzne problémy, ktoré vyplývajú z aplikácie metodológií z minulosti, medzi inými:
- Izolovanosť práce tímov vývojárov a operátorov
- Testovanie a nasadzovanie ako samostatné fázy uskutočňované po návrhu a zostavení, pričom si vyžadujú viac času ako cykly zostavovania.
- Prebytočné časové nároky na testovanie, nasadzovanie a návrh namiesto zamerania na vytváranie základných obchodných služieb
- Manuálne nasadzovanie kódu, ktoré vedie k chybám v produkcii
- Rozdiely v rozvrhoch práce tímov pre vývoj a operácie, čo vedie k dodatočným oneskoreniam

Konflikt medzi DevOps, Agile a tradičným IT
DevOps sa často diskutuje v súvislosti s inými IT praktikami, najmä s agilnou a vodopádovou IT infraštruktúrou.
Agile je súbor princípov, hodnôt a metód výroby softvéru. Napríklad ak máte myšlienku, ktorú chcete premeniť na softvér, môžete využiť princípy a hodnoty Agile. Ale tento softvér môže fungovať len v prostredí vývoja alebo testovania. Potrebujete jednoduchý a bezpečný spôsob, ako rýchlo a s vysokou opakovateľnosťou prenášať softvér do produkčného prostredia, a cesta vedie cez nástroje a metódy DevOps. Agilná metodológia vývoja softvéru sa sústreďuje na procesy vývoja, zatiaľ čo DevOps zodpovedá za vývoj a nasadenie – najbezpečnejším a najspoľahlivejším spôsobom.
Porovnanie tradičného vodopádového modelu s DevOps je dobrý spôsob, ako pochopiť výhody, ktoré DevOps prináša. V nasledujúcom príklade sa predpokladá, že aplikácia bude spustená o štyri týždne, vývoj je dokončený na 85%, aplikácia bude spustená a proces obstarávania serverov na odoslanie kódu sa práve začal.
Tradičné procesy
Procesy v DevOps
Po objednávke nových serverov tím vývojárov pracuje na testovaní. Prevádzková skupina sa zaoberá rozsiahlym dokumentovaním potrebným pre podniky na nasadenie infraštruktúry.
Po objednaní nových serverov spolupracujú vývojové a prevádzkové tímy na procesoch a dokumentácii pre inštaláciu nových serverov. To umožňuje lepšie pochopiť požiadavky na infraštruktúru.
Informácie o obnove po zlyhaní, redundancii, umiestnení dátových centier a požiadavkách na úložiská sú skreslené, pretože chýbajú vstupy od vývojového tímu, ktorý má hlboké znalosti v danej oblasti.
Podrobné informácie o prekonaní zlyhania, redundancii, havarijnom obnovení, umiestnení dátových centier a požiadavkách na úložiská sú známe a presné vďaka príspevku vývojového tímu.
Operačná skupina nemá prehľad o pokroku vývojového tímu. Rovnako vypracováva plán monitorovania na základe vlastných predstáv.
Operačná skupina je plne informovaná o pokroku, ktorý dosiahol vývojový tím. Taktiež komunikuje s vývojovým tímom a spoločne vypracovávajú plán monitorovania, ktorý spĺňa požiadavky IT a podnikania. Taktiež používajú nástroje na monitorovanie výkonnosti aplikácií (APM).
Zátěžový test vykonaný pred spustením aplikácie spôsobuje zlyhanie aplikácie, čo oneskoruje jej spustenie.
Zátěžový test vykonaný pred spustením aplikácie spôsobuje zníženie výkonu. Vývojový tím rýchlo odstraňuje úzke miesta a aplikácia sa spúšťa načas.
Životný cyklus DevOps
DevOps znamená prijatie určitých bežne akceptovaných praktík.
Nepravidelné plánovanie
Nepravidelné plánovanie sa opiera o princípy štíhlosti, aby sa začalo s malým, určením zdrojov a výsledkov potrebných na overenie hodnoty podnikania či vízie, neustálej adaptácie, merania pokroku, zisťovania potrieb zákazníkov, zmeny smeru, ak je to potrebné, s ohľadom na flexibilitu, ako aj na aktualizáciu podnikateľského plánu.
Spoločný rozvoj
Spolupráca pri vývoji umožňuje firmám, tímom vývojárov a tímom testerov, rozdeleným do rôznych časových pásiem, neustále dodávať kvalitný softvér. To zahŕňa multiplatformový vývoj, podporu programovania v rôznych jazykoch, vytváranie používateľských príbehov, rozvoj myšlienok a správu životného cyklu. Spolupráca pri vývoji zahŕňa proces a prax nepretržitej integrácie, čo prispieva k častej integrácii kódu a automatickému zostavovaniu. Pri častej implementácii kódu do aplikácie sa problémy s integráciou odhaľujú v počiatočných fázach životného cyklu (keď sa dajú ľahšie opraviť) a celkové úsilie o integráciu sa znižuje vďaka nepretržitej spätnej väzbe, pričom projekt predvádza neustály a jasný pokrok.
Neprerušené testovanie
Neprerušené testovanie znižuje náklady na testovanie, pomáha tímom vývojárov vyvážiť rýchlosť a kvalitu. Taktiež odstraňuje úzke miesta v testovaní vďaka virtualizácii služieb a zjednodušuje vytváranie virtualizovaných testovacích prostredí, ktoré sa dajú ľahko zdieľať, nasadzovať a aktualizovať so zmenami systémov. Tieto možnosti znižujú náklady na inicializáciu a podporu testovacích prostredí, ako aj skracujú čas cyklu testovania, čo umožňuje vykonávať integračné testovanie v počiatočných fázach životného cyklu.
Neprerušené vydanie a nasadenie
Tieto metódy zavádzajú jednu z kľúčových praktík: neprerušené vydanie a nasadenie. Týmto sa zabezpečuje nepretržitý kanál, ktorý automatizuje kľúčové procesy. Znižuje počet ručných operácií, čas čakania na zdroje a objem prerábok, čo umožňuje nasadenie stlačením tlačidla, čo vedie k väčšiemu množstvu vydaní, zníženiu počtu chýb a úplnej transparentnosti.
Automatizácia zohráva kľúčovú úlohu v zabezpečení stabilného a spoľahlivého vydania softvéru. Jednou z najdôležitejších úloh je previesť ručné procesy, ako sú zostavenie, regresia, nasadenie a vytváranie infraštruktúry, na automatizované. Na to je potrebné spravovanie verzií zdrojového kódu; skripty na testovanie a nasadenie; údaje o infraštruktúre a konfigurácii aplikácií; ako aj knižnice a balíky, od ktorých aplikácia závisí. Ďalším dôležitým faktorom je schopnosť zisťovať stav všetkých prostredí.
Nepretržité monitorovanie
Nepretržité monitorovanie zabezpečuje vytváranie reportov na firemnej úrovni, ktoré pomáhajú tímom vývojárov pochopiť dostupnosť a výkonnosť aplikácií v produkčnom prostredí ešte predtým, ako budú nasadené do výroby. Skorá spätná väzba, ktorú poskytuje nepretržité monitorovanie, je rozhodujúca pre zníženie nákladov na chyby a správu projektov správnym smerom. Táto prax zahŕňa nástroje na monitorovanie, ktoré zvyčajne odhaľujú ukazovatele súvisiace s výkonnosťou aplikácií.
Stála spätná väzba a optimalizácia
Nepretržitá spätná väzba a optimalizácia zabezpečujú vizuálne zobrazenie prúdu zákazníkov a presné určenie problémových miest. Spätná väzba môže byť zahrnutá ako v predajnej, tak aj v po-výrobnej fáze na maximalizáciu hodnoty a zabezpečenie úspešného dokončenia ešte väčšieho počtu transakcií. To všetko umožňuje okamžitú vizualizáciu primárnej príčiny problémov zákazníkov, ktoré ovplyvňujú ich správanie a vplyv na podnikanie.

Výhody DevOps
DevOps môže prispieť k vytvoreniu prostredia, v ktorom vývojári a operátori pracujú ako jeden tím na dosiahnutí spoločných cieľov. Dôležitým míľnikom v tomto procese je implementácia nepretržitej integrácie a nepretržitého dodávania (CI/CD). Tieto metódy umožnia tímom rýchlejšie uvádzať softvér na trh s menším počtom chýb.
Dôležitými výhodami DevOps sú:
- Predvídateľnosť: DevOps ponúka výrazne nižšiu frekvenciu chýb pri vydávaní nových verzií.
- Údržbovosť: DevOps umožňuje ľahké obnovenie v prípade porúch novej verzie alebo vypnutia aplikácie.
- Reprodukovateľnosť: Systém správy verzií zostavenia alebo kódu umožňuje obnoviť staršie verzie podľa potreby.
- Vyššia kvalita: Riešenie problémov s infraštruktúrou zlepšuje kvalitu vývoja aplikácií.
- Čas uvedenia na trh: Optimalizácia dodávania softvéru skracuje čas uvedenia na trh o 50%.
- Zníženie rizika: Zabezpečenie v životnom cykle softvéru znižuje počet chýb počas celého životného cyklu.
- Hospodárnosť: Zameranie na hospodárnosť pri vývoji softvéru poteší vrcholové vedenie.
- Odolnosť: Softvérový systém je stabilnejší, bezpečnejší a zmeny je možné overiť.
- Väčší kód sa rozdeľuje na spravovateľné časti: DevOps je založený na flexibilných vývojových metódach, ktoré umožňujú rozdeliť veľký kód na menšie a spravovateľné časti.
Princípy DevOps
Prijatie DevOps viedlo k niekoľkým princípom, ktoré sa vyvíjali (a naďalej sa vyvíjajú). Väčšina dodávateľov riešení vyvinula svoje vlastné modifikácie rôznych metód. Všetky tieto princípy sú založené na celostnom prístupe k DevOps a môžu ich využívať organizácie akýchkoľvek rozmerov.
Vyvíjajte a testujte v prostredí podobnom produkčnému
Podstatou je umožniť tímom vývojárov a špecialistom na kontrolu kvality (QA) vyvíjať a testovať systémy, ktoré sa správajú ako produkčné systémy, aby mohli vidieť, ako sa aplikácia správa a funguje dlho predtým, ako bude pripravená na nasadenie.
Aplikácia by mala byť pripojená k produkčným systémom čo najskôr počas životného cyklu na riešenie troch hlavných potenciálnych problémov. Po prvé, to umožňuje testovať aplikáciu v prostredí, ktoré je blízke reálnemu prostrediu. Po druhé, to umožňuje testovať a overovať procesy dodávania aplikácie vopred. Po tretie, to umožňuje operačnému tímu v skorých fázach životného cyklu preveriť, ako sa ich prostredie bude správať, keď budú aplikácie nasadené, čím im to umožní vytvoriť jemne prispôsobené, na aplikácie zamerané prostredie.
Nasadenie s reprodukovateľnými, spoľahlivými procesmi
Tento princíp umožňuje tímom vývojárov a operátorov udržiavať flexibilné procesy vývoja softvéru počas celého životného cyklu. Automatizácia je kľúčová pre vytváranie iteratívnych, spoľahlivých a reprodukovateľných procesov. Preto by organizácia mala vytvoriť dodávkový kanál, ktorý zabezpečuje kontinuálne automatizované nasadenie a testovanie. Časté nasadenie tiež umožňuje tímom testovať procesy nasadenia, čím sa znižuje riziko zlyhania nasadenia počas skutočných vydaní.
Monitorovanie a overovanie kvality výkonu
Organizácie sú dobré v monitorovaní aplikácií v produkcii, pretože majú nástroje, ktoré zaznamenávajú metriky a kľúčové ukazovatele výkonu (KPI) v reálnom čase. Tento princíp prenáša monitorovanie do skorých fáz životného cyklu, pričom zabezpečuje, že automatizované testovanie sleduje funkčné a nefunkčné atribúty aplikácie v prvých fázach procesu. Kedykoľvek je aplikácia testovaná a nasadená, kvalitatívne ukazovatele by mali byť preskúmané a analyzované. Nástroje monitorovania poskytujú včasné upozornenie na problémy týkajúce sa prevádzky a kvality, ktoré môžu vzniknúť počas výroby. Tieto metriky by mali byť zhromažďované v formáte, ktorý je prístupný a zrozumiteľný pre všetkých zainteresovaných strán.
Zlepšovanie cyklov spätnej väzby
Jedným z cieľov procesov DevOps je umožniť organizáciám rýchlejšie reagovať a uskutočňovať zmeny. Pri dodávaní softvéru si tento cieľ vyžaduje, aby organizácia získala spätnú väzbu už v počiatočných fázach a potom rýchlo sa učila z každého vykonaného kroku. Tento princíp vyžaduje, aby organizácie vytvárali komunikačné kanály, ktoré umožňujú zainteresovaným stranám prístup a interakciu na báze spätnej väzby. Vývoj môže nastať prispôsobením svojich projektových plánov alebo priorít. Prevádzka môže fungovať prostredníctvom zlepšovania výrobného prostredia.
Dev
- Plánovanie: Kanboard, Wekan a iné alternatívy Trello; GitLab, Tuleap, Redmine a iné alternatívy JIRA; Mattermost, Roit.im, IRC a iné alternatívy Slack.
- Písanie kódu: Git, Gerrit, Bugzilla; Jenkins a iné nástroje s otvoreným kódom pre CI/CD
- Súbor: Apache Maven, Gradle, Apache Ant, Packer
- Testy: JUnit, Cucumber, Selenium, Apache JMeter
Ops
- Vydanie, nasadenie, operácie: Kubernetes, Nomad, Jenkins, Zuul, Spinnaker, Ansible, Apache ZooKeeper, etcd, Netflix Archaius, Terraform
- Monitorovanie: Grafana, Prometheus, Nagios, InfluxDB, Fluentd a iné, pokryté v tomto sprievodcovi
(* Nástroje pre operácie boli očíslované podľa použitia prevádzkovými tímami, ale ich nástroje sa prelínajú so štádiami životného cyklu nástrojmi pre vydanie a nasadenie. Pre prehľadnosť bola číslovanie odstránené.)
Na záver
DevOps je stále populárnejšia metodológia, ktorej cieľom je spojiť vývojárov a operátorov do jedného celku. Je jedinečná, odlišuje sa od tradičných IT operácií a dopĺňa Agile (nie je však tak flexibilná).

Zistite podrobnosti, ako získať požadovanú profesiu od nuly alebo si zlepšite zručnosti a plat absolvovaním platených online kurzov SkillFactory:
- (12 mesiacov)
ďalšie kurzy
- (12 týždňov)
- (12 mesiacov)
- (9 mesiacov)
- (9 mesiacov)
Užitočné
Zdroj: habr.com
