Infrastructure-as-Code versus Configuration Management: Klíčové rozdíly

Photo of author

By etechblogcz

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.