Úvod do DevOps pro začátečníky

DevOps se stalo populárním pojmem, který ovšem pro různé lidi znamená odlišné věci.

Není jednoduché pochopit a přesně definovat, co DevOps vlastně představuje. Proto je užitečné znát základní principy, které si s ním většina lidí spojuje, a také historický vývoj. Získáte tak komplexnější pohled na tuto problematiku.

Počátky DevOps

DevOps je skvělým příkladem agilního vývoje softwaru. Myšlenka DevOps se zrodila z potřeby držet krok s rostoucí rychlostí vývoje softwaru s využitím agilních metod. Během posledních deseti let pokrok v agilní kultuře a postupech odhalil nutnost holističtějšího přístupu k celému životnímu cyklu softwaru.

Možná vás zajímá, co vlastně agilní vývoj softwaru znamená –

Agilní vývoj je zastřešující termín pro několik iterativních metodologií vývoje softwaru. Mezi populární agilní metodiky patří například Scrum, Kanban, Scaled Agile Framework® (SAFe®), Lean Development a Extreme Programming (XP).

Základní hodnoty a vize těchto metodologií jsou sice podobné, ale každá z nich má svůj specifický přístup. Společným rysem je důraz na iterace a kontinuální zpětnou vazbu, které vedou k vylepšování a dodávání softwaru. Všechny tyto metodiky zahrnují průběžné plánování, testování, integraci a další postupy.

Na rozdíl od tradičních, „vodopádových“ procesů jsou agilní metodiky flexibilní a snadno se adaptují. Jednou z hlavních výhod je zaměření na posílení postavení jednotlivců v týmu a podporu spolupráce a rychlého rozhodování.

Obrázek od Segue

DevOps rozšiřuje agilní vývojové praktiky s cílem zefektivnit proces změn softwaru, od sestavení a ověření až po nasazení a další fáze dodání. To umožňuje mezifunkčním týmům plně vlastnit softwarový produkt od návrhu až po produkci.

Výzvy, které DevOps řeší

Proces nasazení – Distribuované aplikace často vyžadují nasazení binárních a konfiguračních souborů na více serverů. S rostoucím počtem serverů se to stává stále složitějším. Je obtížné určit, co, jak a kam nasadit. Výsledkem je?

Dlouhé čekání na přesun artefaktů do dalších prostředí v cestě do produkce způsobuje zpoždění v testování, uvedení do provozu a dalších fázích.

DevOps umožňuje softwarovým a webovým vývojářům a IT oddělením spolupracovat na bezproblémových procesech. Umožňuje nám ověřit, co funguje, a následně to díky automatizaci posunout na vyšší úroveň. To vede k častějšímu vývoji.

Cíle DevOps

DevOps zlepšuje spolupráci mezi zúčastněnými stranami od plánování až po dodání a implementuje automatizaci procesu dodání za účelem:

  • Zvýšení frekvence nasazení
  • Zrychlení uvedení produktu na trh
  • Snížení míry selhání nových verzí
  • Zkrácení doby mezi opravami
  • Zlepšení střední doby do obnovy

Typický scénář DevOps

Před zahájením nového softwarového projektu se setkává celý tým. Ten se skládá z vývojářů, testerů, provozních a podpůrných pracovníků. Společně vytvoří plán na vytvoření plně funkčního softwaru, který bude připraven k nasazení.

Nový kód se nasazuje každý den, jakmile jej vývojáři dokončí. Automatizovaný proces testování zajišťuje, že je kód připraven k implementaci. Jakmile kód projde automatizovanými testy, nasadí se pro malou skupinu uživatelů. Kód se krátce monitoruje, aby se zjistilo, zda nenastanou žádné nečekané problémy. Pokud je vše v pořádku, nový kód se nasadí pro všechny ostatní uživatele. Velká část kroků po plánování a vývoji probíhá bez lidského zásahu.

Fáze zralosti DevOps

Existuje několik fází zralosti DevOps. Zde jsou klíčové pojmy, které byste měli znát.

Vývoj podle vodopádového modelu

Před érou kontinuální integrace vývojové týmy psaly velké objemy kódu a poté je týmy z různých oddělení slučovaly pro vydání. Verze kódu se lišily natolik, že vyžadovaly rozsáhlé změny.

Provedení těchto změn trvalo i několik měsíců, což nebyl příliš efektivní proces.

Kontinuální integrace

Jde o praxi rychlého začleňování nově vyvinutého kódu do hlavní větve určené pro vydání. Kontinuální integrace pomáhá výrazně ušetřit čas při vydávání kódu.

DevOps tento koncept nezavedl. Kontinuální integrace je agilní inženýrská praxe, která vychází z metodologie extrémního programování. DevOps tuto praxi přijal, protože úspěšná kontinuální integrace vyžaduje automatizaci. Kontinuální integrace je často prvním krokem na cestě ke zralosti DevOps.

Z pohledu DevOps kontinuální integrace zahrnuje kroky jako kontrola kódu, jeho kompilace a spuštění nezbytných ověřovacích testů.

Kontinuální doručování

Jedná se o rozšíření kontinuální integrace a druhý stupeň zralosti DevOps.

Kontinuální doručování umožňuje přidat další automatizaci a testování. Díky tomu nejen rychle sloučíte kód s hlavní větví, ale získáte kód téměř připravený k nasazení bez lidského zásahu.

Je to praxe, kdy udržujete kódovou základnu ve stavu téměř připraveném k nasazení.

Kontinuální nasazení

Kontinuální nasazení je pokročilou evolucí kontinuálního doručování. Tato praxe nám umožňuje nasadit vše do produkce bez jakéhokoli lidského zásahu.

Tým, který pracuje na kontinuálním nasazení, nikdy nenasadí kód bez testování. Veškerý nově vytvořený kód prochází automatizovaným testováním, než se dostane do produkční fáze. Kód se nasadí pro malou skupinu uživatelů a sleduje se pomocí automatické zpětné vazby, která monitoruje kvalitu a využití, než se kód dostane do další fáze.

Malý počet společností, jako je Netflix, Etsy, Amazon, Pinterest, Flicker, IMVU, Google atd., používá kontinuální nasazování.

Přínos

DevOps se zaměřuje na rozvoj kultury spolupráce a zlepšování efektivity pomocí automatizace s využitím různých nástrojů. Chcete-li implementovat DevOps pro své softwarové řešení, musíte zkombinovat kulturu a nástroje.

Kultura DevOps

DevOps je specifická kultura, která pomáhá zlepšit spolupráci, omezit chaos, lépe zvládat sdílenou odpovědnost, implementovat automatizaci, zlepšit kvalitu, oceňovat zpětnou vazbu a automatizaci.

Agilní metody byly vždy nejlepším holistickým způsobem dodávání softwaru. Agilní vývojové týmy měří pokrok pomocí funkčního softwaru. Kultura DevOps umožňuje vlastníkům produktů, vývojářům, testerům a UX specialistům úzce spolupracovat na stejném cíli.

Nástroje DevOps

Zahrnuje nástroje pro správu konfigurace, testování a sestavení systémů, vývoj aplikací, řízení verzí a monitorování. Pro implementaci kontinuální integrace, kontinuálního doručování a kontinuálního nasazování jsou zapotřebí různé nástroje, i když se používají i některé stejné. Během procesu dodání budete muset používat více nástrojů.

Seznamme se s některými oblíbenými nástroji a postupy.

Úložiště zdrojového kódu – je to místo, kde vývojáři mohou nahrávat a měnit kód. Úložiště kódu spravuje různé verze kódu a zajišťuje, že vývojáři nepřepisují kód ostatních.

Git, Apache Subversion, IBM Rational, Artifactory, Nexus, Eclipse atd. patří mezi oblíbené nástroje pro úložiště kódu.

Build server: – Build server je nástroj pro automatizaci, který se používá ke kompilaci kódu z úložiště do spustitelné formy. Mezi často používané nástroje pro build server patří Jenkins, SonarQube a Artifactory.

Správa konfigurace – Puppet, Chef, Ansible, SaltStack, Run Deck atd. pomáhají spravovat konfiguraci aplikace a infrastruktury, aby byla zachována konzistence napříč prostředími.

Virtuální infrastruktura – AWS, GCP a Azure jsou tři největší poskytovatelé cloudových služeb, kteří nabízejí téměř všechny služby infrastruktury. Poskytují API, které vám umožňují poskytovat infrastrukturu a spravovat ji jako kód.

Závěr

Doufám, že vám tento článek poskytl představu o DevOps. Pokud vás toto téma zaujalo, můžete vyzkoušet online kurz.

Článek od Payal Goyal