Ce este IaC? Infrastructura definită în cod
Unelte utile la definirea serverelor și serviciilor în cloud
IaC, sau Infrastructure as code este o paradigmă mai nouă care se referă la definirea serverelor, rutelor și serviciilor necesare pentru rularea unei aplicații într-un limbaj standardizat:
De exemplu, imaginea de mai sus descrie o coadă AWS SQS, un serviciu oferit de cloud-ul Amazon Web Services etichetat cu Environment = dev.
Unul dintre avantajele acestei abordări este că putem defini infrastructura în același repository ca și proiectul. Apoi, este mult mai ușor de modificat, sau de definit reguli de scalare, dar probabil cel mai mare avantaj este auditul costurilor. Dacă toată infrastructura este definită astfel, există unelte care pot estima foarte bine costurile necesare rulării unui serviciu sau aplicații pe un cloud la alegere.
La fel și auditurile de securitate pot fi făcute chiar înainte de a pune un proiect în producție.
Din păcate nu există un limbaj sau o unealtă suportată oficial, care să ofere un mod unitar și compatibil cu toate serviciile cloud.
O categorie separată aici este Kubernetes, care este mai degrabă un orchestrator de containere. Iar pentru a-l folosi, este necesar ca deploy-ul de să facă pe un cluster de Kubernetes.
Terraform
Este probabil unul dintre cele mai cunoscute unelte de management a infrastructurii din cod. Are și o ediție open-source pe care o poți folosi pentru defini servicii și infrastructură. Este compatibil cu toți cei trei mari cloud providers, însă este extensibil și dispune de module și pentru integrarea cu alți provideri cum ar fi Contabo sau Digital Ocean.
Platform.sh
Am folosit acest serviciu pentru un proiect pe Symfony. Folosește YAML pentru configurații și este mai developer friendly din experiența mea, însă nu este gratuit. Un feature care mi-a plăcut este mediul de staging, unde poți încerca implementări noi, cu date pe date sample din producție, înainte de a încărca codul în mediul de producție.
Ansible
Este un tool care inițial era destinat configurării serverelor de aplicații, însă acum are și capabilități de a crea infrastructură în cloud, prin sistemul de module care oferă integrarea cu servicii de cloud. De exemplu prin integrarea unui control node Ansible cu Azure DevOps, putem crea la cerere (on-demand) infrastructură pe cloud-ul Microsoft Azure.
Află mai multe: