Obsah[Skrýt][Ukázat]
Infrastruktura je důležitou součástí procesu vývoje softwaru, protože je přímo zodpovědná za hladký provoz softwarové aplikace. Servery, nástroje pro vyrovnávání zatížení, brány firewall, databáze a komplikované clustery kontejnerů jsou příklady infrastruktury.
Protože potíže s infrastrukturou prostupují celým vývojovým procesem, jsou relevantní i mimo produkční situace.
Zahrnují mimo jiné platformy CI/CD, pracovní prostředí a testovací nástroje.
Se zvyšující se složitostí softwarového produktu se tyto problémy s infrastrukturou stávají kritičtějšími. Tradiční technika ruční správy infrastruktury se rychle stává neškálovatelným řešením, které odpovídá aspiracím dnešních rychlých cyklů vývoje softwaru založených na DevOps.
V důsledku toho se dnes Infrastructure as Code (IaC) stala de facto vývojovým řešením. Infrastruktura jako kód (IaC) vám umožňuje škálovat a sledovat změny infrastruktury, jakmile nastanou.
V tomto díle se blíže podíváme na Infrastrukturu jako kód, včetně jejích výhod, proč je životně důležitá a dalších. Takže, pojďme začít.
Co je Infrastruktura jako kód?
Infrastructure as Code je proces poskytování a konfigurace prostředí pomocí kódu spíše než ruční konfigurace příslušných zařízení a systémů. Vývojáři spouštějí skripty po definování parametrů kódu a platforma IaC automaticky generuje cloudovou infrastrukturu.
Tyto automatizované konfigurace IT umožňují týmům rychle sestavit potřebné cloudové nastavení pro testování a provoz jejich produktu. Infrastructure as Code umožňuje vývojářům konstruovat jakoukoli komponentu infrastruktury, kterou chtějí, jako jsou sítě, vyrovnávače zatížení, databáze, virtuální stroje a druhy připojení.
Laicky řečeno, jde o proces zásobování a správy infrastruktury specifikované pomocí kódu, nikoli ručně. IaC je také důležitá technika DevOps, která je nezbytná pro rychlý životní cyklus poskytování softwaru.
Umožňuje týmům DevOps rychle budovat a verzovat infrastrukturu stejným způsobem, jakým je verzován zdrojový kód, a také sledovat tyto verze, aby se minimalizovala nekonzistence mezi IT prostředími, která může způsobit velké problémy během nasazení.
Deklarativní vs. imperativní přístupy k IaC
K IaC lze přistupovat dvěma způsoby: deklarativním nebo imperativním.
Nástroj IaC za vás nastaví systém, pokud použijete deklarativní přístup, který popisuje zamýšlený stav systému, včetně toho, jaké zdroje požadujete a jaké vlastnosti by měly mít.
Deklarativní přístup také udržuje přehled o aktuálním stavu vašich systémových objektů, což usnadňuje správu prostojů vaší infrastruktury. Na druhé straně imperativní metoda popisuje konkrétní instrukce, které musí být provedeny ve správném pořadí, aby se vytvořila zamýšlená konfigurace.
Mnoho technologií IaC používá deklarativní přístup k poskytování infrastruktury a bude to dělat automaticky. Deklarativní nástroj IaC za vás použije úpravy na požadovaný stav, pokud je provedete. Pokud používáte základní nástroj, budete muset zjistit, jak tyto úpravy použít. Nástroje IaC jsou často schopny pracovat v obou režimech, i když upřednostňují jeden před druhým.
Jak funguje Infrastruktura jako kód?
K úplné implementaci infrastruktury jako kódu musí být splněno několik požadavků.
Platforma pro cloud hosting jako služba (IaaS)
První a nejdůležitější potřebou je hosting pro vzdálený přístup. Nástroj pro správu konfigurace se musí připojit ke vzdálenému hostiteli a provést tam změny. Váš tým musí zaručit, že nástroj pro správu konfigurace má přístup, pokud je vzdálená infrastruktura spravována samostatně.
Rozhraní API na cloudové hostingové platformě s podporou IaaS umožňují zákazníkům vytvářet, odstraňovat a měnit zdroje infrastruktury na vyžádání. Systémy pro správu konfigurace mohou tato rozhraní API využít k další automatizaci těchto činností. Digital Ocean, Amazon AWS a Microsoft Azure jsou tři hlavní systémy IaaS.
Platforma pro správu konfigurace
Sada nástrojů, která se připojuje k rozhraním IaaS API a automatizuje typické operace, je dalším předpokladem pro dokončení IaC. Skupina lidí může spolupracovat na vytvoření kolekce skriptů a nástrojů. Vyžadovalo by to však značné úsilí, průběžnou údržbu a minimální návratnost investic. Terraform, Ansible, Salt Stack a Chef jsou jen některé z open source nástrojů pro správu konfigurace, které tuto výzvu zvládají.
Systém řízení verzí
Platforma pro správu konfigurace používá textové soubory napsané ve značkovacím jazyce, jako je YAML, k poskytování úloh a sekvencí, které má platforma provádět. S těmito textovými soubory lze zacházet jako s kódem aplikace a uložit je do úložiště správy verzí. Požadavky na stažení a kontroly kódu jsou povoleny v úložišti, které funguje jako jediný bod pravdy. Nejpopulárnější je systém pro správu verzí Git.
S těmito předpoklady zvažte následující scénář: vývojář si přeje přidat do systému novou aplikační službu. Tento příklad ilustruje proces IaC.
- Ve své preferované platformě pro správu konfigurace, Terraform, vývojář upravuje konfigurační textový soubor YAML. Změny uvádějí, že je vyžadován nový hostingový server.
- V úložišti Git vývojář potvrdí změny ve větvi funkcí. Vývojář vytvoří požadavek na stažení, protože úložiště Git projektu je hostováno na Bitbucket. Další člen týmu si prohlédne žádost o stažení a všimne si nových vylepšení infrastruktury. Požadavek na stažení je schválen členem týmu a vývojář začlení změnu do hlavní větve úložiště.
- K provedení aktualizace je v tomto kroku vyžadována konfigurační platforma. Vývojář může aktualizaci spustit ručně. Protože tým používá Bitbucket, má přístup k Bitbucket Pipelines a může jeden využít k automatizaci tohoto postupu.
- Terraform se po provedení připojí k IaaS týmu. Terraform používá IaaS API ke spuštění sekvence příkazů, které aktualizují IaaS na předpokládanou konfiguraci infrastruktury.
Výhody IaC
IaC pomáhá organizacím řídit jejich požadavky na IT infrastrukturu různými způsoby prostřednictvím automatizovaných postupů. Některé z výhod instalace IaC jsou následující:
- Konzistence: IaC může zvýšit konzistenci a snížit chyby, které se často vyskytují během ručního nastavení. Zabraňuje také posunu konfigurace, ke kterému může dojít během ruční operace. IaC vám umožňuje zabránit nezdokumentovaným, ad-hoc úpravám konfigurace kodifikací a dokumentací vašich konfiguračních standardů.
- Efektivita: Kódováním vaší infrastruktury se vytvoří zřizovací šablona, která usnadňuje konfiguraci, údržbu a správu systému. Vytváří flexibilní, opakovatelnou a škálovatelnou infrastrukturu. Výsledkem je, že DevOps může urychlit každou fázi vývoje softwaru, což má za následek, že je denně publikováno více aplikací.
- Snížené náklady: IaC umožňuje správu virtuálních strojů programově, čímž odstraňuje nutnost ruční konfigurace hardwaru a upgradů. Pomocí stejného kusu kódu může jeden operátor nainstalovat a spravovat jeden stroj nebo 1000 jednotek. V důsledku toho je zapotřebí méně zaměstnanců a již není potřeba nové vybavení, což vede ke značným úsporám nákladů.
- Rychlost: IaC zkracuje dobu, kterou potřebují vývojáři k dodání své infrastruktury tím, že ji přemění na jednoduchý skript. Výsledkem je, že nasazení aplikací již není zdržováno infrastrukturou a nový software lze dodávat podstatně rychleji.
- Snížit riziko: Jak doporučuje IaC ovládání verzí, vaše konfigurační soubory, stejně jako jakýkoli jiný soubor zdrojového kódu softwaru, lze vysledovat. V důsledku toho se riziko snižuje.
Jaký problém IaC řeší?
Infrastructure as Code byla vytvořena za účelem řešení problému posunu prostředí pro vydání kanálu. Bez IaC jsou týmy odpovědné za údržbu nastavení každého prostředí nasazení. Každé prostředí se vyvine ve sněhovou vločku, jedinečné uspořádání, které nelze automaticky replikovat.
Během nasazení způsobuje nekonzistence mezi prostředími problémy. Sněhové vločky potřebují manuální operace, které se obtížně řídí a přispívají k chybám při správě a údržbě infrastruktury.
Infrastructure as Code se drží myšlenky idempotence.
Idempotence odkazuje na skutečnost, že příkaz nasazení vždy konfiguruje cílové prostředí stejným způsobem, bez ohledu na počáteční stav prostředí. Idempotence je dosaženo buď automatickým nastavením stávajícího cíle, nebo zrušením stávajícího cíle a zahájením znovu.
Výsledkem je, že pomocí IaC týmy upravují popis prostředí a verzi konfiguračního modelu, který je často napsán v dobře zdokumentovaných formátech kódu, jako je JSON. Model je spuštěn v kanálu vydání za účelem nastavení cílových prostředí. Pokud tým potřebuje provést změny, upraví zdroj, nikoli cíl.
Jak záleží na IaC v DevOps?
Implementace metod DevOps a kontinuální integrace/průběžného doručování (CI/CD) vyžaduje použití IaC. Zbavuje vývojáře většiny povinností spojených s poskytováním a umožňuje jim pouze spustit skript, aby byla jejich infrastruktura uvedena do provozu.
Výsledkem je, že nasazení aplikací se nezastaví při budování infrastruktury a správci systému nejsou zatěžováni časově náročnými manuálními úkoly. Od integrace a testování přes dodání a nasazení spoléhá CI/CD na neustálou automatizaci a nepřetržité monitorování během životního cyklu aplikace. Aby automatizace fungovala, je nutné stálé prostředí.
Když vývojový tým dodává aplikace nebo konfiguruje prostředí jedním způsobem a provozní tým instaluje a konfiguruje prostředí jiným způsobem, není automatizace nasazení aplikací možná.
Metodologie DevOps sjednocuje vývojové a provozní týmy, což má za následek méně chyb, ruční nasazení a nekonzistence. Protože vývojové i provozní týmy mohou využívat stejný popis nasazení aplikace, IaC vám pomáhá synchronizovat vývoj a operace a umožňuje přístup DevOps.
Každé prostředí, včetně vašeho produkčního prostředí, by se mělo řídit stejnou metodou nasazení. Při každém použití IaC se vytvoří identické prostředí.
Proč investovat do čističky vzduchu?
DevOps silně spoléhá na infrastrukturu jako kód. Infrastructure as Code je přirozeným dalším krokem k tomu, aby byly vaše operace připraveny na budoucnost ve světě, kde převratné technologie neustále transformují IT sektor.
Umožňuje vám plně využít potenciál cloud computing, snižuje chyby spojené s manuální správou IT infrastruktury a zvyšuje rychlost vývoje softwaru. To vše je dosaženo při snížení provozních nákladů.
Napsat komentář