Sprievodca DevOps pre začiatočníkov

Aký je význam DevOps, čo znamená pre IT profesionálov, popis metód, frameworkov a nástrojov.

Sprievodca DevOps pre začiatočníkov

Odkedy sa pojem DevOps udomácnil vo svete IT, udialo sa toho veľa. Vzhľadom na veľkú časť ekosystému s otvoreným zdrojom je dôležité prehodnotiť, prečo to začalo a čo to znamená pre kariéru v IT.

Čo je DevOps

Aj keď neexistuje jednotná definícia, verím, že DevOps je technologický rámec, ktorý umožňuje spoluprácu medzi vývojovými a prevádzkovými tímami rýchlejšie nasadzovať kód do produkčných prostredí s možnosťou iterácie a automatizácie. Zvyšok tohto článku strávime rozbalením tohto tvrdenia.

Slovo „DevOps“ je kombináciou slov „vývoj“ a „prevádzka“. DevOps pomáha zvýšiť rýchlosť doručovania aplikácií a služieb. To umožňuje organizáciám efektívne slúžiť svojim zákazníkom a stať sa konkurencieschopnejšími na trhu. Jednoducho povedané, DevOps je zosúladením medzi vývojom a IT operáciami s efektívnejšou komunikáciou a spoluprácou.

DevOps zahŕňa kultúru, kde sa spolupráca medzi vývojovými, prevádzkovými a obchodnými tímami považuje za kritickú. Nie je to len o nástrojoch, pretože DevOps v organizácii neustále prináša výhody aj zákazníkom. Nástroje sú jedným z jeho pilierov spolu s ľuďmi a procesmi. DevOps zvyšuje schopnosť organizácií dodávať vysokokvalitné riešenia v čo najkratšom čase. DevOps tiež automatizuje všetky procesy, od zostavenia až po nasadenie, aplikáciu alebo produkt.

Diskusia DevOps sa zameriava na vzťah medzi vývojármi, ľuďmi, ktorí sa živia písaním softvéru, a operátormi zodpovednými za údržbu tohto softvéru.

Výzvy pre vývojový tím

Vývojári majú tendenciu byť nadšení a horliví implementovať nové prístupy a technológie na riešenie organizačných problémov. Čelia však aj určitým problémom:

  • Konkurenčný trh vytvára veľký tlak na dodanie produktu včas.
  • Musia sa postarať o správu kódu pripraveného na výrobu a zavádzanie nových funkcií.
  • Cyklus vydania môže byť dlhý, takže vývojový tím musí pred implementáciou aplikácií urobiť niekoľko predpokladov. V tomto scenári je potrebný dlhší čas na vyriešenie problémov, ktoré vzniknú počas nasadenia do produkčného alebo testovacieho prostredia.

Výzvy, ktorým čelí operačný tím

Prevádzkové tímy sa historicky zameriavali na stabilitu a spoľahlivosť IT služieb. Preto prevádzkové tímy hľadajú stabilitu prostredníctvom zmien zdrojov, technológií alebo prístupov. Medzi ich úlohy patrí:

  • Spravujte prideľovanie zdrojov podľa rastúceho dopytu.
  • Zvládnite zmeny dizajnu alebo prispôsobenia potrebné na použitie v produkčnom prostredí.
  • Diagnostikujte a riešte produkčné problémy po vlastnom nasadení aplikácií.

Ako DevOps rieši vývojové a prevádzkové problémy

Namiesto zavádzania veľkého počtu funkcií aplikácie naraz sa spoločnosti snažia zistiť, či môžu svojim zákazníkom zaviesť malý počet funkcií prostredníctvom série iterácií vydania. Tento prístup má množstvo výhod, ako je lepšia kvalita softvéru, rýchlejšia spätná väzba od zákazníkov atď. To zase zabezpečuje vysokú spokojnosť zákazníkov. Na dosiahnutie týchto cieľov sa od spoločností vyžaduje:

  • Znížte mieru zlyhania pri vydávaní nových vydaní
  • Zvýšte frekvenciu nasadenia
  • Dosiahnite rýchlejší priemerný čas obnovy v prípade vydania novej aplikácie.
  • Skráťte čas na opravy

DevOps vykonáva všetky tieto úlohy a pomáha zabezpečiť neprerušované doručovanie. Organizácie používajú DevOps na dosiahnutie úrovní produktivity, ktoré boli ešte pred niekoľkými rokmi nepredstaviteľné. Vykonávajú desiatky, stovky a dokonca tisíce nasadení denne, pričom poskytujú spoľahlivosť, stabilitu a bezpečnosť na svetovej úrovni. (Viac informácií o veľkostiach šarží a ich vplyv na poskytovanie softvéru).

DevOps sa pokúša vyriešiť rôzne problémy vyplývajúce z minulých metodológií, vrátane:

  • Izolácia práce medzi vývojovými a prevádzkovými tímami
  • Testovanie a nasadenie sú samostatné fázy, ktoré sa vyskytujú po návrhu a zostavení a vyžadujú si viac času ako cykly zostavovania.
  • Nadmerný čas strávený testovaním, nasadzovaním a navrhovaním namiesto sústredenia sa na budovanie základných obchodných služieb
  • Manuálne nasadenie kódu, ktoré vedie k chybám vo výrobe
  • Rozdiely v plánoch vývojových a prevádzkových tímov spôsobujú ďalšie oneskorenia

Sprievodca DevOps pre začiatočníkov

Konfrontácia medzi DevOps, Agile a tradičným IT

DevOps sa často diskutuje v súvislosti s inými postupmi IT, najmä Agile a Waterfall IT.

Agile je súbor princípov, hodnôt a praktík pre produkciu softvéru. Ak teda máte napríklad nápad, ktorý chcete pretaviť do softvéru, môžete použiť agilné princípy a hodnoty. Tento softvér však môže bežať iba vo vývojovom alebo testovacom prostredí. Potrebujete jednoduchý a bezpečný spôsob, ako rýchlo a opakovane presunúť svoj softvér do produkcie, a to prostredníctvom nástrojov a techník DevOps. Agilný vývoj softvéru sa zameriava na vývojové procesy a DevOps je zodpovedný 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. Nasledujúci príklad predpokladá, že aplikácia bude aktívna o štyri týždne, vývoj je dokončený na 85 %, aplikácia bude aktívna a proces nákupu serverov na odoslanie kódu sa práve začal.

Tradičné procesy
Procesy v DevOps

Po zadaní objednávky nových serverov vývojový tím pracuje na testovaní. Pracovná skupina pracuje na rozsiahlej dokumentácii, ktorú podniky vyžadujú na nasadenie infraštruktúry.
Po zadaní objednávky na nové servery vývojové a prevádzkové tímy spolupracujú na procesoch a dokumentácii pri inštalácii nových serverov. To vám umožní lepšie pochopiť vaše požiadavky na infraštruktúru.

Informácie o prepnutí pri zlyhaní, redundancii, umiestnení dátových centier a požiadavkách na úložisko sú skreslené, pretože neexistuje žiadny vstup od vývojového tímu, ktorý má hlboké znalosti o doméne.
Podrobnosti o prepnutí pri zlyhaní, redundancii, obnove po havárii, umiestnení dátových centier a požiadavkách na úložisko sú známe a správne vďaka vstupom vývojového tímu.

Operačný tím netuší o postupe vývojového tímu. Na základe vlastných predstáv vypracuje aj plán monitorovania.

Operačný tím si je plne vedomý pokroku, ktorý dosiahol vývojový tím. Spolupracuje aj s vývojovým tímom a spolupracujú na vývoji plánu monitorovania, ktorý spĺňa potreby IT a podnikania. Používajú tiež nástroje na monitorovanie výkonu aplikácií (APM).

Záťažový test vykonaný pred spustením aplikácie spôsobí zlyhanie aplikácie, čím sa oneskorí jej spustenie.
Záťažový test vykonaný pred spustením aplikácie má za následok slabý výkon. Vývojový tím rýchlo vyrieši úzke miesta a aplikácia sa spustí včas.

Životný cyklus DevOps

DevOps zahŕňa prijatie určitých všeobecne akceptovaných postupov.

Nepretržité plánovanie

Nepretržité plánovanie sa opiera o princípy štíhlosti, ktoré začína v malom, identifikáciou zdrojov a výstupov potrebných na testovanie hodnoty podnikania alebo vízie, nepretržité prispôsobovanie, meranie pokroku, učenie sa z potrieb zákazníkov, zmenu smeru podľa potreby, aby sa prispôsobila agilnosti, a prepracovanie podnikateľského plánu.

Spoločný rozvoj

Proces spoločného vývoja umožňuje podnikom, vývojovým tímom a testovacím tímom v rôznych časových pásmach neustále dodávať kvalitný softvér. To zahŕňa vývoj na viacerých platformách, podporu programovania medzi jazykmi, vytváranie používateľských príbehov, vývoj nápadov a správu životného cyklu. Spoločný vývoj zahŕňa proces a prax nepretržitej integrácie, ktorá podporuje častú integráciu kódu a automatizované zostavovanie. Častým nasadením kódu do aplikácie sú problémy s integráciou identifikované na začiatku životného cyklu (keď sa dajú ľahšie opraviť) a celkové úsilie o integráciu sa znižuje vďaka neustálej spätnej väzbe, pretože projekt vykazuje neustály a viditeľný pokrok.

Priebežné testovanie

Nepretržité testovanie znižuje náklady na testovanie tým, že pomáha vývojovým tímom vyvážiť rýchlosť a kvalitu. Odstraňuje tiež úzke miesta pri testovaní prostredníctvom virtualizácie služieb a uľahčuje vytváranie virtualizovaných testovacích prostredí, ktoré možno ľahko zdieľať, nasadzovať a aktualizovať pri zmenách systémov. Tieto funkcie znižujú náklady na poskytovanie a údržbu testovacích prostredí a skracujú časy testovacích cyklov, čo umožňuje, aby sa testovanie integrácie uskutočnilo skôr v životnom cykle.

Nepretržité uvoľňovanie a nasadzovanie

Tieto techniky so sebou prinášajú základnú prax: nepretržité uvoľňovanie a nasadzovanie. To je zabezpečené nepretržitým potrubím, ktoré automatizuje kľúčové procesy. Znižuje manuálne kroky, čakacie doby zdrojov a prepracovanie tým, že umožňuje nasadenie stlačením tlačidla, výsledkom čoho je viac vydaní, menej chýb a úplná transparentnosť.

Automatizácia hrá kľúčovú úlohu pri zabezpečovaní stabilného a spoľahlivého vydania softvéru. Jednou z najväčších výziev je prevziať manuálne procesy, ako je zostavenie, regresia, nasadenie a vytvorenie infraštruktúry, a zautomatizovať ich. Vyžaduje si to kontrolu verzie zdrojového kódu; scenáre testovania a nasadenia; konfiguračné údaje infraštruktúry a aplikácií; a knižnice a balíky, na ktorých aplikácia závisí. Ďalším dôležitým faktorom je schopnosť dotazovať sa na stav všetkých prostredí.

Nepretržité sledovanie

Nepretržité monitorovanie poskytuje reportovanie na podnikovej úrovni, ktoré pomáha vývojovým tímom pochopiť dostupnosť a výkon aplikácií v produkčnom prostredí pred ich nasadením do produkcie. Včasná spätná väzba poskytovaná nepretržitým monitorovaním je rozhodujúca pre zníženie nákladov na chyby a riadenie projektov správnym smerom. Táto prax často zahŕňa monitorovacie nástroje, ktoré zvyčajne odhaľujú metriky súvisiace s výkonom aplikácie.

Neustála spätná väzba a optimalizácia

Nepretržitá spätná väzba a optimalizácia poskytujú vizuálnu reprezentáciu toku zákazníkov a určujú problémové oblasti. Spätnú väzbu je možné zahrnúť do fázy pred predajom aj po ňom, aby sa maximalizovala hodnota a zabezpečilo sa úspešné ukončenie ešte väčšieho počtu transakcií. To všetko poskytuje okamžitú vizualizáciu základnej príčiny problémov zákazníkov, ktoré ovplyvňujú ich správanie a dopad na podnikanie.

Sprievodca DevOps pre začiatočníkov

Výhody DevOps

DevOps môže pomôcť vytvoriť prostredie, kde vývojári a prevádzkovatelia pracujú ako tím na dosiahnutí spoločných cieľov. Dôležitým míľnikom v tomto procese je implementácia kontinuálnej integrácie a kontinuálneho doručovania (CI/CD). Tieto techniky umožnia tímom dostať softvér na trh rýchlejšie s menším počtom chýb.

Dôležité výhody DevOps sú:

  • Predvídateľnosť: DevOps ponúka výrazne nižšiu mieru zlyhania pre nové vydania.
  • Udržateľnosť: DevOps umožňuje jednoduché obnovenie v prípade zlyhania nového vydania alebo výpadku aplikácie.
  • Reprodukovateľnosť: Kontrola verzií zostavy alebo kódu vám umožňuje podľa potreby obnoviť staršie verzie.
  • 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: Implementácia zabezpečenia v životnom cykle softvéru znižuje počet defektov počas životného cyklu.
  • Nákladová efektívnosť: Snaha o efektívnosť nákladov pri vývoji softvéru oslovuje vrcholový manažment.
  • Stabilita: Softvérový systém je stabilnejší, bezpečnejší a zmeny je možné kontrolovať.
  • Rozdelenie väčšej kódovej základne na spravovateľné časti: DevOps je založený na agilných vývojových metódach, ktoré vám umožňujú rozdeliť veľkú kódovú základňu na menšie, spravovateľné časti.

Princípy DevOps

Prijatím DevOps vzniklo niekoľko princípov, ktoré sa vyvinuli (a stále sa vyvíjajú). Väčšina poskytovateľov riešení vyvinula svoje vlastné modifikácie rôznych techník. Všetky tieto princípy sú založené na holistickom prístupe k DevOps a môžu ich využívať organizácie akejkoľvek veľkosti.

Vyvíjajte a testujte v produkčnom prostredí

Cieľom je umožniť tímom pre vývoj a zabezpečenie 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 vo svojom životnom cykle, aby sa vyriešili tri hlavné potenciálne problémy. Po prvé, umožňuje testovať aplikáciu v prostredí blízkom reálnemu prostrediu. Po druhé, umožňuje vám vopred otestovať a overiť procesy doručovania aplikácií. Po tretie, umožňuje prevádzkovému tímu otestovať na začiatku životného cyklu, ako sa bude ich prostredie správať pri nasadzovaní aplikácií, čo im umožňuje vytvoriť vysoko prispôsobené prostredie zamerané na aplikácie.

Nasadenie s opakovateľnými a spoľahlivými procesmi

Tento princíp umožňuje vývojovým a operačným tímom podporovať agilné procesy vývoja softvéru počas celého životného cyklu softvéru. Automatizácia je rozhodujúca pre vytváranie opakujúcich sa, spoľahlivých a opakovateľných procesov. Preto musí organizácia vytvoriť dodávateľský kanál, ktorý umožní nepretržité, automatizované nasadenie a testovanie. Časté nasadzovanie tiež umožňuje tímom testovať procesy nasadenia, čím sa znižuje riziko zlyhania nasadenia počas živých verzií.

Monitorovanie a kontrola kvality práce

Organizácie sú dobré v monitorovaní aplikácií vo výrobe, pretože majú nástroje, ktoré zachytávajú metriky a kľúčové ukazovatele výkonu (KPI) v reálnom čase. Tento princíp posúva monitorovanie na začiatku životného cyklu, čím zabezpečuje, že automatizované testovanie monitoruje funkčné a nefunkčné atribúty aplikácie na začiatku procesu. Vždy, keď je aplikácia testovaná a nasadzovaná, musia sa preskúmať a analyzovať metriky kvality. Monitorovacie nástroje poskytujú včasné varovanie pred prevádzkovými a kvalitatívnymi problémami, ktoré môžu vzniknúť počas výroby. Tieto ukazovatele sa musia zhromažďovať vo formáte, ktorý je prístupný a zrozumiteľný pre všetky zainteresované strany.

Zlepšenie slučiek spätnej väzby

Jedným z cieľov procesov DevOps je umožniť organizáciám rýchlejšie reagovať a vykonávať zmeny. Pri poskytovaní softvéru si tento cieľ vyžaduje, aby organizácia dostala včas spätnú väzbu a potom sa rýchlo poučila z každej vykonanej akcie. Tento princíp vyžaduje, aby organizácie vytvorili komunikačné kanály, ktoré umožnia zainteresovaným stranám prístup a interakciu spôsobom spätnej väzby. Rozvoj je možné dosiahnuť úpravou vašich projektových plánov alebo priorít. Výroba môže pôsobiť zlepšením výrobného prostredia.

dev

  • Plánovanie: Kanboard, Wekan a ďalšie alternatívy Trello; GitLab, Tuleap, Redmine a ďalšie alternatívy JIRA; Mattermost, Roit.im, IRC a ďalšie alternatívy Slack.
  • Zápis kódu: Git, Gerrit, Bugzilla; Jenkins a ďalšie open source nástroje pre CI/CD
  • zostava: Apache Maven, Gradle, Apache Ant, Packer
  • testy: JUnit, Uhorka, Selén, Apache JMeter

ops

  • Vydanie, nasadenie, operácie: Kubernetes, Nomad, Jenkins, Zuul, Spinnaker, Ansible, Apache ZooKeeper atď., Netflix Archaius, Terraform
  • Monitorovanie: Grafana, Prometheus, Nagios, InfluxDB, Fluentd a ďalšie, na ktoré sa vzťahuje táto príručka

(*Operačné nástroje boli očíslované v poradí, v akom ich používajú prevádzkové tímy, ale ich nástroje sa prekrývajú s fázami životného cyklu nástrojov vydania a nasadenia. Kvôli lepšej čitateľnosti bolo číslovanie odstránené.)

na záver

DevOps je čoraz populárnejšia metodika, ktorej cieľom je spojiť vývojárov a operácie ako jeden celok. Je jedinečný, odlišný od tradičných IT operácií a dopĺňa Agile (nie je však taký flexibilný).

Sprievodca DevOps pre začiatočníkov

Zistite podrobnosti o tom, ako získať žiadanú profesiu od nuly alebo Level Up, pokiaľ ide o zručnosti a plat, absolvovaním platených online kurzov od SkillFactory:

viac kurzov

užitočný

Zdroj: hab.com

Pridať komentár