Ja tens les teves imatges desades a ECR (subcapítol 17.2). Ara arriba el moment d’executar-les: posar els teus contenidors a funcionar en producció, escalar-los i mantenir-los sans. Per això AWS ofereix ECS (Elastic Container Service), el seu servei per orquestrar contenidors. En aquest subcapítol entendràs els seus conceptes clau i una decisió important: Fargate o EC2.

El problema: executar contenidors de debò

Executar un contenidor al teu portàtil és fàcil (docker run). Però en producció necessites molt més:

  • Executar molts contenidors repartits en diversos servidors.
  • Reiniciar-los automàticament si cauen.
  • Escalar-los segons la demanda (més còpies en hora punta).
  • Repartir el trànsit entre ells (amb un balancejador, Capítol 13).

Fer tot això a mà seria inviable. Un orquestrador de contenidors ho automatitza. ECS és l’orquestrador d’AWS.

Analogia: un orquestrador és com el director d’una orquestra. Els músics són els contenidors; el director s’assegura que toquin en harmonia, que entri qui ha d’entrar, que si un falla un altre el cobreixi, i que el conjunt soni bé. Tu dones la partitura (la configuració) i el director (ECS) coordina tot.

Els conceptes clau d’ECS

Task Definition (definició de tasca)

Una task definition és la «recepta» de com executar el teu contenidor: quina imatge utilitzar (d’ECR), quanta CPU i memòria necessita, quins ports obre, quines variables d’entorn té, etc. És un plànol que descriu com ha de córrer la teva aplicació.

Task Definition "mi-api":
  - Imatge: mi-api:v2.0 (d’ECR)
  - CPU: 0.5 vCPU
  - Memòria: 1 GB
  - Port: 8080
  - Variables: ENTORN=produccio

Task (tasca)

Una task és una task definition en execució: una instància viva del teu contenidor (o grup de contenidors) corrent segons aquesta recepta. És a ECS el que el contenidor era a la imatge.

Service (servei)

Un service s’encarrega de mantenir en marxa el nombre de tasques que vols i de connectar-les amb un balancejador. Li dius «vull sempre 3 còpies de la meva API corrent», i el service s’assegura que així sigui: si una cau, engega una altra; si vols escalar, afegeix més.

Service "mi-api" (desitjades: 3 tasques)
 ├── Task 1 ✓
 ├── Task 2 ✓
 └── Task 3 ✗ (cau) ──► el service engega una Task 4 automàticament

Et sona? És el mateix concepte que l’Auto Scaling Group del Capítol 13, però per a contenidors en comptes d’instàncies EC2. El service manté el nombre desitjat de tasques i les repara. I, com amb l’ASG, s’integra amb un balancejador de càrrega per repartir el trànsit entre les tasques.

La gran decisió: Fargate vs EC2

ECS necessita màquines on executar els contenidors. Aquí tens dos modes, i triar bé és important:

Mode EC2: tu poses els servidors

En el mode EC2, tu gestiones un grup d’instàncies EC2 (Capítol 4) on ECS col·loca els contenidors. Tens control total sobre aquests servidors (tipus d’instància, configuració), però també la responsabilitat de gestionar-los: aplicar-hi pegats, escalar-los, mantenir-los.

Mode EC2:
  Tu gestiones les instàncies EC2 ──► ECS col·loca contenidors en elles
  + Control total    - Tu mantens els servidors

Mode Fargate: sense servidors per gestionar

En el mode Fargate, AWS posa i gestiona els servidors per tu. Tu només dius «executa aquesta tasca amb aquesta CPU i memòria», i Fargate s’encarrega de tot la resta. No veus ni gestiones cap instància EC2: és serverless per a contenidors.

Mode Fargate:
  Tu només defineixes la tasca ──► AWS executa el contenidor (sense servidors visibles)
  + Zero gestió de servidors    - Menys control de baix nivell

Connexió amb el Capítol 14: Fargate és als contenidors el que Lambda és a les funcions: en tots dos, AWS amaga i gestiona els servidors. T’oblides de la infraestructura i només t’ocupes de la teva aplicació.

Quin trio?

Mode EC2 Mode Fargate
Qui gestiona els servidors Tu AWS
Control Total (tipus d’instància, etc.) Limitat (només CPU/memòria)
Esforç operatiu Alt (mantenir servidors) Mínim
Cost Pot ser menor a gran escala constant Pagues per tasca; simple
Ideal per a Càrregues grans i constants, control fi Simplicitat, càrregues variables, començar

Recomanació per començar: fes servir Fargate. Et treu el pes de gestionar servidors i t’estalvies complicacions. El mode EC2 té sentit quan creixes molt, tens càrregues molt constants (on pot sortir més barat) o necessites un control especial sobre els servidors. Per a la majoria d’equips, Fargate és l’opció per defecte avui dia.

Com encaixa tot

Juntant els tres subcapítols de contenidors fins ara:

1. Docker: construeixes la imatge           (subcap. 17.1)
2. ECR: deses la imatge                     (subcap. 17.2)
3. ECS:
   - Task Definition: recepta d’execució (fa servir la imatge d’ECR)
   - Service: manté N tasques corrent, repara i escala
   - Fargate: AWS executa tot sense servidors que gestionis
   + Balancejador: reparteix el trànsit entre les tasques (Cap. 13)

El que has de recordar

  • ECS (Elastic Container Service) és l’orquestrador de contenidors d’AWS: executa, repara, escala i reparteix el trànsit dels teus contenidors automàticament (el «director d’orquestra»).
  • Task Definition: la «recepta» de com executar el teu contenidor (imatge, CPU, memòria, ports). Task: una recepta en execució. Service: manté el nombre desitjat de tasques, les repara i escala (com un Auto Scaling Group, però per a contenidors).
  • Dos modes d’execució: EC2 (tu gestiones els servidors, més control i esforç) i Fargate (AWS gestiona els servidors, serverless per a contenidors, esforç mínim).
  • Fargate és Lambda per a contenidors: oblida’t dels servidors. És l’opció recomanada per començar; EC2 té sentit a gran escala constant o amb necessitats de control especials.

A l’últim subcapítol del capítol (i de la Part IV) veurem l’alternativa més potent i complexa: EKS (Kubernetes a AWS), i quan val la pena davant d’ECS.

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