Tento článek porovnává přístupy infrastruktura jako kód (IaC) a správa konfigurace (ConfigMgmt) s cílem objasnit, který z nich je vhodnější pro zjednodušení a automatizaci vývoje softwaru.
Díky automatizaci v DevOps mohou vývojové týmy rychle implementovat software – stačí napsat kód a odeslat ho na online platformy využívající služby, jako jsou správa konfigurace a infrastruktura jako kód.
Pro efektivní automatizaci procesů v DevOps je klíčové pochopit podstatu IaC a ConfigMgmt, včetně jejich rozdílů. Nyní se na to podíváme detailněji!
Infrastruktura jako kód (IaC)
Infrastruktura jako kód je DevOps postup, který umožňuje vývojovým týmům rychle získávat IT infrastrukturu pro urychlení nasazování aplikací. Tím se výrazně zkracuje doba potřebná k uvedení produktů na trh. IaC využívá popisný programovací jazyk pro automatizované poskytování IT infrastruktury.
Vývojáři se tak vyhnou manuální správě serverů, databázových připojení, operačních systémů, testovacího softwaru, systémů pro zpětnou vazbu, úložišť a dalších komponent. Navíc se eliminuje nutnost konfigurovat a upravovat IT infrastrukturu pro každý nový projekt.
Stručně řečeno, IaC je odpovědí na rostoucí požadavky na flexibilitu IT infrastruktury v moderním vývoji softwaru.
Základní prvky infrastruktury jako kódu
Neměnný IaC
Neměnné IaC označuje situaci, kdy vývojáři nemají možnost modifikovat původní prvky infrastruktury systému. Tato praxe podporuje konzistenci konfigurací kódu i infrastruktury až do finální verze aplikace.
Případné úpravy vyžadují vytvoření nové infrastruktury. Tento postup je z hlediska IaC efektivnější a logičtější.
Proměnlivý IaC
Proměnlivá infrastruktura umožňuje vývojářům měnit stav IaC i po jeho zřízení. Tato flexibilita umožňuje vývojovým týmům rychle reagovat na změny.
V případě náhlých změn v softwarovém produktu může tým okamžitě přizpůsobit infrastrukturu. Proměnlivé IaC také usnadňuje reakce na bezpečnostní hrozby. Nicméně, v rámci takového IaC je sledování konzistence kódu náročnější.
Deklarativní IaC
Deklarativní IaC umožňuje specifikovat požadovaný konečný stav IT infrastruktury pro vývoj a testování softwaru.
Po definování požadavků platforma IaC automaticky spustí kontejnery nebo virtuální stroje, instaluje potřebný software, konfiguruje systémy, řeší závislosti a spravuje verze.
Imperativní IaC
Imperativní IaC umožňuje vytvářet interní automatizační skripty. Skript poté krok za krokem zajišťuje potřebnou infrastrukturu. Stávající správci systému tak mohou automatizaci konfigurovat a spouštět.
Výhody infrastruktury jako kódu
Rychlejší uvedení aplikací na trh
Díky cloudovým výpočetním systémům a virtualizaci, které poskytují vhodné prostředí pro vývoj, testování, ladění a produkci softwaru, se zkracuje doba potřebná pro uvedení aplikací na trh. Vaše aplikace tak mohou být na trhu rychleji než konkurence.
Méně změn konfigurace
Při práci s fixní a automaticky aktualizovanou IT infrastrukturou dochází k menšímu množství ad hoc změn konfigurace. Tím se zvyšuje konzistence softwarového kódu a snižuje se potřeba ladění.
Zvýšená konzistence
Automatizované zajišťování IT infrastruktury pro vývoj aplikací zajišťuje shodu s regulačními požadavky. Minimalizují se změny kódu a postupů, což vede k větší konzistenci konečného produktu.
Efektivnější vývojové cykly
Nástroje IaC eliminují manuální kroky v procesech vývoje, ladění, CI/CD, zajišťování kvality (QA) a provozu. Celý cyklus vývoje softwaru se tak zrychluje, stává se odolnějším vůči chybám a celkově efektivnější.
Ochrana proti ztrátě know-how
IaC pomáhá vyhnout se prostojům ve vývoji v případě, že zaměstnanci zodpovědní za poskytování infrastruktury opustí firmu. Jakmile je nástroj IaC jednou nakonfigurován, informace o poskytování služeb zůstávají dostupné v rámci organizace.
Nižší výrobní náklady
Náklady na výrobu softwaru se výrazně snižují díky eliminaci nutnosti pořizovat vlastní IT infrastrukturu, najímat specializované IT administrátory atd. Infrastruktura se jednoduše zajišťuje na vyžádání od poskytovatelů spravovaných služeb (MSP) za dostupné ceny.
Výzvy infrastruktury jako kódu
- Hlavní výzvou pro pracovní postup IaC je posun konfigurace. Takové problémy se nevyhnutelně vyskytnou i přes pečlivé a konzistentní konfigurace.
- Některé části vývojového procesu, jako je kódování, stále vyžadují manuální práci. Chyby v kódu mohou způsobit četné problémy v automatizovaném pracovním postupu IaC.
- Pro menší vývojové projekty se může IaC ukázat jako nákladné řešení, jelikož omezený počet poskytovatelů nástrojů IaC vede k monopolizaci cen.
Produkty infrastruktury jako kódu na trhu
Ansible
Ansible je nástroj pro konfiguraci a orchestraci od společnosti Red Hat. Tento IaC nástroj se zaměřuje na automatizaci a jednoduchost. Obsahuje knihovnu různých přednastavených konfigurací, které umožňují nasazení aplikací bez nutnosti manuálního nastavení.
Terraform
Terraform je v současnosti lídrem v oblasti IaC díky svým standardním funkcím dostupným zdarma. Pro potřeby podniků je však k dispozici i placené předplatné s rozšířenou podporou. Podporuje většinu cloudových platforem, jako jsou GCP, Azure a AWS.
AWS CloudFormation
Služba IaC AWS CloudFormation je zdarma v rámci využití ostatních služeb AWS. Je kompatibilní pouze s AWS a nepodporuje infrastruktury třetích stran.
Google Cloud Deployment Manager
Je to primární služba pro poskytování infrastruktury v rámci prostředí GCP. Využívá deklarativní jazyk pro automatické vytváření, konfiguraci, zajišťování a správu zdrojů GCP.
Azure Resource Manager
Tento IaC nástroj od Microsoftu se specializuje na poskytování IT infrastruktury v cloudovém prostředí Azure. Azure Resource Manager nabízí šablony ARM pro automatické zpracování infrastruktury a závislostí.
Pulumi
IaC nástroj Pulumi nabízí oproti konkurenci větší flexibilitu. Je kompatibilní s různými programovacími jazyky, jako jsou JavaScript, Go, TypeScript, C#, Python atd., což ho činí atraktivním pro mnohé vývojové projekty.
Správa konfigurace (ConfigMgmt)
Správa konfigurace se zaměřuje na sledování a ukládání metadat o technologických aktivech, softwaru a hardwaru IT společnosti.
V rámci vývoje softwaru se běžně evidují informace o verzích kódu, specifikacích serverů pro nasazování aplikací, operačních systémech, verzích softwaru atd.
Většina systémů správy konfigurace využívá automatizovaný software pro efektivitu a cenovou dostupnost. Automatizace v rámci ConfigMgmt snižuje riziko lidských chyb a usnadňuje zavádění kontrol a redundancí.
ConfigMgmt zahrnuje vše, co souvisí s informačními technologiemi a digitálními systémy. Typická aktiva, která se v rámci ConfigMgmt sledují, jsou například:
- Cloudová úložiště
- Fyzická paměťová zařízení
- Databáze
- Operační systémy
- Nástroje pro ladění
- Servery pro nasazování aplikací
- Vyvinuté a publikované aplikace
- Aplikace ve fázi vývoje
- Síťová infrastruktura
- Virtuální a fyzická výpočetní zařízení
Základní prvky správy konfigurace
Zjišťování fyzických a virtuálních IT aktiv
Tento prvek ConfigMgmt se soustředí na inventarizaci existujících IT aktiv, které jsou relevantní pro IT operace a vývoj aplikací. Metadata těchto systémů se následně ukládají do centrálního úložiště ConfigMgmt.
Benchmarking IT aktiv
Zajišťuje srovnání aplikací, nástrojů a fyzických prostředků podle funkčních potřeb. U rozpracovaných aplikací se benchmarking provádí v testovacím prostředí.
Řízení verzí kódu a aplikací
Řízení verzí je klíčovým prvkem správy konfigurace. K evidenci dat o specifikacích aplikací, nástrojů, softwaru a fyzických aktiv lze využít systémy jako Git. Software pro řízení verzí umožňuje návrat k dříve známé správné konfiguraci v případě, že aktualizace způsobí problémy.
Kontrola a zabezpečení
Prvek kontroly umožňuje auditovat informace o verzích kódu a softwaru, historické změny a stopy. Díky tomu je možné rychle identifikovat případná narušení bezpečnosti.
Přístup ke kódu a jeho historii verzí je obvykle řešen skrze stejný systém správy verzí jako Git, což usnadňuje monitorování.
Přístup ke kódové základně lze také řídit na základě rolí, což napomáhá ochraně duševního vlastnictví.
Výhody správy konfigurace
Centralizovaná znalostní báze
ConfigMgmt pomáhá vytvořit centrální úložiště specifikací fyzických a virtuálních aktiv. API klíče, verze kódu, ad-hoc změny, specifikace serverů atd. jsou tak snadno dostupné, což snižuje stres.
Zvýšená odpovědnost
Vývojový, provozní a QA týmy nesou větší odpovědnost za svou práci, protože díky ConfigMgmt mohou manažeři zpětně dohledat původce případných problémů.
Sjednocení softwarového prostředí
Pracovní postupy správy konfigurace umožňují sjednotit softwarové prostředí pro testování a produkci, což přispívá k vyšší konzistenci a odolnosti konečného produktu.
Obnova po havárii
V případě katastrofických selhání může tým rychle obnovit poslední známou funkční konfiguraci z systému pro správu verzí (např. Git).
Výzvy správy konfigurace
- Hlavní hrozbou pro správu konfigurace je flexibilita v rámci procesu vývoje, která umožňuje ad hoc změny softwarového kódu bez předchozího schválení.
- Střední až velké IT společnosti shromažďují terabajty dat konfigurací systémů, což ztěžuje oddělení kritických konfigurací od nekritických.
- Schvalování požadavků na ověření změn může být náročné, jelikož kontrola celého softwaru, kódové základny a závislostí je časově náročná.
- Správa konfigurace se stává náročnější, pokud outsourcing vývojových úkolů probíhá u dodavatelů v různých časových pásmech.
Produkty pro správu konfigurace na trhu
Salt Project
Salt Project je jedním z populárních nástrojů ConfigMgmt s otevřeným zdrojovým kódem. Je založen na jazyce Python a vývojovém rámci. Vývojáři však mohou snadno přizpůsobit jeho moduly pro podporu jiných programovacích jazyků.
Rudder
Kromě automatizace IT infrastruktury poskytuje Rudder robustní platformu pro správu konfigurace. Nabízí centrální řídicí panel pro správu specifikací a konfigurací operačních systémů, serverů, virtuálních strojů a nasazovacích prostředí.
CFEngine
CFEngine slouží jako centrální nástroj pro správu serverů, síťových aktiv a kódů. Pomocí jeho řídicího panelu lze vizualizovat stav majetku firmy a aktuální verze. Aplikace je navíc nenáročná na systémové prostředky.
Puppet
Puppet využívá proprietární deklarativní jazyk pro popis konfigurací systémů a IT aktiv. Je snadno ovladatelný i pro začátečníky a vyžaduje minimální znalosti kódování.
Auvik
Auvik je robustní placený nástroj pro správu konfigurace. Nabízí moderní DevOps funkce, jako je správa IT aktiv, monitorování výkonu, zálohování konfigurace, integrace, zabezpečení, sandbox a analýza NetFlow.
Infrastruktura jako kód vs. Správa konfigurace
IaC i ConfigMgmt mají stejný cíl: automatizovat vývoj softwaru, snížit náklady, zkrátit dobu uvedení na trh a zvýšit návratnost investic (ROI). Liší se však funkcionalitou, účelem a komponentami.
Tyto rozdíly se odrážejí i v nástrojích IaC a ConfigMgmt dostupných na trhu. IaC se primárně uplatňuje v počátečních fázích vývoje softwaru, a to při nastavování, správě a úpravě infrastruktury a nastavení aplikací.
Naproti tomu nástroje pro správu konfigurace pomáhají automatizovat aspekty vývoje softwaru, jako je správa infrastruktury, prvotní nastavení aplikací a jejich správa.
Infrastruktura jako kód vs. Správa konfigurace: Klíčové rozdíly
Funkce | Infrastruktura jako kód | Správa konfigurace |
Případy použití | Poskytování zdrojů IT infrastruktury pro vývoj aplikací | Ukládání specifikací IT aktiv a záznamů o konfiguraci |
IT aktiva | IaC se zaměřuje hlavně na IT aktiva jako servery, virtuální stroje a zdroje cloud computingu | ConfigMgmt se zabývá veškerým hardwarem a softwarem IT |
Princip práce | Správce systému definuje konečný stav infrastruktury a automatizovaný systém provádí všechny potřebné nastavení | Pro ukládání verzí softwaru se využívají systémy řízení verzí (např. Git) spolu s kódovou základnou a historií změn |
Řešení problémů | Nastavení, správa a manipulace s IT infrastrukturou | Řízení verzí aplikací, nástrojů, softwaru, historie změn, schvalování změn atd. |
Flexibilita | 1. Proměnlivé IaC umožňuje úpravy po nastavení 2. Neměnné IaC úpravy neumožňují |
Systémy ConfigMgmt mají přísná pravidla pro ad hoc změny |
Cloud/On-Site | Automatizace IT infrastruktury je k dispozici jak pro lokální, tak i cloudové prostředí | Závisí především na cloudovém úložišti a výpočetních instancích |
Závěrečná slova
Je důležité mít jasnou představu o infrastruktuře jako kódu a správě konfigurace. Porozumění rozdílům mezi těmito technologiemi automatizace by mělo objasnit nejčastější dotazy ohledně rozdílu mezi infrastrukturou jako kódem a správou konfigurace.
Nyní, v závislosti na vašem vývojovém prostředí, si můžete vybrat IaC, ConfigMgmt, nebo kombinaci obou. Týmy bezserverového vývoje budou většinou vyžadovat IaC.
Na druhou stranu, pokud vaše organizace pracuje s velkým počtem fyzických systémů, virtuálních výpočetních prostředí a nasazuje mnoho verzí aplikací, budete pravděpodobně potřebovat správu konfigurace.
Mohlo by vás také zajímat porovnání nástrojů DevOps pro automatizovaný a efektivní vývoj softwaru.