Tanquem la Part V amb un problema molt real que afecta tota infraestructura gestionada amb codi: el drift (deriva o desviació). Passa quan la infraestructura real deixa de coincidir amb el que diu el teu codi. En aquest subcapítol entendràs per què passa, per què és perillós, i com detectar-lo i corregir-lo automàticament. És la cirereta d’un flux d’Infraestructura com a Codi madur.
Què és el drift
Recorda la idea central de Terraform: el teu codi descriu com ha de ser la infraestructura, i Terraform fa que la realitat coincideixi amb ell (Capítol 9). El drift (deriva) és quan la infraestructura real es desvia del que diu el codi, sense que el codi hagi canviat.
El teu codi diu: servidor amb 2 CPUs, port 443 obert
La realitat és ara: servidor amb 4 CPUs, port 22 també obert
↑ algú ho va canviar per fora = DRIFTEl codi i la realitat ja no coincideixen. Aquesta diferència és el drift.
Per què ocorre el drift
El drift apareix quan algú o alguna cosa modifica la infraestructura per fora de Terraform:
- Canvis manuals: algú entra a la consola d’AWS i modifica un recurs «ràpidament» per resoldre una urgència (obre un port, canvia una mida...), sense actualitzar el codi.
- Altres eines o scripts que toquen els mateixos recursos.
- Processos automàtics d’AWS que modifiquen alguna cosa (estrany, però possible).
- Autoescalat o altres sistemes que canvien el nombre de recursos.
El cas més comú i perillós: un canvi manual «d’emergència». A les 3 de la matinada hi ha un incident, algú entra a la consola d’AWS i canvia alguna cosa a mà per apagar el foc, i després s’oblida de reflectir-ho al codi. A partir d’aquí, el codi menteix: ja no descriu la realitat.
Analogia: el drift és com tenir els planols d’una casa que ja no coincideixen amb la casa real perquè algú ha tirat un envà sense actualitzar els planols. Si més endavant un constructor treballa guiant-se pels planols antics, pot provocar un desastre, perquè la realitat és una altra.
Per què el drift és perillós
El drift mina tota la confiança en la teva Infraestructura com a Codi:
- El codi deixa de ser la font de la veritat: ja no pots confiar que el codi descriu el que hi ha de veritat.
- Sorpreses en el proper
apply: quan algú torni a aplicar Terraform, aquest intentarà «corregir» el canvi manual (revertir-lo al que diu el codi), cosa que pot trencar el que es va arreglar a mà, o eliminar un pedaç de seguretat! - Riscos de seguretat ocults: si el canvi manual va obrir un port perillós, el codi no ho reflecteix, així que les revisions de seguretat (Capítol 21) no ho detecten. El forat queda ocult.
- Pèrdua de reproduïbilitat: si recrees la infraestructura des del codi, no obtindràs el que realment hi havia, perquè el codi està desactualitzat.
Com detectar el drift
La bona notícia és que detectar el drift és senzill, perquè Terraform ja sap comparar el codi amb la realitat. Recorda que terraform plan (subcapítol 11.4) fa exactament això: compara codi, estat i realitat. Si hi ha drift, el plan ho mostra:
terraform plan
→ si NO hi ha drift → "No changes" ✓ (codi i realitat coincideixen)
→ si HI HA drift → mostra les diferències:
~ aws_security_group.web: port 22 obert (no està al codi) ⚠️Detecció automàtica i periòdica
La clau és no esperar que algú executi un plan per casualitat. La detecció de drift automàtica consisteix a executar terraform plan periòdicament (per exemple, cada nit) de forma automàtica, i avisar si detecta diferències:
Cada nit, automàticament:
terraform plan
→ hi ha canvis inesperats?
→ SÍ → ALERTA a l’equip (Slack, email...): "hi ha drift en producció"
→ NO → tot en ordre, res a reportarAixí, si algú va fer un canvi manual, l’equip se n’assabenta l’endemà, no setmanes després quan ja ha causat un problema. Plataformes com HCP Terraform (subcapítol 22.3) ofereixen aquesta detecció de drift integrada; també la pots muntar amb un pipeline programat (recorda els schedules d’EventBridge, subcapítol 15.3, o un cron al teu CI).
La reconciliació: corregir el drift
Detectar el drift és només la meitat; després cal reconciliar (tornar a alinear codi i realitat). Hi ha dues maneres, segons quin canvi sigui el «correcte»:
Opció A: el codi és la veritat → revertir el canvi manual
Si el canvi manual no s’havia de fer, executes terraform apply perquè Terraform torni la infraestructura al que diu el codi, eliminant la desviació.
Opció B: el canvi manual era necessari → actualitzar el codi
Si el canvi manual era correcte (un ajust que cal mantenir), llavors actualitzes el codi perquè reflecteixi aquest canvi, i el puges mitjançant un PR (subcapítol 12.5). Ara el codi torna a ser la veritat.
Reconciliació automàtica: alguns equips configuren que, davant certs drifts, el sistema reverteixi automàticament a l’estat del codi (opció A) sense intervenció. Això és potent per forçar que tot canvi passi per codi, però cal fer-ho amb compte: revertir automàticament un canvi que era un pedaç d’emergència legítim podria reobrir un problema. Per això molts prefereixen detecció automàtica + decisió humana sobre com reconciliar.
La lliçó de fons: tot canvi, per codi
El drift reforça el missatge central de tota la Infraestructura com a Codi: tots els canvis s’han de fer a través del codi, mai a mà. La detecció de drift és la vigilància que fa complir aquesta regla, avisant quan algú se la salta.
Exemple del món real: una empresa executa detecció de drift cada nit en producció. Un matí, l’alerta avisa: «el Security Group de la base de dades té el port 5432 obert a internet, i no està al codi». Investigen: un desenvolupador el va obrir a mà la tarda anterior per a una prova i es va oblidar de tancar-lo. Gràcies a la detecció de drift, ho descobreixen en hores (no quan un atacant ho trobi) i ho corregeixen. Sense aquesta vigilància, aquest forat podria haver passat mesos desapercebut.
El que has de recordar
- El drift (deriva) és quan la infraestructura real deixa de coincidir amb el codi, normalment per canvis manuals fets per fora de Terraform (el clàssic pedaç d’emergència que no es reflecteix al codi).
- És perillós: el codi deixa de ser la font de la veritat, el proper
applypot revertir canvis importants, oculta riscos de seguretat i trenca la reproduïbilitat. Com uns planols que ja no coincideixen amb la casa. - Es detecta amb
terraform plan(compara codi i realitat); l’ideal és la detecció automàtica i periòdica (ex. cada nit) que alerta l’equip davant diferències. - Es reconcilia de dues maneres: revertir el canvi manual amb
apply(si el codi és la veritat) o actualitzar el codi via PR (si el canvi manual era vàlid). - La lliçó de fons: tots els canvis s’han de fer per codi; la detecció de drift és la vigilància que fa complir aquesta regla.
Has acabat el Capítol 22 i la Part V! Ja domines Terraform a nivell avançat: mòduls, entorns, estat, testing i CI/CD. A la Part VI canviem el focus cap als aspectes transversals d’AWS que distingeixen un professional: començarem per la seguretat en profunditat.
Cloud, AWS & Terraform — De zero a expert
Capítol 1 · Què és el cloud computing
- 1.1 El model client-servidor tradicional
- 1.2 Problemes que venia a resoldre el núvol
- 1.3 On-premise vs cloud vs híbrid
- 1.4 Els tres models de servei: IaaS, PaaS, SaaS
- 1.5 Els cinc pilars del cloud (segons NIST)
- 1.6 Avantatges reals: elasticitat, pagament per ús, disponibilitat global
Capítol 2 · El mercat cloud i els grans proveïdors
- 2.1 AWS, Azure i GCP: diferències i quotes de mercat
- 2.2 Per què aprendre AWS primer
- 2.3 Conceptes que són universals entre proveïdors
Capítol 3 · Regions, zones de disponibilitat i edge
- 3.1 Què és una regió AWS i com triar-la
- 3.2 Availability Zones: alta disponibilitat des del disseny
- 3.3 Edge locations i CloudFront
- 3.4 Latència, resiliència i sobirania de dades
Capítol 4 · Càlcul: EC2
- 4.1 Instàncies: tipus, famílies i quan triar cadascuna
- 4.2 AMIs, key pairs i Security Groups
- 4.3 Cicle de vida d'una instància
- 4.4 Elastic IPs i Placement Groups
- 4.5 Savings Plans vs Reserved vs On-Demand vs Spot
Capítol 5 · Emmagatzematge: S3
- 5.1 Buckets, objectes i claus
- 5.2 Classes d'emmagatzematge (Standard, IA, Glacier…)
- 5.3 Versionat i cicle de vida d'objectes
- 5.4 Polítiques de bucket i ACLs
- 5.5 Hosting de llocs web estàtics
Capítol 6 · Xarxes: VPC
- 6.1 Què és una VPC i per què la necessites
- 6.2 Subxarxes públiques i privades
- 6.3 Internet Gateway i NAT Gateway
- 6.4 Route Tables i Network ACLs
- 6.5 VPC Peering i endpoints
Capítol 7 · Identitat i accés: IAM
- 7.1 Usuaris, grups, rols i polítiques
- 7.2 El principi de mínim privilegi
- 7.3 Polítiques basades en identitat vs en recurs
- 7.4 MFA i credencials temporals (STS)
- 7.5 Bones pràctiques de seguretat IAM
Capítol 8 · Bases de dades gestionades
- 8.1 RDS: motors, Multi-AZ i rèpliques de lectura
- 8.2 Aurora i els seus avantatges sobre RDS vanilla
- 8.3 DynamoDB: model clau-valor / documents
- 8.4 ElastiCache per a memòria cau en memòria
- 8.5 Quan utilitzar cada tipus de base de dades
Capítol 9 · Per què Infraestructura com a Codi
- 9.1 Problemes del provisionament manual
- 9.2 IaC declaratiu vs imperatiu
- 9.3 Terraform vs CloudFormation vs Pulumi vs CDK
- 9.4 El cicle plan → apply → destroy
Capítol 10 · HCL: el llenguatge de Terraform
- 10.1 Blocs resource, variable, output, locals
- 10.2 Tipus de dades: string, number, bool, list, map, object
- 10.3 Expressions, referències i funcions built-in
- 10.4 Condicionals i bucles (count, for_each, for)
Capítol 11 · Providers i estat
- 11.1 Com funciona el provider d'AWS
- 11.2 El fitxer terraform.tfstate i la seva importància
- 11.3 State local vs state remot (S3 + DynamoDB)
- 11.4 Comandes essencials: init, plan, apply, destroy, fmt, validate
Capítol 12 · La teva primera infraestructura real amb Terraform
- 12.1 Crear una VPC amb subxarxes des de zero
- 12.2 Posar en marxa una instància EC2 pública
- 12.3 Associar un Security Group i una Elastic IP
- 12.4 Outputs i referències entre recursos
- 12.5 Flux de treball en equip: PR review de plans
Capítol 13 · Balanceig de càrrega i autoescalat
- 13.1 Application Load Balancer vs Network Load Balancer
- 13.2 Target Groups, listeners i regles
- 13.3 Auto Scaling Groups: polítiques i mètriques
- 13.4 Warm pools i lifecycle hooks
Capítol 14 · Serverless amb Lambda
- 14.1 El model d'execució de Lambda
- 14.2 Triggers: API Gateway, S3, DynamoDB Streams, SQS
- 14.3 Gestió de dependències i capes (Layers)
- 14.4 Cold starts i estratègies per reduir-los
- 14.5 Límits i antipatrones
Capítol 15 · Missatgeria i esdeveniments
- 15.1 SQS: cues estàndard vs FIFO, DLQ
- 15.2 SNS: topics, subscripcions, fan-out
- 15.3 EventBridge: event buses i regles
- 15.4 Patrons: pub/sub, desacoblament, saga
Capítol 16 · Lliurament de contingut i DNS
- 16.1 Route 53: tipus de registres i routing policies
- 16.2 CloudFront: distribucions, memòries cau i origins
- 16.3 ACM: certificats SSL/TLS gratuïts
- 16.4 WAF integrat amb CloudFront
Capítol 17 · Contenidors a AWS
- 17.1 Docker: repàs exprés de conceptes clau
- 17.2 ECR: registre privat d'imatges
- 17.3 ECS: task definitions, services, Fargate vs EC2
- 17.4 EKS: quan Kubernetes i quan no
Capítol 18 · Mòduls: reutilització i composició
- 18.1 Anatomia d'un mòdul Terraform
- 18.2 Variables d'entrada, outputs i dependències
- 18.3 Mòduls locals vs mòduls del Terraform Registry
- 18.4 Versionat de mòduls amb Git tags
- 18.5 Disseny de mòduls genèrics vs específics de domini
Capítol 19 · Workspaces i gestió d'entorns
- 19.1 Workspaces de Terraform: casos d'ús i limitacions
- 19.2 Estratègia de directoris per entorn (dev/stg/prod)
- 19.3 Terragrunt: DRY per a configuracions d'entorn
- 19.4 Variables d'entorn i fitxers .tfvars
Capítol 20 · Backends remots i locking
- 20.1 Configurar S3 + DynamoDB com a backend
- 20.2 State locking: evitar corrupció en equip
- 20.3 Migració d'estat entre backends
- 20.4 terraform import: portar recursos existents a l'estat
Capítol 21 · Testing d'infraestructura
- 21.1 Terraform validate i fmt en CI
- 21.2 Checkov i tfsec: anàlisi de seguretat estàtica
- 21.3 Terratest: tests d'integració en Go
- 21.4 Contract testing entre mòduls
Capítol 22 · Terraform en CI/CD
- 22.1 Pipeline bàsic: lint → plan → apply a GitHub Actions
- 22.2 Atlantis: GitOps per a Terraform
- 22.3 Terraform Cloud / HCP Terraform
- 22.4 Drift detection i reconciliació automàtica
Capítol 23 · Seguretat en profunditat
- 23.1 AWS Organizations i Service Control Policies
- 23.2 AWS Config: compliment continu
- 23.3 GuardDuty: detecció d'amenaces
- 23.4 Security Hub: visió centralitzada
- 23.5 KMS: gestió de claus i rotació
- 23.6 Secrets Manager vs Parameter Store
Capítol 24 · Observabilitat: logs, mètriques i traces
- 24.1 CloudWatch Logs, mètriques i alarmes
- 24.2 CloudWatch Dashboards i Contributor Insights
- 24.3 X-Ray: traçat distribuït
- 24.4 OpenTelemetry a AWS
- 24.5 Managed Grafana i Managed Prometheus
Capítol 25 · Optimització de costos
- 25.1 AWS Cost Explorer i pressupostos amb alertes
- 25.2 Trusted Advisor i Compute Optimizer
- 25.3 Rightsizing: com detectar sobredimensionament
- 25.4 Savings Plans vs Reserved Instances: decisió estratègica
- 25.5 FinOps: cultura i processos per controlar la despesa
Capítol 26 · Alta disponibilitat i disaster recovery
- 26.1 RTO i RPO: definir els objectius
- 26.2 Estratègies: backup/restore, pilot light, warm standby, multi-site
- 26.3 Route 53 health checks i failover automàtic
- 26.4 AWS Backup: política centralitzada de còpies
Capítol 27 · Well-Architected Framework d'AWS
- 27.1 Els sis pilars: excel·lència operacional, seguretat, fiabilitat, eficiència de rendiment, optimització de costos, sostenibilitat
- 27.2 Well-Architected Tool: revisions formals
- 27.3 Com aplicar el framework en decisions de disseny
Capítol 28 · Arquitectures serverless a escala
- 28.1 Event-driven architecture amb Lambda + EventBridge
- 28.2 Saga pattern per a transaccions distribuïdes
- 28.3 Step Functions: orquestració de workflows complexos
- 28.4 Lambda@Edge i CloudFront Functions
Capítol 29 · Plataformes de dades a AWS
- 29.1 Data Lake amb S3, Glue i Athena
- 29.2 Kinesis Data Streams i Firehose per a streaming
- 29.3 Redshift: data warehousing a escala
- 29.4 Lake Formation: govern del dada
Capítol 30 · Multi-compte i landing zones
- 30.1 Per què separar workloads en comptes diferents
- 30.2 AWS Control Tower i Account Factory
- 30.3 Gestió centralitzada de logs i seguretat
- 30.4 Terraform a escala multi-compte amb mòduls compartits
Capítol 31 · Platform Engineering i Internal Developer Platform
- 31.1 Golden paths i abstraccions sobre Terraform
- 31.2 Service Catalog d'AWS
- 31.3 Backstage com a portal de desenvolupadors
- 31.4 Mòduls Terraform com a producte intern
Capítol 32 · Certificacions AWS rellevants
- 32.1 Cloud Practitioner: val la pena?
- 32.2 Solutions Architect Associate → Professional
- 32.3 DevOps Engineer Professional
- 32.4 Specialty: Security, Database, Networking
- 32.5 HashiCorp Terraform Associate
Capítol 33 · Projectes per consolidar el que s'ha après
- 33.1 Projecte 1: blog serverless (S3 + CloudFront + Lambda + DynamoDB)
- 33.2 Projecte 2: API REST amb ECS Fargate + RDS + ALB
- 33.3 Projecte 3: plataforma de dades amb Glue + Athena + Redshift
- 33.4 Projecte 4: landing zone multi-compte amb Terraform i Control Tower
