Infrastructure as Code (IaC) a devenit o parte importantă a proceselor noastre de CI/CD. Vorbim despre cod care definește și creează infrastructură, scris de persoane (și mai nou, de IA) care sunt, de multe ori, mult mai aproape de zona de infrastructură decât de cea de dezvoltare software propriu-zisă.
Dacă facem o analogie cu lumea hardware, lucrurile sunt similare, ținând cont de diferența dintre cei care scriu firmware (BIOS, UEFI etc.) și cei care dezvoltă aplicații. Paradoxal, cele mai sensibile părți ale sistemului sunt adesea scrise de oameni care sunt departe de titlul clasic de programator. În plus, aceste componente sunt dezvoltate folosind limbaje mai degrabă apropiate de scripting, cu propriile lor idiosincrazii.
În lumea mea, Terraform este cel mai popular tool de IaC. Popularitatea lui vine, în special, din faptul că poate crea infrastructură pe mai multe platforme cloud cât și on-prem. Relația mea cu acest tool este hate-hate. Cu siguranță își face treaba, dar limbajul (HashiCorp Configuration Language (HCL)) nu este neapărat pe gustul meu. Mai mult, există faimosul state file, acel fișier care știe ce este în infrastructura curentă, dar poate fi local sau în cloud, fiecare variantă venind cu propriile complicații. Cu toate acestea, fără îndoială, Terraform rămâne un tool popular.
Tocmai de aceea, am început să caut alternative. Prima idee a fost Bicep, care folosește un limbaj mainstream PowerShell. Dar "știe" doar Azure. Da! Este un pas înainte față de ARM (mecanismul intern al Azure). Concluzia, în cazul acestui research, este că Terraform rămâne mai puternic.
În cercetarea mea, am ajuns la Pulumi. Din start mi-a plăcut faptul că permite folosirea mai multor limbaje consacrate: TypeScript, JavaScript, Python, Go, C#, Java, direct în IDE-ul preferat, fapt care aduce două avantaje majore:
Poți folosi static code analyzers *(SAST)* pentru a evalua calitatea codului. Terraform are un anumit nivel de suport, dar maturitatea SAST pentru limbaje consacrate nu se compară.
Desigur că Pulumi are și elemente proprii, dar tot este mai mult cod. În plus, programatorii pot lucra acum la IaC, folosind cunoștințele deja existente - este exact ca și cum ai folosi o nouă librărie. Înainte, aceste taskuri erau realizate preponderent de oameni din zona de IT sau ingineri de sistem, adepți ai scripturilor, care scriau cod mission critical. Acum, pot contribui direct programatori care sunt deja adepți ai unui Software Development Life Cycle (SDLC) complet și cu toate metodele de asigurare a calității codului.
Din punct de vedere al capabilităților, Pulumi poate fi folosit atât pentru cloud, cât și pentru onprem (de exemplu, Kubernetes), similar cu Terraform. Totodată, vorbim și de state managment, aici folosind un serviciu online. Nu în ultimul rând, un alt aspect important este că Pulumi este Open-Source.
Apelând din nou la nano banana - toate imaginile din articol sunt AI generate- un mic tabel comparativ ar arăta cam așa: Sintetizând, pentru mine, faptul că programatorii pot prelua și zona de IaC este un avantaj major. De asemenea, există mai multă experiență în SDLC folosind limbaje precum C# sau JavaScript. SAST forever.
În plus, numărul de skilluri necesare într-o echipă de dezvoltare se reduce; nu mai este nevoie de învățarea unui alt limbaj de scripting dedicat exclusiv IaC.
Nu în ultimul rând, IA-ul înflorește pe o bază de cod mai mare. Așa că asistentul vostru IA preferat va fi mai relevant în Pulumi, doar pentru că limbajele folosite au o bază de utilizatori mult mai mare.
În concluzie, Pulumi este un tool la care ar merita să aruncați un ochi. Într-adevăr, are potențial, dar asta nu înseamnă că va înlocui (cel puțin, nu peste noapte) Terraform (sau alte tooluri similare), dar pentru anumite proiecte ar putea fi o alegere foarte potrivită.