En el subcapítol anterior, en parlar del patró Saga, vam mencionar que necessitàvem una manera d’orquestrar processos de diversos passos: dirigir l’ordre, decidir què fer si un pas falla, esperar, reintentar... Quan tens moltes Lambdas (Capítol 14) que han de col·laborar en un flux complex, coordinar-les «a mà» esdevé un caos. Per això existeix AWS Step Functions: un servei que et permet orquestrar fluxos de treball de diversos passos de manera visual, ordenada i fiable. És com tenir un director d’orquestra per a les teves funcions serverless.

El problema: coordinar moltes funcions és un embolic

Imagina un procés de negoci amb diversos passos: validar una comanda, cobrar, reservar estoc, programar enviament, notificar... Cada pas podria ser una Lambda. Si intentes coordinar-les fent que una cridi la següent directament, sorgeixen problemes:

❌ Coordinació "a mà" (Lambda crida Lambda):
   - Què passa si un pas falla? Com reintento?
   - Com sé en quin pas va el procés ara mateix?
   - Com gestiono passos que triguen, esperes, decisions (si això, fes allò)?
   - El flux queda "amagat" dins el codi, difícil de veure i canviar

Aquesta «coordinació oculta en el codi» és fràgil, difícil de seguir i de modificar. Necessites separar la lògica del flux (l’ordre dels passos, què fer si fallen) de la lògica de cada pas (el que fa cada Lambda).

Què és Step Functions

AWS Step Functions és un servei per orquestrar fluxos de treball (workflows): defineixes una seqüència de passos —amb el seu ordre, decisions, reintents i gestió d’errors— i Step Functions l’executa i la coordina per tu. El flux es defineix de manera visual i declarativa, separat del codi de cada pas.

   Step Functions executa un flux així:

   [Validar comanda] → És vàlida?
                       ├─ sí → [Cobrar pagament] → [Reservar estoc] → [Enviar] → [Fi]
                       └─ no → [Rebutjar] → [Fi]
   (amb reintents i gestió d’errors a cada pas)

Analogia: Step Functions és com el director d’una orquestra. Cada músic (Lambda) sap tocar el seu instrument (fer la seva tasca), però és el director qui marca l’ordre, quan entra cadascú, què fer si algú s’equivoca, i manté tothom coordinat perquè soni una simfonia i no un caos. Sense director, 50 músics tocant alhora sense coordinació serien un desastre. Step Functions dirigeix les teves funcions perquè col·laborin en un flux ordenat.

Una altra manera de veure-ho: és com un diagrama de flux que s’executa de veritat. Dibuixes el procés (aquest pas, després aquest, si passa això fes allò) i Step Functions ho porta a terme.

Què t’ofereix Step Functions

  1. Flux visual i clar

El flux de treball es veu com un diagrama: d’una ullada entens el procés complet (quins passos hi ha, en quin ordre, quines decisions es prenen). Això fa que el procés sigui fàcil d’entendre i de modificar, en comptes d’estar enterrat en el codi.

  1. Gestió d’errors i reintents integrada

Step Functions gestiona automàticament què fer quan un pas falla: pot reintentar (amb esperes creixents), saltar a un pas de gestió d’error, o executar compensacions (just el que necessita el patró Saga del subcapítol 28.2!). No has de programar tota aquesta lògica a mà.

  1. Seguiment de l’estat

Step Functions recorda en quin pas va cada execució i guarda l’historial. Pots veure exactament per on va un procés, quins passos s’han completat i on ha fallat si alguna cosa ha anat malament. Això dona una visibilitat enorme (complementa l’observabilitat del Capítol 24).

  1. Passos que esperen o triguen

Gestiona amb naturalitat fluxos que triguen (minuts, hores o fins i tot dies) o que han d’esperar alguna cosa (una aprovació humana, una resposta externa). Una cosa molt difícil de fer només amb Lambdas (que tenen un temps màxim d’execució, recorda el subcapítol 14.5).

Step Functions i el patró Saga

Step Functions és l’eina ideal per implementar una Saga per orquestració (subcapítol 28.2): defineixes els passos del procés i, per a cadascun, quina compensació executar si alguna cosa falla més endavant. Step Functions s’encarrega d’executar les compensacions en ordre si un pas falla, mantenint la consistència, tot de manera visual i controlada.

Saga amb Step Functions:
   [Cobrar] → [Reservar] → [Enviar] ✗ falla
        └─ Step Functions executa compensacions automàticament:
              [Alliberar reserva] → [Reemborsar] → estat consistent

Exemple del món real: una empresa processa sol·licituds de préstec, un procés de molts passos: validar dades, comprovar l’historial creditici (trucada a un servei extern que triga), calcular el risc, esperar l’aprovació d’un humà si l’import és alt, i finalment desemborsar o rebutjar. Ho implementen amb Step Functions: el flux complet es veu com un diagrama clar, els passos que triguen o esperen (com l’aprovació humana, que pot trigar dies) es gestionen sense problema, i si algun pas falla, hi ha reintents i gestió d’errors definits. L’equip pot veure en quin punt està cada sol·licitud en temps real. El que coordinar a mà amb Lambdas hauria estat fràgil i il·legible, amb Step Functions és un procés clar, robust i fàcil de modificar.

Quan utilitzar Step Functions

  • Quan tens un procés de diversos passos per coordinar (especialment amb Lambdas).
  • Quan necessites gestió d’errors, reintents o compensacions robustes (com en una Saga).
  • Quan el flux té decisions («si això, fes allò»), esperes o passos que triguen.
  • Quan vols veure i entendre el procés clarament, no amagar-lo en el codi.

💡 Per a una sola tasca simple, una Lambda sola n’hi ha prou. Step Functions brilla quan hi ha un flux de diversos passos per coordinar.

El que has de recordar

  • Coordinar moltes funcions fent que una cridi la següent és fràgil i difícil de seguir; convé separar la lògica del flux de la lògica de cada pas.
  • AWS Step Functions orquestra fluxos de treball de diversos passos: defineixes l’ordre, decisions, reintents i gestió d’errors de manera visual i declarativa, i ell els executa i coordina. Com el director d’una orquestra (o un diagrama de flux que s’executa).
  • T’ofereix: flux visual clar, gestió d’errors i reintents integrada, seguiment de l’estat (en quin pas va cada execució) i suport per a passos que esperen o triguen (fins i tot dies).
  • És l’eina ideal per implementar el patró Saga per orquestració (executa les compensacions automàticament si un pas falla).
  • Fes-la servir per a processos de diversos passos amb decisions, esperes o gestió d’errors robusta. 💡 Per a una tasca simple, n’hi ha prou amb una Lambda sola.

A l’últim subcapítol del capítol veurem com executar lògica serverless molt a prop dels usuaris, a la vora de la xarxa, amb Lambda@Edge i CloudFront Functions.

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