Infraštruktúra je dôležitou súčasťou procesu vývoja softvéru, pretože je priamo zodpovedná za hladký chod softvérovej aplikácie. Servery, nástroje na vyrovnávanie zaťaženia, brány firewall, databázy a komplikované klastre kontajnerov sú príkladmi infraštruktúry.
Keďže ťažkosti s infraštruktúrou prechádzajú celým procesom vývoja, sú relevantné aj mimo produkčných situácií.
Zahŕňajú okrem iného platformy CI/CD, pracovné prostredia a testovacie nástroje.
S narastajúcou zložitosťou softvérového produktu sa tieto výzvy v oblasti infraštruktúry stávajú kritickejšími. Tradičná technika ručnej správy infraštruktúry sa rýchlo stáva neškálovateľným riešením, ktoré zodpovedá ašpiráciám dnešných rýchlych cyklov vývoja softvéru na báze DevOps.
Výsledkom je, že Infrastructure as Code (IaC) sa dnes stala de facto vývojovým riešením. Infrastructure as code (IaC) vám umožňuje škálovať a sledovať zmeny infraštruktúry, keď nastanú.
V tomto diele sa bližšie pozrieme na Infraštruktúru ako kód, vrátane jej výhod, prečo je životne dôležitá a ďalších. Takže, začnime.
Čo je Infraštruktúra ako kód?
Infrastructure as Code je proces poskytovania a konfigurácie prostredia pomocou kódu namiesto manuálneho konfigurovania príslušných zariadení a systémov. Vývojári spúšťajú skripty po definovaní parametrov kódu a platforma IaC automaticky generuje cloudovú infraštruktúru.
Takéto automatizované konfigurácie IT umožňujú tímom rýchlo zostaviť potrebné cloudové nastavenie na testovanie a prevádzku ich produktu. Infrastructure as Code umožňuje vývojárom konštruovať akýkoľvek komponent infraštruktúry, ktorý chcú, ako napríklad siete, vyrovnávače zaťaženia, databázy, virtuálne stroje a druhy pripojení.
Laicky povedané, ide o proces dodávania a správy infraštruktúry špecifikovanej pomocou kódu, a nie ručne. IaC je tiež dôležitá technika DevOps, ktorá je potrebná pre rýchly životný cyklus poskytovania softvéru.
Tímom DevOps umožňuje rýchlo zostaviť a verzovať infraštruktúru rovnakým spôsobom, akým sa verziuje zdrojový kód, ako aj sledovať tieto verzie, aby sa minimalizovala nekonzistentnosť medzi prostrediami IT, ktorá môže spôsobiť veľké problémy počas nasadenia.
Deklaratívne vs. imperatívne prístupy k IaC
K IaC možno pristupovať dvoma spôsobmi: deklaratívne alebo imperatívne.
Nástroj IaC za vás nastaví systém, ak použijete deklaratívny prístup, ktorý popisuje zamýšľaný stav systému vrátane toho, aké zdroje požadujete a aké vlastnosti by mali mať.
Deklaratívny prístup tiež udržiava prehľad o aktuálnom stave vašich systémových objektov, čo uľahčuje riadenie výpadkov vašej infraštruktúry. Na druhej strane imperatívna metóda načrtáva konkrétne inštrukcie, ktoré sa musia vykonať v správnom poradí, aby sa vytvorila zamýšľaná konfigurácia.
Mnoho technológií IaC používa deklaratívny prístup k poskytovaniu infraštruktúry a bude to robiť automaticky. Ak ich vykonáte, deklaratívny nástroj IaC za vás použije úpravy na požadovaný stav. Ak používate základný nástroj, budete musieť zistiť, ako tieto úpravy použiť. Nástroje IaC sú často schopné pracovať v oboch režimoch, hoci uprednostňujú jeden pred druhým.
Ako funguje Infrastructure as code?
Na úplnú implementáciu infraštruktúry ako kódu je potrebné splniť niekoľko požiadaviek.
Platforma pre cloud hosting ako služba (IaaS)
Prvou a najdôležitejšou potrebou je vzdialený prístup k hostingu. Nástroj na správu konfigurácie sa musí pripojiť k vzdialenému hostiteľovi a vykonať tam zmeny. Váš tím musí zaručiť, že nástroj na správu konfigurácie má prístup, ak je vzdialená infraštruktúra spravovaná samostatne.
Rozhrania API na cloudovej hostingovej platforme s podporou IaaS umožňujú zákazníkom vytvárať, odstraňovať a meniť zdroje infraštruktúry na požiadanie. Systémy na správu konfigurácie môžu použiť tieto rozhrania API na ešte väčšiu automatizáciu týchto činností. Digital Ocean, Amazon AWS a Microsoft Azure sú tri hlavné systémy IaaS.
Platforma pre správu konfigurácie
Sada nástrojov, ktorá sa pripája k rozhraniam IaaS API a automatizuje typické operácie, je ďalším predpokladom dokončenia IaC. Skupina ľudí môže spolupracovať na vytvorení zbierky skriptov a nástrojov. Vyžadovalo by si to však značné úsilie, neustálu údržbu a minimálnu návratnosť investícií. Terraform, Ansible, Salt Stack a Chef sú len niektoré z nástrojov na správu konfigurácie s otvoreným zdrojom, ktoré zvládajú túto výzvu.
Systém riadenia verzií
Platforma na správu konfigurácie používa textové súbory napísané v značkovacom jazyku, ako je YAML, na poskytovanie úloh a sekvencií, ktoré má platforma vykonávať. S týmito textovými súbormi možno zaobchádzať ako s kódom aplikácie a uložiť ich do archívu správy verzií. Požiadavky na stiahnutie a preskúmanie kódu sú povolené v úložisku, ktoré funguje ako jediný bod pravdy. Najpopulárnejší je systém na správu verzií Git.
Keď sú splnené tieto predpoklady, zvážte nasledujúci scenár: vývojár chce pridať novú aplikačnú službu do systému. Tento príklad ilustruje proces IaC.
- Vo svojej preferovanej platforme na správu konfigurácie, Terraform, vývojár modifikuje konfiguračný textový súbor YAML. Zmeny uvádzajú, že je potrebný nový hostingový server.
- V úložisku Git vývojár vykoná zmeny vo vetve funkcií. Vývojár vytvorí požiadavku na stiahnutie, pretože úložisko Git projektu je hosťované na Bitbucket. Ďalší člen tímu si prezerá žiadosť o stiahnutie a všimne si nové vylepšenia infraštruktúry. Požiadavku na stiahnutie schváli člen tímu a vývojár integruje zmenu do hlavnej vetvy úložiska.
- Na vykonanie aktualizácie je v tomto kroku potrebná konfiguračná platforma. Vývojár môže aktualizáciu spustiť manuálne. Pretože tím používa Bitbucket, má prístup k Bitbucket Pipelines a môže ho využiť na automatizáciu tohto postupu.
- Terraform sa po vykonaní pripojí k IaaS tímu. Terraform používa IaaS API na spustenie sekvencie príkazov, ktoré aktualizujú IaaS na predpokladanú konfiguráciu infraštruktúry.
Výhody IaC
IaC pomáha organizáciám riadiť ich požiadavky na IT infraštruktúru rôznymi spôsobmi prostredníctvom automatizovaných postupov. Niektoré z výhod inštalácie IaC sú nasledovné:
- Konzistencia: IaC môže zvýšiť konzistenciu a znížiť chyby, ktoré sa často vyskytujú pri manuálnom nastavení. Zabraňuje tiež posunu konfigurácie, ku ktorému môže dôjsť počas ručnej prevádzky. IaC vám umožňuje zabrániť nezdokumentovaným, ad-hoc úpravám konfigurácie kodifikáciou a zdokumentovaním vašich konfiguračných štandardov.
- Efektivita: Kódovaním vašej infraštruktúry sa vytvorí šablóna poskytovania, ktorá zjednoduší konfiguráciu, údržbu a správu systému. Vytvára flexibilnú, opakovateľnú a škálovateľnú infraštruktúru. Výsledkom je, že DevOps môže urýchliť každú fázu vývoja softvéru, čo vedie k tomu, že denne je publikovaných viac aplikácií.
- Znížené náklady: IaC umožňuje spravovať virtuálne stroje programovo, čím sa odstraňuje potreba manuálnej konfigurácie hardvéru a upgradov. Pomocou rovnakého kódu môže jeden operátor nainštalovať a spravovať jeden stroj alebo 1000 jednotiek. V dôsledku toho je potrebných menej zamestnancov a už nie je potrebné nové vybavenie, čo vedie k značným úsporám nákladov.
- Rýchlosť: IaC skracuje čas, ktorý potrebujú vývojári na dodanie infraštruktúry tým, že ju premení na jednoduchý skript. Výsledkom je, že nasadenie aplikácií už nie je oneskorené infraštruktúrou a nový softvér možno dodať podstatne rýchlejšie.
- Znížiť riziko: Ako nabáda IaC kontrola verzie, vaše konfiguračné súbory, rovnako ako akýkoľvek iný súbor zdrojového kódu softvéru, je možné sledovať. V dôsledku toho sa riziko znižuje.
Aký problém rieši IaC?
Infrastructure as Code (Infrastructure as Code) bola vytvorená s cieľom riešiť problém posunu prostredia v rámci uvoľňovacieho kanála. Bez IaC sú tímy zodpovedné za udržiavanie nastavení každého prostredia nasadenia. Každé prostredie sa vyvinie do snehovej vločky, jedinečného usporiadania, ktoré sa nedá automaticky replikovať.
Počas nasadenia spôsobuje nekonzistentnosť medzi prostrediami problémy. Snehové vločky potrebujú manuálne operácie, ktoré sa ťažko spravujú a prispievajú k chybám pri správe a údržbe infraštruktúry.
Infrastructure as Code sa drží myšlienky idempotencie.
Idempotencia sa týka skutočnosti, že príkaz nasadenia vždy konfiguruje cieľové prostredie rovnakým spôsobom, bez ohľadu na počiatočný stav prostredia. Idempotencia sa dosiahne buď automatickým nastavením existujúceho cieľa, alebo zrušením existujúceho cieľa a začatím odznova.
Výsledkom je, že pomocou IaC tímy upravujú popis prostredia a verziu konfiguračného modelu, ktorý je často napísaný v dobre zdokumentovaných formátoch kódu, ako je JSON. Model je spustený v procese vydania na nastavenie cieľových prostredí. Ak tím potrebuje vykonať zmeny, upraví zdroj, nie cieľ.
Ako záleží na IaC v DevOps?
Implementácia metodológií DevOps a kontinuálnej integrácie/kontinuálneho doručovania (CI/CD) si vyžaduje použitie IaC. Oslobodzuje vývojárov od väčšiny povinností spojených s poskytovaním, čo im umožňuje iba spustiť skript na uvedenie infraštruktúry do prevádzky.
Výsledkom je, že nasadzovanie aplikácií sa nezastaví počas budovania infraštruktúry a správcovia systému nie sú zaťažení časovo náročnými manuálnymi úlohami. Od integrácie a testovania cez dodávku a nasadenie sa CI/CD spolieha na neustálu automatizáciu a nepretržité monitorovanie počas životného cyklu aplikácie. Aby automatizácia fungovala, je potrebné stále prostredie.
Keď vývojový tím dodáva aplikácie alebo konfiguruje prostredia jedným spôsobom a operačný tím inštaluje a konfiguruje prostredie iným spôsobom, automatizácia nasadzovania aplikácií nie je možná.
Metodológia DevOps zosúlaďuje vývojové a prevádzkové tímy, čo vedie k menšiemu počtu chýb, manuálnemu nasadeniu a nekonzistentnosti. Pretože vývojové aj prevádzkové tímy môžu využívať rovnaký popis nasadenia aplikácie, IaC vám pomáha synchronizovať vývoj a operácie, čo umožňuje prístup DevOps.
Každé prostredie vrátane vášho produkčného prostredia by sa malo riadiť rovnakou metódou nasadenia. Pri každom použití IaC sa vytvorí identické prostredie.
záver
DevOps sa vo veľkej miere spolieha na infraštruktúru ako kód. Infrastructure as Code je prirodzeným ďalším krokom k tomu, aby boli vaše prevádzky pripravené na budúcnosť vo svete, kde prevratné technológie neustále transformujú IT sektor.
Umožňuje vám naplno využiť potenciál cloud computing, znižuje chyby spojené s manuálnou správou IT infraštruktúry a zvyšuje rýchlosť vývoja softvéru. To všetko sa dosahuje pri znižovaní prevádzkových nákladov.
Nechaj odpoveď