Tanquem el Capítol 31 (i la Part VII) amb la idea que lliga tot el Platform Engineering: tractar els mòduls de Terraform com un producte intern. Al llarg del llibre hem vist els mòduls com a blocs tècnics reutilitzables (Capítol 18). Ara fem el salt de mentalitat que distingeix les organitzacions més madures: deixar de veure els mòduls com a «codi que comparteixo» i començar a veure'ls com un producte amb clients (els altres desenvolupadors), que es dissenya, es cuida i es millora pensant en ells. Aquest canvi de mentalitat és l'essència del Platform Engineering.
Repàs: els mòduls com a blocs reutilitzables
Recorda els mòduls de Terraform (Capítol 18): paquets reutilitzables d'infraestructura que defineixes una vegada i utilitzes moltes. Vam veure la seva anatomia (subcapítol 18.1), les seves variables i outputs (subcapítol 18.2), el seu versionat amb Git tags (subcapítol 18.4)... Tècnicament, ja saps crear-los. El que afegeix aquest subcapítol no és tècnica, sinó mentalitat: com pensar en aquests mòduls quan són la base d'una plataforma que utilitzen molts equips.
El canvi de mentalitat: de «codi compartit» a «producte»
La diferència clau entre una organització immadura i una de madura està en com tracta els seus mòduls:
Mentalitat "codi compartit": Mentalitat "producte": - el pujo i que s'espavilin - penso en els meus usuaris - sense documentació clara - documentat i fàcil d'utilitzar - canvis sense avisar (trenco a altres) - versionat, canvis curosos - "és el que hi ha" - recullo feedback i milloro
Tractar els mòduls com un producte intern significa aplicar-los la mateixa mentalitat que s'aplica a un producte que vens a clients: pensar en l'experiència de qui l'utilitza, cuidar la qualitat, documentar-lo bé, donar-li suport i millorar-lo contínuament. Els teus «clients» són els altres desenvolupadors de l'empresa.
Analogia: la diferència és com entre deixar eines tirades en un cobert comú i gestionar una bona ferreteria. Al cobert, cadascú tira les seves eines; les trobes com pots, no saps si funcionen, ningú les manté. En una ferreteria ben gestionada, els productes estan organitzats, etiquetats, amb instruccions, algú s'assegura que funcionin i de tenir el que la gent necessita, i t'atenen si tens dubtes. Tractar els mòduls com a producte és passar del cobert a la ferreteria: pensar de veritat en qui els farà servir.
Què implica tractar els mòduls com a producte
- Pensar en l'experiència de l'usuari (els desenvolupadors)
El mòdul ha de ser fàcil d'utilitzar per a algú que no és expert: paràmetres clars, valors per defecte sensats, una interfície senzilla. Et poses a la pell de qui el farà servir i li facilites la vida. Un bon golden path (subcapítol 31.1) neix d'un mòdul dissenyat pensant en el seu usuari.
- Documentació de qualitat
El mòdul ve amb documentació clara: què fa, com s'utilitza, exemples. Sense bona documentació, un mòdul és difícil d'adoptar (recorda com n'és d'important la documentació, ja ho vam veure amb els mòduls a la Part IV). Un producte sense manual no es ven.
- Versionat i canvis curosos
Recorda el versionat (subcapítol 18.4): els mòduls-producte es versionen amb cura, de manera que els canvis no trenquin a qui els utilitza per sorpresa. Si has de fer un canvi important, ho comuniques i ho gestiones com una nova versió, igual que un producte seriós gestiona les seves actualitzacions. Això dóna confiança als equips per dependre dels teus mòduls.
- Qualitat i testing
Els mòduls-producte es proven (recorda el testing d'infraestructura, Capítol 21, i el contract testing de mòduls, subcapítol 21.4) per garantir que funcionen bé. Un producte de qualitat és fiable; si els teus mòduls fallen, els equips perden la confiança i tornen a fer-ho tot pel seu compte.
- Suport i feedback
Hi ha algú (l'equip de plataforma) que dona suport als usuaris del mòdul i recull el seu feedback per millorar-lo. Com un producte, evoluciona escoltant els seus usuaris: què els falta, què els costa, què necessiten.
Mòdul com a producte intern: ✓ pensat per a l'usuari (fàcil d'utilitzar) ✓ ben documentat (amb exemples) ✓ versionat (canvis sense trencar, amb confiança) ✓ provat (fiable, amb testing) ✓ amb suport i millora contínua (escolta l'usuari)
Per què importa: és el cor del Platform Engineering
Aquest canvi de mentalitat és, en realitat, el cor de tot el Platform Engineering (Capítol 31). Una Internal Developer Platform no és només «eines»; és un producte intern que l'equip de plataforma ofereix als desenvolupadors com si fossin els seus clients. Els golden paths (subcapítol 31.1), el Service Catalog (subcapítol 31.2) i Backstage (subcapítol 31.3) només funcionen de veritat si al darrere hi ha aquesta mentalitat de producte: cuidar l'experiència, la qualitat i la millora contínua.
Platform Engineering ben fet = mentalitat de PRODUCTE
"els desenvolupadors són els nostres clients;
la plataforma (i els seus mòduls) és el nostre producte;
el cuidem, documentem, millorem i donem suport."Sense aquesta mentalitat, una plataforma interna es converteix en un altre munt d'eines que ningú vol utilitzar. Amb ella, es converteix en quelcom que els equips adopten encantats perquè de veritat els facilita la feina.
Exemple del món real: dues empreses creen mòduls de Terraform per als seus equips. La primera els tracta com a «codi compartit»: els puja a un repositori sense documentació, els canvia sense avisar (trencant altres equips) i ningú dona suport. Resultat: els equips no es refien d'aquests mòduls, prefereixen fer la seva pròpia infraestructura, i la plataforma fracassa. La segona empresa els tracta com a producte intern: cada mòdul està ben documentat amb exemples, versionat amb cura (els canvis mai trenquen per sorpresa), provat, i l'equip de plataforma dona suport i recull feedback per millorar-los. Resultat: els equips adopten els mòduls encantats perquè els estalvien feina i són fiables; la plataforma triomfa, i l'empresa guanya velocitat i consistència. La mateixa tècnica (mòduls), però la mentalitat de producte va marcar la diferència entre l'èxit i el fracàs.
El que has de recordar
- El salt de les organitzacions madures no és tècnic, sinó de mentalitat: tractar els mòduls de Terraform com un producte intern, no com a simple «codi compartit». Els teus clients són els altres desenvolupadors.
- És la diferència entre eines tirades en un cobert i una ferreteria ben gestionada (organitzada, amb instruccions, mantinguda, amb atenció al client).
- Tractar els mòduls com a producte implica: pensar en l'experiència de l'usuari (fàcils d'utilitzar), documentació de qualitat (amb exemples), versionat acurat (canvis sense trencar, amb confiança, Cap. 18.4), qualitat i testing (fiables, Cap. 21), i suport + feedback (millora contínua escoltant l'usuari).
- Aquesta mentalitat de producte és el cor del Platform Engineering: una Internal Developer Platform (amb els seus golden paths, Service Catalog i Backstage) només triomfa si es tracta com un producte cuidat per als seus clients. Sense ella, la plataforma fracassa; amb ella, els equips l'adopten encantats.
Has completat el Capítol 31 i, amb ell, tota la Part VII (Arquitectures de referència i patrons experts)! Has assolit un nivell de maduresa que pocs dominen: Well-Architected, serverless a escala, plataformes de dades, multi-compte i Platform Engineering. Ja només queda la Part VIII: El camí després del llibre, que et guiarà en el teu desenvolupament professional. Comencem al Capítol 32 amb les certificacions d'AWS.
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
