Hi ha diverses eines per fer Infraestructura com a Codi. Les més conegudes són Terraform, CloudFormation, Pulumi i CDK. En aquest subcapítol les comparem perquè entenguis les seves diferències i, sobretot, per què aquest llibre tria Terraform. No es tracta que una sigui «la millor» en abstracte, sinó de quina encaixa millor per aprendre i per a la majoria de casos.

Les quatre eines

Terraform (de HashiCorp)

  • Què és: l’eina de IaC més popular i la protagonista d’aquest llibre.
  • Llenguatge: HCL (HashiCorp Configuration Language), un llenguatge declaratiu creat específicament per descriure infraestructura. És fàcil de llegir (ho veurem al Capítol 10).
  • Multi-núvol: funciona amb AWS, Azure, GCP i centenars de proveïdors més, tots amb el mateix llenguatge. Aquesta és la seva gran avantatge.
  • Declaratiu: sí (com vam veure al subcapítol 9.2).

CloudFormation (d’AWS)

  • Què és: l’eina de IaC nativa d’AWS.
  • Llenguatge: fitxers YAML o JSON.
  • Només AWS: és exclusiva d’AWS. No serveix per Azure ni GCP.
  • Avantatge: està totalment integrada a AWS i suporta els serveis nous d’AWS molt ràpid. No cal instal·lar res extra.
  • Inconvenient: els fitxers poden esdevenir llargs i verbosos, i et lliga a AWS (vendor lock-in, recorda el Capítol 2).

Pulumi

  • Què és: IaC usant llenguatges de programació de veritat (Python, TypeScript, Go, C#…).
  • Idea: en lloc d’aprendre un llenguatge específic, fas servir el llenguatge que ja coneixes, amb bucles, condicions i funcions normals.
  • Multi-núvol: sí.
  • Per a qui: atractiu per a desenvolupadors que prefereixen codi «normal». A canvi, pot ser més complex i requereix saber programar.

CDK (Cloud Development Kit, d’AWS)

  • Què és: com Pulumi però d’AWS: defineixes infraestructura amb llenguatges de programació (TypeScript, Python, Java…) i, per sota, genera CloudFormation.
  • Només AWS (principalment).
  • Per a qui: desenvolupadors de l’ecosistema AWS que volen fer servir codi en lloc de YAML. Existeix també CDK for Terraform (CDKTF), que combina CDK amb Terraform.

Taula comparativa

Terraform CloudFormation Pulumi CDK
Creador HashiCorp AWS Pulumi AWS
Llenguatge HCL (propi, declaratiu) YAML/JSON Python, TS, Go… TS, Python, Java…
Multi-núvol No (només AWS) Principalment AWS
Corba d’aprenentatge Suau Mitjana Mitjana-alta (saber programar) Mitjana-alta
Popularitat / comunitat La més gran Alta (a AWS) Creixent Creixent
Et lliga a AWS No No

Per què aquest llibre tria Terraform

Triem Terraform per raons molt concretes, semblants a per què vam triar AWS al Capítol 2:

  1. És l’estàndard de facto del mercat

Terraform és, amb diferència, l’eina de IaC més usada i demandada en ofertes de feina. Aprendre-la maximitza les teves oportunitats professionals.

  1. És multi-núvol (no et lliga)

Amb Terraform, el que aprens serveix per AWS, Azure, GCP i centenars de serveis més, tot amb el mateix llenguatge. Si demà canvies de núvol, reaprofites el teu coneixement. CloudFormation i CDK et lliguen a AWS.

  1. HCL és fàcil de llegir i aprendre

El llenguatge HCL va ser dissenyat per ser llegible i clar, fins i tot per a qui no programa. És més amable per començar que escriure YAML llarg o fer servir un llenguatge de programació complet.

  1. Comunitat i ecosistema enormes

Hi ha milers d’exemples, mòduls reutilitzables (Capítol 18) i respostes a qualsevol dubte. La comunitat de Terraform és gegantina.

  1. Encaixa perfectament amb AWS

Com vam veure al Capítol 2, el provider d’AWS per a Terraform és el més madur i complet. AWS + Terraform és una de les combinacions més demandades.

I les altres? No les descartis

Que triem Terraform no vol dir que les altres siguin dolentes:

  • CloudFormation és excel·lent si treballes només amb AWS i vols integració nativa total.
  • CDK / Pulumi són genials per a desenvolupadors que prefereixen fer servir el seu llenguatge de programació preferit.

El bo és que, un cop entens els conceptes de IaC (declaratiu, estat, idempotència…), passar d’una eina a una altra és relativament senzill. Els conceptes són universals, com vam veure amb els núvols al Capítol 2.

Una nota sobre les llicències (OpenTofu)

El 2023, HashiCorp va canviar la llicència de Terraform a una de més restrictiva. En resposta, la comunitat va crear OpenTofu, una versió de codi obert compatible amb Terraform (és un fork). Per aprendre i per a la majoria d’usos, ambdós són pràcticament idèntics i el que aprenguis aquí et serveix per als dos. És bo que sàpigues que OpenTofu existeix com a alternativa lliure.

El que has de recordar

  • Les quatre eines principals de IaC són Terraform, CloudFormation, Pulumi i CDK.
  • CloudFormation i CDK són només d’AWS; Terraform i Pulumi són multi-núvol.
  • Pulumi i CDK fan servir llenguatges de programació; Terraform fa servir HCL (declaratiu i fàcil de llegir); CloudFormation fa servir YAML/JSON.
  • Triem Terraform per ser l’estàndard del mercat, multi-núvol (no et lliga), amb HCL llegible i una comunitat enorme.
  • OpenTofu és una alternativa lliure i compatible amb Terraform, fruit del canvi de llicència de 2023.

A l’últim subcapítol d’aquest capítol veurem el flux de treball fonamental de Terraform: el cicle plan → apply → destroy.

Cloud, AWS & Terraform — De zero a expert

Capítol 1 · Què és el cloud computing

Capítol 2 · El mercat cloud i els grans proveïdors

Capítol 3 · Regions, zones de disponibilitat i edge

Capítol 4 · Càlcul: EC2

Capítol 5 · Emmagatzematge: S3

Capítol 6 · Xarxes: VPC

Capítol 7 · Identitat i accés: IAM

Capítol 8 · Bases de dades gestionades

Capítol 9 · Per què Infraestructura com a Codi

Capítol 10 · HCL: el llenguatge de Terraform

Capítol 11 · Providers i estat

Capítol 12 · La teva primera infraestructura real amb Terraform

Capítol 13 · Balanceig de càrrega i autoescalat

Capítol 14 · Serverless amb Lambda

Capítol 15 · Missatgeria i esdeveniments

Capítol 16 · Lliurament de contingut i DNS

Capítol 17 · Contenidors a AWS

Capítol 18 · Mòduls: reutilització i composició

Capítol 19 · Workspaces i gestió d'entorns

Capítol 20 · Backends remots i locking

Capítol 21 · Testing d'infraestructura

Capítol 22 · Terraform en CI/CD

Capítol 23 · Seguretat en profunditat

Capítol 24 · Observabilitat: logs, mètriques i traces

Capítol 25 · Optimització de costos

Capítol 26 · Alta disponibilitat i disaster recovery

Capítol 27 · Well-Architected Framework d'AWS

Capítol 28 · Arquitectures serverless a escala

Capítol 29 · Plataformes de dades a AWS

Capítol 30 · Multi-compte i landing zones

Capítol 31 · Platform Engineering i Internal Developer Platform

Capítol 32 · Certificacions AWS rellevants

Capítol 33 · Projectes per consolidar el que s'ha après

Capítol 34 · Recursos i comunitat

© Copyright 2024. Tots els drets reservats