Tens un balancejador repartint tràfic entre diversos servidors. Però queda una pregunta: qui crea aquests servidors i quants n'hi ha d'haver? Si en poses 10 fixos, pagues de més a la nit quan hi ha poc tràfic; si en poses 2, et satures en hora punta. La solució és l'Auto Scaling Group (ASG): el component que crea i elimina servidors automàticament segons la demanda. Aquesta és l'altra meitat d'una arquitectura elàstica.
El problema: la demanda no és constant
El tràfic de gairebé qualsevol aplicació puja i baixa:
Tràfic d'una botiga online al llarg del dia:
Alt │ ██████
│ ███ ███
│ ██ ██
Baix │ ████ ████
└────────────────────────────
00h 12h 18h 24hSi dimensions pel pic, malgastes diners la major part del temps. Si dimensions per la mitjana, caus en els pics. La resposta és no tenir un nombre fix: ajustar la quantitat de servidors en temps real. Això és l'autoescalat, i és un dels grans avantatges del núvol que vam veure al Capítol 1 (elasticitat).
Què és un Auto Scaling Group
Un Auto Scaling Group (ASG) és un grup d'instàncies EC2 que AWS manté i ajusta automàticament. Tu defineixes uns límits i unes regles, i l'ASG s'encarrega de crear o destruir servidors per complir-les.
Es configura amb tres números clau:
┌─────────── Auto Scaling Group ───────────┐ │ Mínim: 2 servidors (mai menys) │ │ Desitjat: 3 servidors (ara mateix) │ │ Màxim: 10 servidors (mai més) │ └───────────────────────────────────────────┘
- Mínim: el nombre que sempre hi haurà, encara que no hi hagi tràfic (garanteix disponibilitat).
- Desitjat: quants n'hi ha en aquest moment; aquest és el que l'ASG va ajustant.
- Màxim: el límit, perquè un pic (o un error) no dispari la factura sense control.
L'autoreparació: un avantatge enorme
L'ASG no només escala: també s'autorepara. Si una instància cau o falla el seu health check, l'ASG la detecta i en crea una de nova per mantenir el nombre desitjat.
Desitjat = 3, però un servidor cau:
Servidor 1 ✓ Servidor 2 ✓ Servidor 3 ✗ (caigut)
│
L'ASG ho detecta i...
▼
Servidor 1 ✓ Servidor 2 ✓ Servidor 4 ✓ (nou, acabat de crear)Això és potentíssim: combinat amb el balancejador del subcapítol anterior, la teva aplicació es cura sola. Si un servidor mor a les 3 de la matinada, ningú s'ha d'aixecar: l'ASG en crea un de nou i el balancejador comença a usar-lo tan bon punt està sa. Aquí pren sentit el
user_datadel subcapítol 12.2: cada servidor nou s'autoconfigura sol en néixer.
Les polítiques d'escalat: quan crear o treure servidors
Com decideix l'ASG que cal escalar? Mitjançant polítiques d'escalat basades en mètriques (dades de CloudWatch, que veurem al Capítol 24). La més comuna és l'ús de CPU.
Target Tracking (seguiment d'objectiu): la més senzilla i recomanada
Li dius a l'ASG un objectiu i ell fa el necessari per mantenir-lo. Per exemple: «mantén l'ús mitjà de CPU al 50 %».
Política: mantenir CPU mitjana al 50% CPU puja al 80% → l'ASG AFEGEIX servidors → la CPU mitjana baixa CPU baixa al 20% → l'ASG TREU servidors → la CPU mitjana puja
És com el climatitzador d'un cotxe: li dius «mantén 22 graus» i ell solet encén o apaga l'aire segons calgui. No t'amoïnes pels detalls. Per la seva senzillesa, és la política recomanada per començar.
Altres polítiques (per conèixer)
| Política | Com funciona | Quan usar-la |
|---|---|---|
| Target Tracking | Manté una mètrica en un valor objectiu | L'opció per defecte, la més fàcil |
| Step Scaling | Afegeix/treu N servidors segons esglaons de la mètrica | Control més fi de l'escalat |
| Scheduled | Escala segons un horari previst | Pics predictibles (ex. rebaixes a les 9h) |
Un exemple d'escalat programat (scheduled): una web de venda d'entrades sap que cada dilluns a les 10:00 treu entrades i rep una allau. Programa l'ASG per pujar a 20 servidors a les 9:55, abans que arribi la gent, en comptes d'esperar que la CPU pugi.
Mètriques: en què es basa la decisió
Les polítiques reaccionen a mètriques. Les més habituals:
- Ús de CPU: la més comuna; CPU alta = servidors saturats.
- Nombre de peticions per servidor: molt útil amb un balancejador (peticions del Target Group).
- Ús de memòria o de xarxa.
- Mètriques personalitzades: per exemple, el nombre de missatges en una cua (ho veurem amb SQS, Capítol 15).
El conjunt complet: balancejador + ASG
Juntant els tres subcapítols, aquesta és l'arquitectura elàstica clàssica:
Usuaris
│
┌───────▼────────┐
│ Balancejador │ (reparteix tràfic, subcap. 13.1-13.2)
└───────┬────────┘
┌────────┼────────┐
▼ ▼ ▼
Servidor Servidor Servidor ← Auto Scaling Group
(l'ASG crea/destrueix segons la demanda i els repara)El balancejador reparteix entre els servidors que hi hagi; l'ASG ajusta quants n'hi ha i els manté sans. Junts donen una aplicació que escala sola i es cura sola.
El que has de recordar
- Un Auto Scaling Group (ASG) crea i elimina servidors automàticament segons la demanda, dins d'uns límits: mínim, desitjat i màxim.
- L'ASG també s'autorepara: si un servidor falla, en crea un de nou per mantenir el nombre desitjat (aquí brilla el
user_dataque autoconfigura cada servidor). - Les polítiques d'escalat decideixen quan escalar segons mètriques (la més comuna, l'ús de CPU).
- Target Tracking («mantén la CPU al 50 %») és la política més senzilla i recomanada per començar; existeixen també Step i Scheduled (escalat programat per a pics predictibles).
- Balancejador + ASG = arquitectura que escala sola i es cura sola.
A l'últim subcapítol del capítol veurem dues tècniques avançades per afinar l'autoescalat: els warm pools i els lifecycle hooks.
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
