Infraštruktúra ako kód: prečo už neklikať servery v konzole
Servery, siete a databázy naklikané ručne v AWS konzole sa časom nedajú zopakovať ani skontrolovať. Vysvetľujeme, čo je infraštruktúra ako kód, aké nástroje vybrať a ako na ňu prejsť postupne – bez výpadku.
Pipoline4 min čítania
Takmer každá firma, ktorá je v cloude pár rokov, má rovnaký príbeh. Prvý server sa naklikal v konzole, lebo to bolo rýchle. Potom pribudla databáza, load balancer, pár pravidiel vo firewalle a testovacie prostredie „rovnaké ako produkcia“. Po čase už nikto presne nevie, prečo je čo nastavené tak, ako je – a človek, ktorý to klikal, už vo firme nemusí byť.
Infraštruktúra ako kód (Infrastructure as Code, IaC) tento problém rieši tak, že celé prostredie popíše v textových súboroch, ktoré sa správajú ako bežný zdrojový kód.
Čo to v praxi znamená
Namiesto klikania v konzole napíšete, aký stav chcete mať: dva servery tohto typu, databázu s denným zálohovaním, sieť s takýmito pravidlami. Nástroj (napríklad Terraform) porovná tento popis so skutočnosťou v cloude a urobí len nevyhnutné zmeny.
resource "aws_db_instance" "app" {
engine = "postgres"
instance_class = "db.t4g.medium"
allocated_storage = 50
multi_az = true
backup_retention_period = 14
deletion_protection = true
}
Z týchto pár riadkov je hneď jasné, že databáza beží vo dvoch zónach, zálohy sa držia 14 dní a nedá sa omylom zmazať. V konzole by ste to hľadali na troch rôznych obrazovkách.
Prečo sa to oplatí
Opakovateľnosť
Nové prostredie – testovacie, pre nového zákazníka alebo v inom regióne – vznikne z rovnakého kódu za minúty, nie za dni. A bude naozaj rovnaké, nie „skoro rovnaké“.
História a kontrola zmien
Kód je v Gite, takže pri každej zmene vidíte, kto ju urobil, kedy a prečo. Zmena prejde code review ako akýkoľvek iný kód a pred nasadením ukáže presný plán: čo sa vytvorí, zmení alebo zmaže.
Obnova po havárii
Ak sa niečo pokazí alebo potrebujete prostredie postaviť znova, máte presný recept. Spolu so zálohami dát je to základ každého plánu obnovy.
Bezpečnosť a audit
Bezpečnostné nastavenia – šifrovanie, prístupové práva, otvorené porty – sú zapísané a dajú sa automaticky kontrolovať ešte pred nasadením. Nástroje ako Checkov alebo tfsec upozornia napríklad na verejne prístupný S3 bucket skôr, ako vôbec vznikne.
Menšia závislosť od ľudí
Vedomosti o infraštruktúre nie sú len v hlave jedného administrátora, ale v repozitári. Nový kolega alebo externý partner sa zorientuje z kódu.
Aké nástroje vybrať
- Terraform / OpenTofu – najrozšírenejší nástroj s podporou takmer všetkých cloudov a služieb. OpenTofu je jeho open source fork pod Linux Foundation, ktorý vznikol po zmene licencie Terraformu v roku 2023. Pre väčšinu projektov je to rozumná voľba.
- Pulumi – infraštruktúru píšete v bežnom programovacom jazyku (Python, TypeScript, Go). Hodí sa tímom, ktoré chcú cykly, funkcie a testy ako v aplikačnom kóde.
- AWS CloudFormation / CDK – natívne nástroje AWS. Dávajú zmysel, ak ste len v AWS a nechcete ďalší nástroj.
- Ansible – skôr na nastavenie toho, čo beží vnútri serverov (balíčky, konfigurácia, používatelia). S Terraformom sa dobre dopĺňa.
Nástroj je menej dôležitý ako disciplína: všetky zmeny idú cez kód, nie ručne cez konzolu.
Ako na to prejsť bez výpadku
Prechod nemusí byť veľký tresk. Takto postupujeme pri existujúcej infraštruktúre:
- Inventúra – zmapujeme, čo v účte beží, a oddelíme to, čo sa dá zmazať, od toho, čo treba zachovať.
- Import existujúcich zdrojov – Terraform aj OpenTofu vedia existujúce servery, siete či databázy prevziať do správy bez toho, aby ich znova vytvárali. Používatelia nič nepostrehnú.
- Stav na bezpečnom mieste – súbor so stavom infraštruktúry ukladáme centrálne (napríklad v šifrovanom S3) so zámkom, aby dve zmeny nebežali naraz.
- Nasadzovanie cez CI/CD – zmena sa navrhne v pull requeste, pipeline ukáže plán a po schválení ho aplikuje. Ručné zásahy do konzoly sa obmedzia len na čítanie.
- Kontrola driftu – pravidelne overujeme, či sa skutočnosť nezačala líšiť od kódu, napríklad kvôli ručnej „rýchlej oprave“ v noci.
Najlepšie je začať tam, kde to najviac bolí: často je to sieť a prístupové práva, alebo prostredie, ktoré treba čoskoro zduplikovať.
Kedy sa to (zatiaľ) neoplatí
Pre jeden malý server s webom, ktorý sa nemení, je IaC zbytočná práca navyše. Zlom prichádza, keď máte viac prostredí, viac ľudí, ktorí do infraštruktúry zasahujú, alebo požiadavky na audit a obnovu. Vtedy sa investícia vráti veľmi rýchlo.
⚙️ Chcete mať infraštruktúru pod kontrolou?
V rámci DevOps služieb prevedieme vašu existujúcu infraštruktúru do kódu, nastavíme nasadzovanie cez CI/CD a všetko zdokumentujeme. Kód zostáva vo vašom repozitári. Ak staviate nové prostredie, s IaC počítame už pri návrhu AWS architektúry. Ozvite sa nám – úvodná konzultácia je nezáväzná.