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    24h

Si 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_data del 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_data que 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

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