V předchozím článku „Role DevOps v digitální transformaci“, jsme se zabývali podstatou a výhodami přístupu DevOps. Jeho zavedení v organizaci pomáhá s urychlením i zvýšením efektivity procesu nasazení a celkovým vylepšením spolehlivosti nasazení nových softwarových produktů pomocí agilního vývojového procesu. Dnes se podíváme na možná úskalí spojená se zavedením DevOps procesů do struktury organizace a jak těmto problémům čelit. Základním účelem přechodu k metodě DevOps je totiž dlouhodobé nastavení celého procesu tak, aby nevznikaly vícenáklady spojené s plánováním, organizací a realizací.
Strategický plán je klíčem
Na počátku každé úspěšné změny stojí zejména kvalitní a promyšlený strategický plán. Je tedy potřeba si určit jeho podobu i obsah, stejně jako stanovit realizační tým. Strategický plán je pak úzce provázán s projektovým plánováním. Projektové plánování představuje jeden z klíčových kroků pro úspěšné zavedení DevOps do organizace.
Nejdříve je potřeba si definovat očekávaný výsledek. Pokud například chceme začít s menší mikroservisní aplikací, můžeme na první službě skvěle odladit celý proces od odevzdání kódu, přes automatické testy, nasazení až po monitorování životních funkcí a upozornění na případné chyby.
V okamžiku, kdy je celý proces detailně popsán, je důležité stanovit si časovou náročnost celé aktivity, termín odevzdání finální podoby i postup přidávání dalších aplikací. Takový způsob plánování pomáhá nacházet opakující se vzorce v nasazování i testování a umožňuje tak vytvářet určité šablony. Některé z těchto šablon je pak možné pomocí různých nástrojů použít opakovaně k automatizaci.
Kdo je kdo? Bez jasně definovaných rolí v týmu to nepůjde…
Důležitou součástí plánu je také popis jednotlivých rolí v týmu. V každé implementaci takových procesů by se měl nacházet alespoň jeden člověk skutečně znalý dané aplikace, tedy zástupce vývojářů. Stejně tak by se měl účastnit jeho protějšek ze strany operativců, kteří udržují aplikaci při životě v produkčním prostředí, popřípadě se starají o její monitorování. V neposlední řadě by měl být součástí týmu i někdo, kdo je zodpovědný za infrastrukturu, aby celý proces probíhal bez problémů a neprodlužoval se čas doručení při čekání na různé technické účty a prostupy. Pro úspěšné fungování všeho výše popsaného je potřeba mít domluvenou i podporu u managementu organizace. Možná se tato poznámka může zdát jako nadbytečná, ale praxe opakovaně ukazuje opak. S postupy a fungováním DevOps týmu totiž musí být velice dobře seznámeno i vedení firmy a musí tomuto týmu poskytovat svou součinnost a podporu.
DevOps kultura krok za krokem
Jak vlastně vzniká DevOps kultura v organizaci? Je potřeba ji prostě a jednoduše vytvořit na základě několika faktorů. Těmi jsou čas, typ projektu, velikost organizace, velikost týmu a samozřejmě i rozpočet. Zde se opět vracíme k důležitosti a roli managementu organizace a jeho úloze v zavádění kultury DevOps. V samotném úvodu snah o zavedení postupů DevOps je totiž nejdůležitější probrat s managementem, jaký přínos bude mít tato aktivita pro koncové uživatele, vývojové a podpůrné týmy, nebo pro firemní kulturu a v neposlední řadě pro výsledky celého týmu. Uspořádání technických i personálních záležitostí totiž pochopitelně následuje až s podporou managementu, který je přesvědčen, že dělá správnou věc. Zcela nezbytné je probrat také finanční a časové zázemí pro implementaci procesů, aby nově vzniklý DevOps tým měl opravdu prostor v klidu efektivně pracovat.
Před zapojením vzniklého týmu je samozřejmě potřeba zajistit důkladné školení na DevOps metodiku, nebo si najmout specialistu, který s takovou aktivitou může pomoci. Jedná se o komplexní proces a je možné, že na některé chyby při implementaci by se mohlo přijít zbytečně pozdě. Od nově vzniklého týmu se naopak očekává schopnost učit se novým věcem a nevracet se do starých zaběhnutých kolejí.
Komunikace jako základ úspěchu
Ač se to může zdát jako banalita, je potřeba nepodceňovat kvalitní nástroje pro komunikaci. Nově vzniklý DevOps tým musí mít možnost efektivně komunikovat jak uvnitř, tak i s ostatními články celé organizace. Mezi efektivní nástroje rozhodně nepatří e-mail, který se používá spíše pro formální komunikaci. Naopak výborným nástrojem pro týmovou komunikaci jsou například Slack, MS Teams nebo Discord, které pak dokáže využít DevOps tým pro automatické sdílení chyb a komplikací v procesu s ostatními členy organizace. V poslední době je možné využít i implementované chatboty, které jsou schopny v rámci komunikačního nástroje zjistit stav, kde se jejich nasazení nachází, v jakém stavu jsou například backendy napříč testovacími prostředími a podobně.
Automatizace aneb „Samoseto“
Matematika využívá symbol nekonečna ve spojení s nekončícími procesy a ani v DevOps není tento symbol náhodou, protože cokoliv se opakuje vícekrát než jednou, je potřeba zautomatizovat a tím dostat i mezi nekončící procesy. Kde všude se dá proces automatizace aplikovat? Začněme třeba od infrastruktury.
Pomocí Terraform šablon jsme schopni říci kolik a kde potřebujeme výpočetního výkonu, které všechny komponenty potřebujeme k chodu a podle jakých pravidel se má naše infrastruktura rozšířit nebo zmenšit. Celý tento proces se dá navíc také automatizovat. Operátor tak už nemusí používat příkazy, ale infrastruktura se po aplikaci změny v dokumentu upraví sama. Pro takové úpravy je možné využít nástroje jako GitLab nebo Azure DevOps. Možností je v současnosti samozřejmě ještě mnohem více.
Stejný postup lze využít na nasazení monitorovacích nástrojů, dokumentace nebo jakékoliv jiné komponenty z DevOps palety. Zní to velice jednoduše, má to ale i svá úskalí na která je potřeba si dát pozor. Veškerá automatizace vyžaduje údržbu, aby byla odolná pro všechny nadcházející aktualizace. Pro odolnou automatizaci je dobré opět využít šablony, a proto čím více podobné jsou si aplikace s programovacím jazykem, který byl použit, tím menší zdroje jsou potřeba na rozšiřování šablon, ale i na nutnou údržbu.
Dvakrát měř, jednou řež
Bez dobře nastavených metrik jsme v podstatě „slepí“ a na základě domněnek je těžké cokoliv udržovat, sledovat případně vylepšovat. Pro takové aktivity existují komplexní nástroje jako je Datadog, Dynatrace nebo Splunk. Tyto nástroje dokážou s pomocí operátorů v infrastruktuře poměrně jednoduše načíst celou aplikaci, logy i její zázemí. Ovšem pouze pokud jsou do aplikace volně puštěny. V některých organizacích jako jsou třeba banky, to bohužel není možné, v jiných organizacích je to naopak žádané, protože přinášejí dokonalý přehled o všem, co se děje, na jednom místě.
Pokud neexistuje možnost využít tyto samostatné nástroje a je nutné nástroj více přizpůsobit potřebám organizace, nabízí se pak např. ELK stack i s možností připojení Grafany.
SRE
Sebelepší nástroj však potřebuje zkušeného specialistu, který ho bude používat. V tomto případě se jedná o pozici zvanou SRE (Site Reliability Engineer). Tato role kombinuje prvky softwarového inženýrství a provozu IT infrastruktury. Člověk v této pozici je zodpovědný za zajištění spolehlivosti, škálovatelnosti a dostupnosti systémů a služeb pro uživatele.
Site Reliability Engineer se zaměřuje na řešení problémů spojených s výkonem, stabilitou a škálovatelností systémů. Jeho hlavním cílem je minimalizovat výpadky a zajistit, aby systémy byly vždy dostupné a efektivní. Součástí role je také řízení incidentů.
Závěrem
Po přečtení těchto řádků si možná řeknete: „Dobře, tak teď půjdu, naplánuju si zavedení DevOps, domluvím se s vedením, vezmu Frantu z vývoje a Vaška z operations, napíšeme pár skriptů a pipeline, něco zmonitorujeme a máme to - jsme DevOps organizace!“
Bylo by to samozřejmě dobré zjištění, ale DevOps je velice komplexní proces, který přece jen nelze takto jednoduše obsáhnout. Aby bylo zavedení přístupu DevOps do organizace funkční, každá ze součástí nezávisle na velikosti organizace vyžaduje pečlivý a zodpovědný přístup, protože celý procesní řetěz je jen tak silný jako jeho nejslabší článek. Nicméně nezoufejte. Pokud máte vizi a dostatek odhodlání, půjde to!
Vojtěch Kijenský
Zdroj: SystemOnLine 07/2023