Když aplikace nefunguje, nejméně chcete slyšet od kolegů frázi „problém je na vaší straně“. V důsledku toho utrpí uživatelé – a jim je jedno, která část týmu nese odpovědnost za výpadek. Kultura DevOps vznikla právě proto, aby spojila vývoj a podporu a sjednotila je kolem společné odpovědnosti za koncový produkt.
Jaké praktiky patří do pojmu DevOps a k čemu jsou potřebné? Čím se zabývají DevOps inženýři a co by měli umět? Na tyto a další otázky odpovídají odborníci z EPAM: Kirill Sergejev, systémový inženýr a DevOps evangelista, a Igor Bojko, vedoucí systémový inženýr a koordinátor jednoho z DevOps týmů společnosti.

Proč je DevOps potřebný?
Dříve existovala mezi vývojáři a podporou (tzv. operations) bariéra. Zní to paradoxně, ale měli různé cíle a KPI, i když dělali společnou práci. Cílem vývoje bylo co nejrychleji realizovat obchodní požadavky a přidat je do funkčního produktu. Podpora byla odpovědná za stabilní fungování aplikace – a jakékoli změny ohrožovaly stabilitu. Je tu jasný konflikt zájmů – DevOps vznikl, aby jej vyřešil.
Co je DevOps?
Otázka je dobrá – a sporná: konečně se na tom svět ještě nedohodl. V EPAM považují, že DevOps spojuje technologie, procesy a kulturu spolupráce uvnitř týmu. Tento souhrn je zaměřen na kontinuální dodávání hodnot koncovým uživatelům.
Kirill Sergejev: „Vývojáři píší kód, testovači ho kontrolují a administrátoři nasazují finální produkt do provozního prostředí. Dlouho byly tyto části týmu poněkud rozdělené, a pak přišla myšlenka spojit je společným procesem. Tak vznikly DevOps praktiky.“
Nastal den, kdy se vývojáři a systémoví inženýři začali zajímat o práci jeden druhého. Bariéra mezi výrobou a podporou se začala rozmazávat. Tak vznikl DevOps, který zahrnuje praktiky, kulturu a řád spolupráce v týmu.

V čem spočívá podstata DevOps kultury?
Zodpovědnost za konečný výsledek leží na každém členu týmu. Nejzajímavější a nejvíce komplikované na filozofii DevOps je pochopit, že konkrétní člověk není zodpovědný pouze za svou část práce, ale nese odpovědnost za to, jak bude celý produkt fungovat. Problém neleží na jedné straně – je společný a každý člen týmu přispívá k jeho řešení.
Nejdůležitější zásadou kultury DevOps je skutečně řešit problémy, nikoli jen aplikovat praktik DevOps. Co více, tyto praktiky se neimplementují ‚na něčí straně‘, ale v celém produktu. Projekt nepotřebuje pouze DevOps inženýra – potřebuje řešení problému a roli DevOps inženýra může vykonávat několik členů týmu s různými specializacemi.
Jaké jsou praktiky DevOps?
Praktiky DevOps pokrývají všechny fáze životního cyklu softwaru.
Igor Bojko: „Ideální situace je, když začínáme používat praktiky DevOps hned při iniciaci projektu. Spolu s architekty plánujeme, jakou bude mít aplikace architektonickou strukturu, kde se bude nacházet a jak se bude škálovat, vybíráme platformu. Nyní je módní mikroservisní architektura – pro tu vybíráme systém orchestrace: musíme umět řídit každý prvek aplikace jednotlivě a aktualizovat ho nezávisle na ostatních. Další praktikou je ‘infrastruktura jako kód’. Tak se nazývá přístup, při kterém je infrastruktura projektu vytvářena a spravována pomocí kódu, nikoli prostřednictvím přímé interakce se servery.
Dále přecházíme na fázi vývoje. Zde je jednou z největších praktik budování CI/CD: je nutné pomoci vývojářům rychle integrovat změny do produktu v malých množstvích, častěji a bezbolestně. CI/CD pokrývá jak kontrolu kódu, tak odesílání masteru do kódové základny, stejně jako nasazení aplikace na testovací a produkční prostředí.
Ve fázích CI/CD prochází kód kvalifikačními bránami. S jejich pomocí se kontroluje, zda kód, který vyšel z pracovní stanice vývojáře, splňuje stanovená kritéria kvality. Zde se přidávají unit a UI testy. Pro rychlé, bezbolestné a cílené nasazení produktu je možné vybrat vhodný typ nasazení.
DevOps praktiky mají své místo i ve fázi podpory hotového produktu. Používají se k monitorování, získávání zpětné vazby, zajištění bezpečnosti a implementaci změn. Na všechny tyto úkoly se DevOps dívá z pohledu neustálého zlepšování. Minimalizujeme opakující se operace a automatizujeme je. Sem také patří migrace, rozšiřování aplikace a zajištění funkčnosti.
Jaké výhody přinášejí DevOps praktiky?
Pokud bychom psali učebnici moderních DevOps praktiky, na její první stránce by bylo uvedeno tři body: automatizace, urychlení vydání a rychlá zpětná vazba od uživatelů.
Kirill Sergejev: „První je automatizace. Všechny interakce v týmu můžeme automatizovat: napsali jsme kód – nasadili jsme – zkontrolovali jsme – instalovali jsme – shromáždili jsme zpětnou vazbu – vrátili jsme se na začátek. To vše automaticky.
Druhé je urychlení vydání a zjednodušení vývoje. Zákazníkovi je vždy důležité, aby produkt vstoupil na trh co nejdříve a začal přinášet užitek dříve než konkurence. Proces dodávky produktu lze neustále zlepšovat: zkracovat čas, přidávat další kontrolní body, vylepšovat monitoring.
Třetí je urychlení zpětné vazby od uživatele. Pokud má připomínky, můžeme okamžitě provést úpravy a ihned aktualizovat aplikaci.

Jak se vztahují pojmy „systémový inženýr“, „build inženýr“ a „DevOps inženýr“?
Překrývají se, ale patří do poněkud různých oblastí.
Systémový inženýr v EPAM je pozice. Může mít různé úrovně: od juniora po chief specialistu.
Build inženýr je spíše role, kterou lze vykonávat v projektu. Dnes se tak označují lidé odpovědní za CI/CD.
DevOps inženýrem je označován specialista, který zavádí DevOps praktiky do projektu.
Pokud to shrneme, vychází přibližně na toto: člověk v pozici systémového inženýra vykonává v projektu roli build inženýra a zabývá se tam implementací DevOps praktiky.
Co přesně dělá DevOps inženýr?
DevOps inženýři spojují všechny části projektu dohromady. Značně znají specifika práce programátorů, testerů, systémových administrátorů a pomáhají zjednodušit jejich práci. Rozumějí potřebám a požadavkům podnikání, jeho roli v procesu vývoje – a budují proces s ohledem na zájmy zákazníka.
Hodně jsme mluvili o automatizaci – tou se DevOps inženýři zabývají především. Je to velmi důležitý bod, do kterého mimo jiné patří příprava prostředí.
Kirill Sergejev: „Než implementujeme aktualizace do produktu, je nutné je otestovat ve vedlejším prostředí. To připravují DevOps inženýři. Ti také zavádějí kulturu DevOps v projektě jako celku: implementují DevOps praktiky na všech úrovních svých projektů. Tři základní principy: automatizace, zjednodušení, zrychlení – tyto principy přinášejí všude tam, kam mohou dosáhnout.“
Co by měl DevOps inženýr vědět?
Zjednodušeně řečeno, měl by mít znalosti z různých oblastí: programování, práce s operačními systémy, databázemi, systémy sestavení a konfigurace. K tomu přidává schopnost pracovat s cloudovou infrastrukturou, systémy orchestrace a monitorování.
1. Programovací jazyky
DevOps inženýři znají několik základních jazyků pro automatizaci a mohou například říct programátorovi: „Co kdybychom instalaci kódu nedělali ručně, ale pomocí našeho skriptu, který vše automatizuje? Připravíme k němu config soubor, který bude pohodlně čitelný pro tebe i pro nás – a kdykoliv ho budeme moci změnit. Navíc budeme vidět, kdo, kdy a proč provedl změny.“
DevOps inženýr se může naučit jeden nebo více z těchto jazyků: Python, Groovy, Bash, Powershell, Ruby, Go. Není potřeba znát je na hluboké úrovni – stačí základní znalost syntaxe, principů OOP a schopnost psát jednoduché skripty pro automatizaci.
2. Operační systémy
DevOps inženýr by měl rozumět tomu, na kterém serveru bude produkt nainstalován, v jakém prostředí se bude spouštět a s jakými službami bude spolupracovat. Může si zvolit specializaci na Windows nebo rodinu Linux.
3. Systémy řízení verzí
Bez znalosti systémů řízení verzí se DevOps inženýr neobejde. Git je v současnosti jedním z nejpopulárnějších systémů.
4. Cloudoví poskytovatelé
AWS, Google, Azure – obzvlášť pokud hovoříme o zaměření na Windows.
Kirill Sergejev: „Cloudoví poskytovatelé nám nabízejí virtuální servery, která se skvěle hodí na CI/CD.
Nastavení deseti fyzických serverů vyžaduje přibližně sto ručních operací. Každý server je potřeba ručně spustit, nainstalovat a nakonfigurovat potřebný operační systém, nainstalovat naši aplikaci na těchto deseti serverech a pak desetkrát vše zkontrolovat. Cloudové služby nahrazují tento proces deseti řádky kódu a dobrý DevOps inženýr by měl umět s nimi manipulovat. Tím šetří čas, úsilí a peníze – jak pro zákazníka, tak pro firmu.“
5. Orchestrace: Docker a Kubernetes
Kirill Sergejev: „Virtuální servery jsou rozděleny na kontejnery, do kterých můžeme nainstalovat naši aplikaci. Když je kontejnery mnoho, je potřeba je řídit: jeden zapnout, jiný vypnout, někde udělat zálohy. To se stává docela složitým úkolem, pro který je potřeba systém orchestrace.
Dříve měl každou aplikaci na starosti samostatný server – jakékoliv změny v jeho fungování mohly ovlivnit správnost aplikace. Díky kontejnerům se aplikace stávají izolovanými a spouští se samostatně – každá na své virtuální mašině. Pokud dojde k chybě, není třeba trávit čas hledáním příčiny. Je jednodušší zničit starý kontejner a přidat nový.“
6. Konfigurační systémy: Chef, Ansible, Puppet
Když je třeba spravovat celé portfolio serverů, je nutné provádět mnoho podobných operací. To je zdlouhavé a složité, a navíc manuální práce zvyšuje šanci na chybu. Tady přicházejí na pomoc konfigurační systémy. S jejich pomocí se vytváří skript, který je pohodlně čitelný jak pro programátory, tak pro DevOps inženýry a systémové administrátory. Tento skript pomáhá provádět stejné operace na serverech automaticky. Tak se snižuje počet ručních operací (a tím pádem chyb).
Jakou kariéru si může vybudovat DevOps inženýr?
Lze se rozvíjet jak horizontálně, tak vertikálně.
Igor Bojko: „Z hlediska horizontálního rozvoje mají DevOps inženýři dnes nejširší vyhlídky. Vše se neustále mění a dovednosti lze rozšiřovat v mnoha různých směrech: od systémů pro správu verzí až po monitorování, od správy konfigurací po databáze.
Můžete se stát systémovým architektem, pokud vás zajímá, jak aplikace funguje ve všech fázích svého životního cyklu – od vývoje až po podporu.
Jak se stát DevOps inženýrem?
- Přečtěte si knihy „Projekt Phoenix“ a DevOps Handbook. Jsou to skutečné pilíře filozofie DevOps, přičemž první je beletristický román.
- Studujte technologie ze seznamu výše: samostatně nebo na online kurzech.
- Připojte se jako DevOps inženýr k open source projektu.
- Praxe a návrh DevOps praktik na svých osobních a pracovních projektech.
Zdroj: habr.com
