Tanca el capítol amb dues tècniques avançades que afinen l'autoescalat: els warm pools (servidors precalentats) i els lifecycle hooks (ganxos de cicle de vida). No són imprescindibles per començar, però entendre'ls t'ajuda a resoldre un problema molt real: l'escalat a vegades és massa lent.

El problema: arrencar un servidor porta temps

Recorda el cicle de vida d'una instància (subcapítol 4.3) i el user_data (subcapítol 12.2). Quan l'Auto Scaling Group decideix afegir un servidor, aquest no està llest a l'instant: cal arrencar-lo, executar el seu script de configuració, instal·lar programari, descarregar l'aplicació... Això pot trigar diversos minuts.

L'ASG decideix escalar (la CPU està al 90%)
        │
        ▼
  Arrencar instància ──► user_data ──► instal·lar app ──► llest
  └──────────── diversos minuts ────────────────┘
        │
        ▼
  Només ara el servidor rep tràfic

El problema: durant aquests minuts, els teus servidors actuals segueixen saturats. Si el pic de tràfic és molt brusc (una allau sobtada), arribar «uns minuts tard» pot significar una mala experiència per als usuaris. Aquí entren els warm pools.

Warm pools: servidors precalentats esperant

Un warm pool (grup en calent) és un conjunt d'instàncies ja arrencades i configurades, però aturades o en pausa, esperant «entre bastidors». Quan l'ASG necessita escalar, en comptes de crear una instància des de zero, n'agafa una del warm pool, que ja té tot instal·lat, i la posa en marxa en segons en lloc de minuts.

┌─── Auto Scaling Group ───┐     ┌──── Warm Pool ────┐
│  Servidors actius:        │     │  En reserva (ja     │
│   ✓ ✓ ✓ servint tràfic    │     │  configurats):      │
│                           │     │   ⏸ ⏸ esperant      │
└───────────────────────────┘     └─────────────────────┘
              ▲                              │
              └──── al escalar, se'n pren ───┘
                    un del warm pool (ràpid!)

Analogia: un warm pool és com tenir pizzes a mig fer a la cuina d'una pizzeria. Quan entra una allau de comandes, no comences des de la massa: poses al forn les que ja tenies preparades i surten de seguida. Pagues una mica per tenir-les a punt, però respons molt més ràpid al pic.

El compromís: les instàncies aturades del warm pool tenen un petit cost (sobretot d'emmagatzematge), però a canvi guanyes velocitat d'escalat. S'utilitza quan arrencar un servidor és lent i necessites reaccionar molt ràpid als pics.

Lifecycle hooks: pausar en moments clau del cicle de vida

Un lifecycle hook (ganxo de cicle de vida) és una pausa que l'ASG fa en moments concrets —quan un servidor està naixent o quan serà eliminat— per donar-te temps a fer alguna cosa abans de continuar.

Instància naixent:
  Pendent ──[HOOK: pausa]── En servei
              │
              └─► temps per: acabar d'instal·lar, registrar-se,
                  escalfar memòries cau, avisar un altre sistema...

Instància morint:
  En servei ──[HOOK: pausa]── Terminada
                │
                └─► temps per: buidar connexions, desar logs,
                    avisar que se'n va, acabar peticions en curs...

Hook en crear: que no rebi tràfic abans d'hora

Sense un hook, l'ASG podria donar per «llest» un servidor que encara està acabant de configurar-se, i el balancejador començaria a enviar-li usuaris massa aviat (que veurien errors). Un lifecycle hook de creació reten la instància fins que confirmes que està realment llesta.

Hook en eliminar: apagat elegant (graceful shutdown)

Aquest és el cas més valuós. Quan l'ASG vol reduir servidors (la CPU ha baixat), no vols que apagui de cop un servidor que està atenent peticions en aquell moment, perquè aquests usuaris veurien un error. Un lifecycle hook d'eliminació dóna temps a un apagat elegant:

  1. Deixar d'acceptar peticions noves.
  2. Acabar les peticions que ja estava atenent (drenatge de connexions).
  3. Desar logs o dades pendents.
  4. Només llavors, apagar-se.

Exemple del món real: una botiga online redueix servidors després del pic de migdia. Un dels servidors a eliminar està processant el pagament d'un client. Sense un lifecycle hook, AWS l'apagaria de cop i el pagament fallaria. Amb el hook, el servidor acaba aquell pagament, confirma que ja no té res pendent, i llavors s'apaga. El client mai no nota res.

Taula resum

Tècnica Què fa Per a què serveix
Warm pool Servidors ja configurats, en reserva Escalar en segons davant pics bruscos
Lifecycle hook (creació) Pausa en néixer una instància Que no rebi tràfic abans d'estar llesta
Lifecycle hook (eliminació) Pausa abans d'apagar Apagat elegant: acabar el pendent sense tallar usuaris

Necessito això per començar?

No. Un balancejador + un Auto Scaling Group bàsic (subcapítols 13.1-13.3) ja et donen una arquitectura elàstica i resilient excel·lent per a la majoria de projectes. Els warm pools i els lifecycle hooks són optimitzacions que afegiràs quan:

  • Els teus arrencades siguin lentes i els pics molt bruscos → warm pools.
  • No et puguis permetre tallar peticions en reduir servidors → lifecycle hooks.

Queda't amb la idea que existeixen i quin problema resolen; ja els aplicaràs quan els necessitis.

El que has de recordar

  • Arrencar un servidor des de zero porta minuts, cosa que pot fer l'escalat massa lent davant pics bruscos.
  • Un warm pool manté servidors ja configurats en reserva per escalar en segons (amb un petit cost extra); com tenir «pizzes a mig fer».
  • Un lifecycle hook introdueix una pausa en crear o eliminar una instància per fer alguna cosa abans de continuar.
  • El hook d'eliminació permet un apagat elegant: acabar peticions en curs (un pagament, per exemple) sense tallar els usuaris.
  • Són optimitzacions avançades: no les necessites per començar, però convé saber quin problema resolen.

Has acabat el Capítol 13! Ja domines les arquitectures elàstiques i resilients. Al Capítol 14 farem un altre gran salt conceptual: el món serverless amb AWS Lambda, on ni tan sols hauràs de pensar en servidors.

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