Jaký je význam DevOps, co to znamená pro IT specialisty, popis metod, rámců a nástrojů.

Od doby, kdy se termín DevOps ustálil v IT světě, se toho hodně změnilo. Vzhledem k tomu, že většina ekosystému má otevřený zdrojový kód, je důležité znovu prozkoumat, proč to začalo a co to znamená pro kariéru v IT.
Co je DevOps
Ačkoliv neexistuje jediné definice, považuji DevOps za technologickou strukturu, která zajišťuje interakci mezi týmy vývojářů a operačními týmy pro rychlejší nasazení kódu v produkčních prostředích s možností opakování a automatizace. Zbytek článku strávíme rozborem tohoto prohlášení.
Slovo „DevOps“ je kombinací slov „vývoj“ (development) a „operace“ (operations). DevOps pomáhá zvyšovat rychlost dodání aplikací a služeb. To umožňuje organizacím efektivně obsluhovat své zákazníky a stát se konkurenceschopnějšími na trhu. Jednoduše řečeno, DevOps je soulad mezi vývojem a IT operacemi s efektivnější interakcí a spoluprací.
DevOps předpokládá takovou kulturu, při které je spolupráce mezi týmy vývojářů, operátory a obchodními týmy považována za kriticky důležitý aspekt. Nejde pouze o nástroje, protože DevOps v organizacích neustále přináší prospěch i zákazníkům. Nástroje jsou jedním z jeho pilířů, spolu s lidmi a procesy. DevOps zvyšuje možnosti organizací poskytovat vysoce kvalitní řešení v co nejkratší době. DevOps také automatizuje všechny procesy, od sestavení po nasazení aplikace nebo produktu.
Diskuze o DevOps se zaměřuje na vztahy mezi vývojáři, lidmi, kteří programují software, a operátory, kteří jsou odpovědní za údržbu tohoto softwaru.
Výzvy pro tým vývojářů
Vývojáři obvykle s nadšením a touhou zavádějí nové přístupy a technologie k řešení problémů organizací. Přesto se také setkávají s určitými výzvami:
- Konkurenceschopný trh vytváří velký tlak na včasné dodání produktu.
- Měli by se starat o správu kódu připraveného na výrobu a implementaci nových funkcí.
- Ciklus vydání může být dlouhý, a proto musí vývojářský tým učinit několik předpokladů před nasazením aplikací. V takovém scénáři je potřeba větší časová rezervu na řešení problémů, které se vyskytnou během nasazení v produkční nebo testovací prostředí.
Problémy, se kterými se setkává provozní tým.
Provozní týmy byly historicky zaměřeny na stabilitu a spolehlivost IT služeb. Právě proto se provozní týmy snaží dosáhnout stability prostřednictvím změn v prostředcích, technologiích nebo přístupech. Mezi jejich úkoly patří:
- Správa alokace zdrojů v reakci na rostoucí poptávku.
- Zpracování změn v návrhu nebo nastavení, které jsou nezbytné pro implementaci v produkčním prostředí.
- Diagnostika a řešení problémů souvisejících s produkcí po samostatném nasazení aplikací.
Jak DevOps řeší problémy vývoje a operací.
Místo toho, aby nasazovaly velké množství funkcí aplikace najednou, se firmy snaží zjistit, zda mohou nasadit malé množství funkcí pro své zákazníky prostřednictvím série iterací vydání. Tento přístup má řadu výhod, jako je lepší kvalita softwaru, rychlejší zpětná vazba od zákazníků atd. To zase zajišťuje vysokou míru spokojenosti zákazníků. Aby toho dosáhly, musí firmy:
- Snížit procento selhání při vydávání nových verzí.
- Zvýšit frekvenci nasazení.
- Dosáhnout rychlejšího průměrného doby obnovení po vydání nové verze aplikace.
- Zkrátit dobu na opravy.
DevOps plní všechny tyto úkoly a pomáhá zajistit nepřetržité dodávání. Organizace používají DevOps k dosažení úrovní výkonnosti, které před několika lety byly nepředstavitelné. Provádějí desítky, stovky a dokonce tisíce nasazení denně, přičemž zajišťují spolehlivost, stabilitu a bezpečnost světové úrovně. a jejich vlivu na dodávání softwaru).
DevOps se snaží vyřešit různé problémy, které vznikají v důsledku používání metodik minulosti, včetně:
- Izolovanost činnosti týmů vývojářů a operátorů
- Testování a nasazení jako samostatné fáze, které se provádějí po návrhu a sestavení a vyžadují více času než cykly sestavování.
- Nadměrné časové náklady na testování, nasazení a návrh namísto zaměření na vytváření klíčových obchodních služeb
- Ruční nasazení kódu, což vede k chybám v produkci
- Rozdíly v pracovních plánech skupin pro vývoj a provoz, což způsobuje další zpoždění

Konfrontace DevOps, Agile a tradičního IT
DevOps se často diskutuje v souvislosti s jinými IT praktikami, konkrétně s agilní a vodopádovou IT infrastrukturou.
Agile je soubor principů, hodnot a metodik výroby softwaru. Například pokud máte myšlenku, kterou chcete převést na software, můžete využít principy a hodnoty Agile. Ale tento software může fungovat pouze v prostředí vývoje nebo testování. Potřebujete jednoduchý a bezpečný způsob, jak rychle a s vysokou opakovatelností přenášet software do produkčního prostředí, a to zprostředkují nástroje a metody DevOps. Agilní metodologie vývoje softwaru se zaměřuje na procesy vývoje, zatímco DevOps má na starosti vývoj a nasazení – nejbezpečnějším a nejspolehlivějším způsobem.
Srovnání tradiční vodopádové modely s DevOps je dobrý způsob, jak pochopit výhody, které DevOps přináší. V následujícím příkladu se předpokládá, že aplikace bude spuštěna za čtyři týdny, vývoj je dokončen z 85 %, aplikace bude spuštěna a proces nákupu serverů pro odeslání kódu právě začal.
Tradiční procesy
Procesy v DevOps
Po objednání nových serverů tým vývojářů pracuje na testování. Operativní skupina pracuje na rozsáhlé dokumentaci potřebné pro nasazení infrastruktury v podnicích.
Po zadání objednávky na nové servery tým vývojářů a operátorů společně pracuje na procesech a dokumentaci pro instalaci nových serverů. To umožňuje lépe pochopit požadavky na infrastrukturu.
Informace o obnově po selhání, redundanci, umístění datových center a požadavcích na úložiště jsou zkreslené, protože chybí vstupy od vývojářského týmu, který má hluboké znalosti v oblasti aplikací.
Podrobné informace o překonávání selhání, redundanci, havarijní obnově, umístění datových center a požadavcích na úložiště jsou známé a správné díky přínosu vývojového týmu.
Operační skupina nemá představu o pokroku vývojářského týmu. Také vypracovává plán monitorování na základě vlastních představ.
Operační skupina je plně informována o pokroku, kterého dosáhl tým vývojářů. Také spolupracuje s vývojářským týmem a společně vypracovávají plán monitorování, který splňuje IT a obchodní potřeby. Také využívají nástroje pro monitorování výkonu aplikací (APM).
Zátěžový test prováděný před spuštěním aplikace způsobuje její selhání, což zpožďuje její nasazení.
Zátěžový test prováděný před spuštěním aplikace vede k poklesu výkonu. Tým vývojářů rychle odstraní úzká místa a aplikace je spuštěna včas.
Životní cyklus DevOps
DevOps zahrnuje přijetí určitých osvědčených postupů.
Nepřetržité plánování
Nepřetržité plánování se opírá o principy štíhlosti, aby začalo s něčím malým, určením potřebných zdrojů a výsledků pro ověření hodnoty podnikání nebo vize, neustálou adaptaci, měření pokroku, zkoumání potřeb zákazníků, změnu směru podle potřeby s ohledem na obratnost a také pro aktualizaci obchodního plánu.
Společný vývoj
Proces společného vývoje umožňuje firmám, vývojovým týmům a testovacím týmům, které jsou rozptýleny napříč různými časovými zónami, nepřetržitě dodávat kvalitní software. To zahrnuje multi-platformní vývoj, podporu programování v různých jazycích, vytváření uživatelských příběhů, návrh nápadů a řízení životního cyklu. Společný vývoj zahrnuje proces a praxi nepřetržité integrace, což podporuje častou integraci kódu a automatickou kompilaci. Při častém zavádění kódu do aplikace jsou problémy s integrací odhaleny v raných fázích životního cyklu (kdy se lépe opravují) a celkové úsilí o integraci se zkracuje díky nepřetržité zpětné vazbě, protože projekt vykazuje neustálý a jasný pokrok.
Nepřetržité testování
Nepřetržité testování snižuje náklady na testování tím, že pomáhá vývojovým týmům vyvážit rychlost a kvalitu. Také odstraňuje úzká místa v testování díky virtualizaci služeb a zjednodušuje vytváření virtualizovaných testovacích prostředí, která lze snadno sdílet, nasazovat a aktualizovat podle měnících se systémů. Tyto možnosti snižují náklady na inicializaci a údržbu testovacích prostředí a zkracují časový cyklus testování, což umožňuje provádět integrační testování v raných fázích životního cyklu.
Nepřetržité vydávání a nasazení
Tyto metody přinášejí jednu z klíčových praktik: nepřetržité vydávání a nasazení. Zajišťují nepřetržitý kanál, který automatizuje klíčové procesy. Snižují počet ručních operací, dobu čekání na zdroje a objem přepracování, což umožňuje provádět nasazení stisknutím tlačítka a zajišťuje větší počet vydání, nižší počet chyb a úplnou transparentnost.
Automatizace hraje klíčovou roli v zajištění stabilního a spolehlivého vydání softwaru. Jedním z nejdůležitějších úkolů je převzít ruční procesy, jako je sestavení, regrese, nasazení a vytvoření infrastruktury, a automatizovat je. K tomu je potřeba kontrola verzí zdrojového kódu; testovací a nasazovací skripty; informace o infrastruktuře a konfiguraci aplikací; a také knihovny a balíčky, na kterých aplikace závisí. Dalším důležitým faktorem je schopnost dotazovat se na stav všech prostředí.
Nepřetržitý monitoring
Nepřetržitý monitoring zajišťuje vytváření podnikových zpráv, které pomáhají týmům vývojářů porozumět dostupnosti a výkonnosti aplikací v produkčním prostředí ještě předtím, než budou nasazeny do produkce. Ranní zpětná vazba, kterou poskytuje nepřetržitý monitoring, je rozhodující pro snížení nákladů na chyby a řízení projektů správným směrem. Tato praxe obvykle zahrnuje nástroje pro observaci, které odhalují metriky související s výkonností aplikací.
Plynulá zpětná vazba a optimalizace
Nepřetržitá zpětná vazba a optimalizace zajišťují vizuální zobrazení toku zákazníků a přesné určení problémových míst. Zpětná vazba může být zahrnuta jak v předprodejní, tak v post-produkční fázi pro maximalizaci hodnoty a zajištění úspěšného dokončení ještě většího množství transakcí. To vše poskytuje okamžitou vizualizaci příčin problémů zákazníků, které ovlivňují jejich chování a dopad na podnikání.

Výhody DevOps
DevOps může přispět k vytvoření prostředí, kde vývojáři a operátoři pracují jako jeden tým na dosažení společných cílů. Důležitým milníkem v tomto procesu je zavedení kontinuální integrace a kontinuálního dodávání (CI/CD). Tyto metodiky umožňují týmům rychleji uvádět software na trh s méně chybami.
Mezi důležitá výhody DevOps patří:
- Předvídatelnost: DevOps nabízí výrazně nižší míru chybovosti při vydávání nových verzí.
- Udržovatelnost: DevOps zajišťuje snadné obnovení v případě selhání nové verze nebo výpadku aplikace.
- Reprodukovatelnost: Systém správy verzí pro sestavení nebo kód umožňuje obnovit starší verze podle potřeby.
- Vyšší kvalita: Řešení problémů s infrastrukturou zlepšuje kvalitu vývoje aplikací.
- Doba uvedení na trh: Optimalizace dodávky softwaru snižuje dobu uvedení na trh o 50 %.
- Snížení rizika: Zajištění bezpečnosti v rámci životního cyklu softwaru snižuje počet vad během celého životního cyklu.
- Ekonomická efektivita: Usilování o ekonomickou efektivitu při vývoji softwaru těší vrcholové vedení.
- Odolnost: Softwarový systém je stabilnější, bezpečnější a změny je možné ověřovat.
- Větší základna kódu je rozdělena na ovladatelné části: DevOps je založen na flexibilních metodách vývoje, které umožňují rozdělit velkou základnu kódu na menší a zvládnutelné části.
Principy DevOps
Přijetí DevOps vedlo k několika principům, které se vyvíjejí (a stále se vyvíjejí). Většina dodavatelů řešení si vyvinula své vlastní modifikace různých metodologií. Všechny tyto principy vycházejí z integrovaného přístupu k DevOps a organizace jakékoli velikosti je mohou používat.
Vyvíjejte a testujte v prostředí podobném produkčnímu
Podstatou je umožnit týmům vývojářů a specialistů na zajištění kvality (QA) vyvíjet a testovat systémy, které se chovají jako produkční systémy, aby mohli vidět, jak se aplikace chová a funguje dávno před tím, než je připravena k nasazení.
Aplikace by měla být připojena k produkčním systémům co nejdříve v rámci životního cyklu, aby se řešily tři hlavní potenciální problémy. Za prvé, to umožňuje testovat aplikaci v prostředí blízkém reálnému. Za druhé, to umožňuje testovat a ověřovat procesy dodání aplikace předem. Za třetí, to umožňuje operačnímu týmu brzy v životním cyklu zkontrolovat, jak se jejich prostředí bude chovat, když budou aplikace nasazeny, čímž jim to umožní vytvořit jemně přizpůsobené, na aplikace orientované prostředí.
Nasazení s reprodukovatelnými, spolehlivými procesy
Tento princip umožňuje týmům vývojářů a operátorů udržovat flexibilní procesy vývoje softwaru po celou dobu životního cyklu. Automatizace je klíčová pro vytváření iterativních, spolehlivých a reprodukovatelných procesů. Proto by organizace měla vytvořit dodávkový kanál, který zajišťuje nepřetržité automatizované nasazení a testování. Časté nasazování také umožňuje týmům testovat procesy nasazení, čímž se snižuje riziko selhání nasazení během skutečných uvedení.
Monitorování a kontrola kvality výkonu
Organizace jsou dobré v monitorování aplikací v produkci, protože mají nástroje, které zaznamenávají metriky a klíčové ukazatele výkonnosti (KPI) v reálném čase. Tento princip přenáší monitorování do raných fází životního cyklu, což zajišťuje, že automatizované testování sleduje funkční a nefunkční atributy aplikace v raných fázích procesu. Kdykoli je aplikace testována a nasazena, měly by být kvalitativní ukazatele zkoumány a analyzovány. Nástroje monitorování zajišťují včasné upozornění na problémy související s provozem a kvalitou, které mohou vzniknout v průběhu výroby. Tyto ukazatele by měly být shromážděny v formátu, který je dostupný a srozumitelný všem zainteresovaným stranám.
Zlepšení cyklů zpětné vazby
Jedním z cílů procesů DevOps je umožnit organizacím rychleji reagovat a provádět změny. Při dodávání softwaru tento cíl vyžaduje, aby organizace získávala zpětnou vazbu již v rané fázi, a poté rychle se učila z každého provedeného kroku. Tento princip vyžaduje, aby organizace vytvářely komunikační kanály, které umožňují zúčastněným stranám mít přístup a interagovat na základě zpětné vazby. Vývoj může vycházet z úpravy svých projektových plánů nebo priorit. Výroba může jednat zlepšením výrobního prostředí.
Dev
- Plánování: Kanboard, Wekan a další alternativy Trello; GitLab, Tuleap, Redmine a další alternativy JIRA; Mattermost, Roit.im, IRC a další alternativy Slack.
- Psaní kódu: Git, Gerrit, Bugzilla; Jenkins a další nástroje s otevřeným zdrojovým kódem pro CI/CD.
- Sestavení: Apache Maven, Gradle, Apache Ant, Packer.
- Testy: JUnit, Cucumber, Selenium, Apache JMeter.
Ops
- Vydání, nasazení, operace: Kubernetes, Nomad, Jenkins, Zuul, Spinnaker, Ansible, Apache ZooKeeper, etcd, Netflix Archaius, Terraform.
- Monitoring: Grafana, Prometheus, Nagios, InfluxDB, Fluentd a další, které jsou pokryty v této příručce.
(* Nástroje pro operace byly očíslovány podle použití operačními týmy, ale jejich nástrojová základna se překrývá s nástroji fáze životního cyklu pro vydání a nasazení. Pro přehlednost byla čísla odstraněna.)
Na závěr
DevOps je stále populárnější metodologie, jejímž cílem je spojit vývojáře a operátory do jednoho celku. Je unikátní, odlišuje se od tradičních IT operací a doplňuje Agile (ale není tak flexibilní).

Zjistěte podrobnosti, jak získat žádané povolání od nuly nebo Level Up v dovednostech a platu, absolvováním placených online kurzů SkillFactory:
- (12 měsíců)
další kurzy
- (12 týdnů)
- (12 měsíců)
- (9 měsíců)
- (9 měsíců)
Užitečné
Zdroj: habr.com
