Fa onze mòduls, MercadoFresco era una botiga en línia amb un servidor que queia els divendres, unes còpies de seguretat que ningú no havia restaurat mai i un desplegament que consistia a copiar fitxers per SSH un dimarts a la nit. Avui té una arquitectura elàstica, segura, observable, desplegable des d'un pipeline, descrita en codi, repartida en cinc comptes, auditada amb mètode i amb una factura que costa un 24,8 % menys del que costava fa dos mesos.
Aquesta lliçó no ensenya cap servei nou. Fa cinc coses: recorre l'arquitectura completa associant cada peça al mòdul on es va aprendre i tanca el balanç dels cinc problemes inicials; planteja el projecte final, que és un repte real amb deu lliurables; ofereix una solució de referència comentada amb les seves alternatives descartades; traça els camins per continuar aprenent, amb les certificacions, els recursos i allò que aquest curs no ha tocat; i tanca el curs amb la llista de neteja de tot el que s'ha creat, perquè ningú no continuï pagant per un laboratori acabat.
Avís de cost. Aquesta lliçó inclou la neteja final de tots els recursos del curs. Si has seguit les pràctiques en un compte real, aquesta secció no és opcional: un clúster d'EKS oblidat costa 73 USD al mes, un grup d'ElastiCache més de 100, i set endpoints de VPC uns 112. L'ordre d'esborrat importa, perquè hi ha dependències. Dades, comptes i identificadors ficticis.
Contingut
- L'arquitectura completa de MercadoFresco
- Cada component i el mòdul on es va aprendre
- Els cinc problemes i la seva mètrica
- Errors comuns i consells
- Exercicis: el projecte final
- Solucions: l'arquitectura de referència comentada
- Els camins de certificació d'AWS
- Recursos oficials per continuar
- Allò que aquest curs no ha tocat
- Què saps fer ara
- La neteja final, en l'ordre correcte
- Conclusió
L'arquitectura completa de MercadoFresco
graph TB
subgraph USUARIS[" "]
U["Clients<br/>Madrid · Barcelona · Valencia · Sevilla"]
end
subgraph VORA["Vora global"]
R53["Route 53<br/>mercadofresco.example"]
CF["CloudFront E2QWERTY123ABC"]
WAFC["waf-mercadofresco-cdn<br/>+ Shield Standard"]
end
subgraph PROD["Compte produccio 111122223333 — vpc-mercadofresco, eu-west-1"]
ALB["alb-mercadofresco-tienda<br/>tg-mercadofresco-tienda / -verde<br/>waf-mercadofresco-alb · /salud"]
subgraph APP["Subxarxes privades d'aplicacio -app-a / -app-b"]
FG["svc-mercadofresco-tienda-fg<br/>Fargate arm64 · 2-20 tasques"]
TR["svc-mercadofresco-trabajadores<br/>Fargate + Fargate Spot"]
end
subgraph DADES["Subxarxes de dades -datos-a / -datos-b"]
AU[("aurora-mercadofresco-pedidos<br/>escriptor + 2 lectors")]
EC[("mercadofresco-catalogo<br/>ElastiCache")]
end
DY[("mercadofresco-carritos<br/>mercadofresco-idempotencia")]
SQS["cola-mercadofresco-pedidos<br/>-correo · -almacen · -analitica<br/>DLQ: -pedidos-fallidos"]
SNS["mercadofresco-pedido-confirmado"]
EB["bus-mercadofresco"]
SF["mercadofresco-procesar-pedido"]
LAM["Lambdes: cobrar-pago · reservar-stock<br/>asignar-reparto · estado-pedido<br/>generar-miniaturas"]
S3[("mercadofresco-catalogo-fotos<br/>-informes-analitica · -registros-web<br/>-copias-basedatos · -artefactos")]
RS[("wg-mercadofresco-analitica<br/>Redshift Serverless")]
NAT["nat-mercadofresco-a / -b<br/>vpce-mercadofresco-s3 + ECR/Logs/Secrets"]
end
subgraph EINES["Eines 555566667777"]
ECR["ECR mercadofresco/tienda<br/>mercadofresco/trabajadores"]
PIPE["pipeline-mercadofresco-tienda<br/>build-* · app-mercadofresco-tienda<br/>blue/green + reversio"]
GIT["mercadofresco-tienda<br/>mercadofresco-infra"]
end
subgraph SEG["Seguretat 444455556666"]
CT["trail-mercadofresco"]
CFG["grabador-mercadofresco"]
GD["GuardDuty"]
end
subgraph GEST["Gestio 999988887777 — o-a1b2c3d4e5"]
ORG["Organizations · IAM Identity Center<br/>OU Seguridad · Infraestructura · Cargas · Aislamiento"]
BUD["presupuesto-mensual-mercadofresco<br/>+ 9 pressupostos · Savings Plan"]
end
OBS["CloudWatch MercadoFresco/Tienda<br/>mercadofresco-produccion · -negocio<br/>X-Ray · Container Insights<br/>alertas-mercadofresco"]
KMS["alias/mercadofresco-datos<br/>mercadofresco/produccion/rds/mfadmin"]
U --> R53 --> CF
WAFC -.protegeix.-> CF
CF --> ALB
ALB --> FG
FG --> AU
FG --> EC
FG --> DY
FG --> SQS
SQS --> TR
TR --> SF
SF --> LAM
LAM --> AU
LAM --> SNS
SNS --> EB
FG --> S3
CF --> S3
AU -.carrega nocturna.-> RS
S3 -.informes.-> RS
FG -.sortida.-> NAT
GIT --> PIPE --> ECR
PIPE -.desplega.-> FG
KMS -.xifra.-> AU
KMS -.xifra.-> S3
KMS -.xifra.-> DY
OBS -.observa.-> PROD
CT -.audita.-> PROD
CFG -.avalua.-> PROD
GD -.vigila.-> PROD
ORG -.governa.-> PROD
ORG -.governa.-> EINES
ORG -.governa.-> SEG
BUD -.controla.-> PROD
Cada component i el mòdul on es va aprendre
| Component | Servei | Mòdul | Quin problema va resoldre |
|---|---|---|---|
| Compte, MFA, pressupost inicial, regions | Compte, IAM arrel, Budgets | 01-02, 01-03 | Punt de partida segur |
| Consola, CLI i SDK, perfils | CLI, boto3 | 01-04, 01-05 | Treballar sense dependre del ratolí |
mercadofresco-tienda (primera versió) |
EC2, EBS | 02-01, 02-02 | Treure la botiga del servidor físic |
mercadofresco-catalogo-fotos i la resta de buckets |
S3 | 02-03 | Emmagatzematge sense límit i amb cicle de vida |
| Base de dades gestionada | RDS → Aurora | 02-04, 06-03 | Còpies, pedaços i commutació automàtics |
mercadofresco-generar-miniaturas i les altres |
Lambda | 02-05 | Feina esporàdica sense servidor |
vpc-mercadofresco, subxarxes, nat-mercadofresco-a/-b, endpoints |
VPC | 03-01 | Aïllament de xarxa per capes |
sg-mercadofresco-alb/-tienda/-basedatos/-cache |
Grups de seguretat, NACL | 03-02 | Mínim privilegi a la xarxa |
alb-mercadofresco-tienda, tg-mercadofresco-tienda/-verde, /salud |
ALB | 03-03 | Repartiment, salut i desplegament sense tall |
E2QWERTY123ABC |
CloudFront | 03-04 | 350 ms → 25 ms i −96,6 % de cost en fotos |
mercadofresco.example |
Route 53 | 03-05 | DNS amb comprovació de salut |
| Identity Center, rols, polítiques | IAM | 04-01 | Ningú amb credencials permanents |
alias/mercadofresco-datos |
KMS | 04-02 | Xifratge en repòs amb clau pròpia |
mercadofresco/produccion/rds/mfadmin, /mercadofresco/produccion/... |
Secrets Manager, Parameter Store | 04-03 | Secrets rotats i fora del codi |
| Shield Standard, decisió sobre Advanced | Shield | 04-04 | Protecció volumètrica amb criteri |
waf-mercadofresco-cdn, -alb |
WAF | 04-05 | Injecció, XSS, bots i inundació L7 |
MercadoFresco/Tienda, taulers, alertas-mercadofresco |
CloudWatch | 05-01 | Saber què passa i assabentar-se'n a temps |
| Traces d'extrem a extrem | X-Ray | 05-02 | Trobar el coll d'ampolla real |
trail-mercadofresco |
CloudTrail | 05-03 | Qui va fer què i quan |
grabador-mercadofresco, 29 regles |
Config | 05-04 | Compliment continu i remediació |
| Comprovacions i decisió sobre el pla | Trusted Advisor | 05-05 | Higiene contínua sense esforç |
| Elecció raonada de motor per cas | — | 06-01 | Deixar de fer servir una sola base de dades per a tot |
mercadofresco-carritos, -idempotencia |
DynamoDB | 06-02 | Clau-valor a escala, 51 → 8 USD |
aurora-mercadofresco-pedidos |
Aurora | 06-03 | p99 d'1.900 a menys de 900 ms |
wg-mercadofresco-analitica |
Redshift Serverless | 06-04 | Informes sense tombar producció, 1.586 → 16 USD |
mercadofresco-catalogo |
ElastiCache | 06-05 | Fitxa de producte de 240 a 28 ms |
cola-mercadofresco-pedidos i les altres, DLQ |
SQS | 07-01 | Absorbir el pic sense perdre comandes |
mercadofresco-pedido-confirmado |
SNS | 07-02 | Un esdeveniment, molts interessats |
bus-mercadofresco |
EventBridge | 07-03 | Encaminament per contingut i programació |
mercadofresco-procesar-pedido |
Step Functions | 07-04 | Orquestrar la comanda amb reintents i compensació |
| Idempotència, reintents, DLQ, saga | Patrons | 07-05 | No cobrar dues vegades |
mercadofresco-tienda, mercadofresco-infra |
CodeCommit | 08-01 | Codi versionat amb revisió |
build-mercadofresco-* |
CodeBuild | 08-02 | Compilar i provar a cada commit |
app-mercadofresco-tienda |
CodeDeploy | 08-03 | Blue/green amb reversió automàtica |
pipeline-mercadofresco-tienda |
CodePipeline | 08-04, 08-05 | 4,8 desplegaments/setmana, restauració en 4 min |
red-mercadofresco.yaml, aplicacion-mercadofresco.yaml |
CloudFormation | 09-01 | Infraestructura reproduïble |
infra-cdk/, MercadoFrescoVpc |
CDK | 09-02 | Infraestructura en un llenguatge real |
| Avaluació i descart raonat | Elastic Beanstalk | 09-03 | Saber quan no fer servir una eina |
o-a1b2c3d4e5, 6 comptes, OU, SCP, ss-mercadofresco-linea-base |
Organizations | 09-04 | Aïllament i govern; −340 USD de duplicats |
ecs-mercadofresco, mercadofresco/tienda |
ECS i ECR | 10-01 | Contenidors sense AMI per mantenir |
svc-mercadofresco-tienda-fg arm64, Fargate Spot |
Fargate | 10-02 | 158 → 70 USD i arrencada en 40 s |
| Anàlisi i decisió de quedar-se a ECS | EKS | 10-03 | Decidir amb criteris escrits, no amb moda |
| Revisió de 6 pilars, ADR, RTO/RPO | Well-Architected | 11-01 | Saber què falta abans que falli |
| Etiquetes activades, CUR, cost per comanda | Cost allocation, Athena | 11-02 | Una factura que algú pot llegir |
| Deu optimitzacions, anomalies | Cost Explorer | 11-03 | −488 USD/mes sense degradar res |
| Deu pressupostos, congelació de desenvolupament | Budgets | 11-04 | No poder passar-se sense assabentar-se'n |
| Compute SP + nodes reservats | Savings Plans, RI | 11-05 | −68 USD/mes per comprometre capacitat |
Els cinc problemes i la seva mètrica
El curs va començar amb cinc problemes concrets. Aquest és el balanç, amb números i no amb adjectius:
| # | Problema inicial | Solució | Mètrica abans | Mètrica després |
|---|---|---|---|---|
| 1 | La botiga cau els divendres entre les 17:00 i les 21:00 | Fargate amb autoescalat per seguiment d'objectiu i escalat programat que puja el mínim a les 16:45; cues SQS que absorbeixen la ràfega; ALB en dues AZ; ElastiCache i lectors d'Aurora que descarreguen la base de dades | 1 servidor, caigudes setmanals; p99 d'1.900 ms | 900 comandes/hora sostingudes, p99 < 900 ms, 0 caigudes; capacitat provada fins a 1.400 |
| 2 | Les còpies no són fiables: ningú no n'ha restaurat mai cap | Aurora amb PITR continu i còpies replicades entre regions; PITR a DynamoDB; versionat i cicle de vida a S3; AWS Backup; RTO i RPO declarats i signats, amb simulacre semestral | Sense RTO ni RPO; restauració mai provada | RPO 5 min a la regió / 6 h regional; RTO 8 h, amb simulacre al calendari |
| 3 | Créixer a més ciutats exigeix muntar-ho tot una altra vegada | Tot en CloudFormation i CDK; ss-mercadofresco-linea-base amb StackSets; pipeline que desplega sol; CloudFront acostant el contingut |
Setmanes de feina manual per ciutat | 4 ciutats sobre la mateixa infraestructura; una de nova no requereix infraestructura nova |
| 4 | Els desplegaments fan por: dimarts a la nit, per SSH | Pipeline amb proves, anàlisi i porta de qualitat; blue/green amb canari del 10 %; reversió automàtica per alarma | 1 desplegament cada 2-3 setmanes; reversió manual d'hores | 4,8 desplegaments/setmana, en horari laboral; restauració en 4 minuts (menys d'1 amb blue/green) |
| 5 | Ningú no governa la infraestructura: ni qui, ni quant, ni per què | Organizations amb 6 comptes i SCP; Identity Center; Config i CloudTrail centralitzats; etiquetatge imposat; pressupostos amb accions; revisió Well-Architected semestral | Un compte, permisos amplis, factura il·legible | 6 comptes aïllats, cobertura d'etiquetatge del 95 %, cost per comanda de 0,00934 USD i −24,8 % de factura |
Cinc problemes, cinc solucions, i en els cinc casos un número que es pot ensenyar. Aquesta és la diferència entre haver migrat al núvol i haver resolt alguna cosa.
Errors Comuns i Consells
Error: creure que l'arquitectura final era l'objectiu des del principi. Ningú no dissenya això d'una tirada. MercadoFresco hi va arribar en onze passos, cadascun resolent un problema concret que feia mal. Consell: quan dissenyis, comença pel problema, no pel diagrama.
Error: copiar aquesta arquitectura tal qual. Té sentit per a una botiga amb aquests volums, aquests problemes i aquest equip. Per a 200 comandes al mes és un disbarat, i per a 200.000 al dia es queda curta. Consell: copia el mètode de decisió, no les caixes del diagrama.
Error: lliurar un projecte d'arquitectura sense números. «Farem servir DynamoDB perquè escala» no és una justificació; «farem servir DynamoDB perquè són 400 escriptures per segon amb accés per clau i latència d'un dígit de mil·lisegons, i el cost estimat és de 22 USD al mes» sí que ho és. Consell: cada decisió, un número.
Error: no escriure les alternatives descartades. L'avaluador —i tu d'aquí a un any— necessita saber què vas considerar i per què ho vas deixar fora. Consell: per cada decisió important, una alternativa descartada amb el seu motiu.
Error: acabar el curs sense esborrar els recursos. És l'error més car de tots i li passa a molta gent. Consell: fes la neteja del final d'aquesta lliçó avui, no «quan tingui una estona».
Consell: el millor projecte no és el que fa servir més serveis, sinó el que justifica millor per què no en fa servir alguns. Descartar Shield Advanced, descartar EKS i descartar Beanstalk van ser tres de les decisions més valuoses d'aquest curs.
Consell: guarda la teva solució del projecte. D'aquí a sis mesos, rellegir-la et dirà més sobre el que has après que qualsevol examen.
Exercicis
Exercici 1: el projecte final
L'encàrrec. MercadoFresco creix i el negoci planteja tres coses alhora per a l'any vinent:
- Obertura a Portugal i França. Lisboa i Porto primer, París i Lió després. Els clients portuguesos i francesos han de tenir una experiència equivalent a l'espanyola.
- Aplicació mòbil per a iOS i Android, amb dues funcions noves: seguiment del repartiment en temps real —el client veu el vehicle moure's al mapa— i recomanacions de productes personalitzades segons el seu historial de compra.
- Mantenir el cost per comanda. El gerent ha estat explícit: pot pujar la factura, però el cost per comanda no ha de pujar.
Els requisits, escrits:
| Requisit | Valor | Origen |
|---|---|---|
| Latència | Primer byte < 200 ms a Lisboa, Porto, París i Lió | Producte |
| Residència de la dada | Les dades personals de clients de la UE romanen a la UE; geolocalització tractada segons el RGPD | Legal |
| Disponibilitat | 99,95 % mensual per al procés de comanda | Negoci (contracte amb proveïdors) |
| Volum | ×4 comandes: de 180.000 a 720.000 al mes; pic de 3.600 comandes/hora | Previsió comercial |
| Seguiment en temps real | Posició del repartidor cada 5 s, visible amb < 3 s de retard | Producte |
| Recomanacions | Actualitzades diàriament; no en temps real | Producte |
| Pressupost | Cost per comanda ≤ 0,00934 USD | Gerència |
| Equip | Continua sent petit: 5 persones després de dues contractacions | Realitat |
El que cal lliurar. Deu apartats:
(a) Diagrama d'arquitectura. Un diagrama —mermaid, draw.io o paper fotografiat— amb les regions, els comptes, els components i els fluxos principals. Ha de distingir el que ja existeix del que s'afegeix.
(b) Regió o regions i estratègia multiregió. Una regió o diverses? Quines? Actiu-actiu, actiu-passiu, o una sola regió amb distribució a la vora? Justifica-ho amb els requisits de latència, residència i disponibilitat, i digues explícitament què descartes i per què.
(c) Motors de dades per a les dues funcions noves. Què faries servir per al seguiment en temps real i què per a les recomanacions, amb el patró d'accés, el volum estimat i el cost aproximat de cadascun.
(d) Pla de seguretat i compliment. Identitats, xifratge, secrets, protecció perimetral, auditoria, i específicament com tractes les dades de geolocalització de repartidors i clients sota el RGPD.
(e) Pla d'observabilitat amb SLI i SLO. Almenys tres indicadors amb el seu objectiu, la seva finestra i el seu pressupost d'error; quina alarma dispara què, i quins taulers necessita cada perfil.
(f) Pipeline i estratègia de desplegament per al nou àmbit multiregió i per a l'aplicació mòbil, que té un cicle de publicació diferent del de la web.
(g) Infraestructura com a codi i estructura de comptes. Què canvia a l'organització actual de sis comptes i com es desplega el mateix en diverses regions sense duplicar codi.
(h) Pressupost mensual estimat amb desglossament per servei i el cost per comanda resultant, comparat amb l'objectiu de 0,00934 USD.
(i) Revisió Well-Architected de la teva pròpia proposta: els tres riscos principals que introdueixes, el seu pilar i la seva mitigació.
(j) Pla de migració per fases, amb fites, criteris d'avanç i què fas si una fase falla.
Rúbrica d'avaluació:
| Apartat | Pes | Es valora |
|---|---|---|
| (a) Diagrama | 8 % | Llegible; distingeix el nou de l'existent; coherent amb la resta del lliurament |
| (b) Regions | 14 % | Justificació amb els tres requisits; alternatives descartades amb el seu motiu; cost conscient |
| (c) Motors de dades | 14 % | Patró d'accés abans que producte; volum estimat; cost; no fer servir un motor «perquè escala» |
| (d) Seguretat i RGPD | 12 % | Cobertura de les cinc capes; tractament explícit de geolocalització; remetre a un professional on correspongui |
| (e) Observabilitat | 10 % | SLI mesurables i SLO realistes lligats al negoci; pressupost d'error; no confondre mètrica amb objectiu |
| (f) Pipeline | 10 % | Desplegament progressiu; reversió; cicle diferent per a mòbil; multiregió |
| (g) IaC i comptes | 10 % | Parametrització per regió; sense duplicar codi; comptes justificats |
| (h) Pressupost | 12 % | Números coherents i traçables; cost per comanda calculat; comparació amb l'objectiu |
| (i) Well-Architected | 6 % | Autocrítica real; riscos que de debò introdueix la proposta |
| (j) Migració | 4 % | Fases amb criteri d'avanç i pla de tornada enrere |
Criteri general: un lliurament que justifiqui bé tres alternatives descartades val més que un que enumeri quinze serveis. I qualsevol apartat sense un número és un apartat incomplet.
Exercici 2: la decisió d'una sola regió
Un company proposa la solució més simple possible per al requisit de latència: quedar-se només a eu-west-1 i resoldre Portugal i França amb CloudFront i AWS Global Accelerator, sense desplegar res a una altra regió.
- Quins requisits de l'enunciat sí que resol aquesta proposta i quins no?
- Estima la latència de xarxa des de Lisboa i des de París fins a Irlanda, i digues si el requisit de 200 ms és assolible.
- Què li respondries sobre disponibilitat del 99,95 %?
Exercici 3: el cost per comanda amb ×4 de volum
Amb la factura actual de 1.681,60 USD i 180.000 comandes, el cost per comanda és de 0,00934 USD. El volum es multiplica per quatre fins a 720.000 comandes.
- Si la factura creixés linealment, quant costaria i quin seria el cost per comanda?
- Identifica quatre partides de la factura que no creixen amb el volum i estima quant pesen.
- Estima la factura real amb ×4 de comandes i calcula el cost per comanda. Es compleix l'objectiu?
Solucions
Solució a l'exercici 1: arquitectura de referència comentada
Aquesta és una solució vàlida, no l'única. El seu valor és a les raons, no a les caixes.
(a) i (b) Regions i estratègia multiregió.
La proposta: eu-west-1 (Irlanda) continua sent la regió principal i única per a l'estat transaccional, reforçada amb CloudFront a tota la vora europea i AWS Global Accelerator per al trànsit de l'aplicació mòbil. S'afegeix eu-west-3 (París) únicament per a dues coses: el destí de la recuperació davant de desastres i, si els mesuraments ho justifiquen, una rèplica de lectura del catàleg.
Per què:
- La latència es resol a la vora, no movent la base de dades. El requisit és de primer byte, i el 90 % del contingut d'una botiga és estàtic o cacheable: fotos, catàleg, JavaScript. CloudFront ja el serveix des de punts de presència a Lisboa, Madrid, París i Marsella. Per a les crides dinàmiques de l'API, Global Accelerator fica el trànsit a la xarxa troncal d'AWS al punt de presència més proper, cosa que retalla entre un 20 i un 40 % de la latència respecte d'internet públic.
- La residència de la dada ja es compleix: Irlanda és la UE. El RGPD exigeix que les dades romanguin a la UE o a països amb decisió d'adequació, no que estiguin al país del client. Aquest és el malentès més freqüent en aquest tipus de projectes.
- Una segona regió activa multiplicaria per dos la complexitat i per gairebé dos la factura, i el requisit del 99,95 % no la necessita: 99,95 % mensual són 21,9 minuts d'indisponibilitat al mes, perfectament assolibles amb Multi-AZ ben fet dins d'una sola regió.
Alternatives descartades i per què:
| Alternativa | Motiu del descart |
|---|---|
Actiu-actiu a eu-west-1 i eu-west-3 |
Requereix Aurora Global Database amb escriptura en dos llocs o partició per país; duplica cost i feina; el requisit de disponibilitat no ho demana |
| Una regió per país (Irlanda, París, i Espanya a Irlanda) | Fragmenta les dades, complica els informes de la Sara, multiplica el govern per tres i no millora la latència de manera perceptible respecte de CloudFront |
eu-south-2 (Espanya) com a principal |
Menys serveis disponibles, sense avantatge de latència real per a França, i obligaria a migrar tot l'existent |
Warm standby a eu-west-3 |
+35 % de factura per a un RTO que el negoci no ha demanat; es reavalua si el RTO baixa de 8 h |
(c) Motors de dades per a les funcions noves.
Seguiment del repartiment en temps real. Dos problemes diferents que la gent sol barrejar:
- Ingerir la posició: 200 repartidors enviant la seva posició cada 5 segons són 40 missatges/segon, 3,5 milions al dia. És un volum petit i constant.
- Lliurar-la al client: cada client amb una comanda en curs vol veure el vehicle moure's amb menys de 3 segons de retard.
La proposta:
| Peça | Servei | Per què |
|---|---|---|
| Ingesta des del mòbil del repartidor | AWS IoT Core amb MQTT | Dissenyat per a dispositius mòbils amb connexió intermitent; MQTT consumeix molta menys bateria i dades que HTTP; autenticació per certificat per dispositiu |
| Estat actual de cada repartiment | DynamoDB mercadofresco-repartos-posicion, amb TTL de 4 hores |
Accés per clau (id de repartiment), escriptura constant, lectura d'un sol element. El TTL esborra sol el que ja no serveix, sense procés de neteja |
| Lliurament al client | API Gateway WebSocket | Connexió persistent; el client rep empentes en lloc de preguntar cada 3 s, cosa que evita milers de peticions inútils |
| Històric per a anàlisi | Kinesis Data Firehose → S3 → Athena | L'històric no necessita baixa latència; a S3 surt per cèntims |
Cost estimat: uns 95 USD al mes amb aquest volum, dominat per les connexions WebSocket i les escriptures de DynamoDB.
Alternativa descartada: fer que l'aplicació pregunti per HTTP cada 3 segons. Amb 3.000 comandes en curs serien 1.000 peticions per segon contra l'API, és a dir, més trànsit que tota la botiga, i una bateria del mòbil esgotada en dues hores.
Recomanacions de productes. Aquí la clau és en un requisit que l'enunciat dona i que molta gent passa per alt: «actualitzades diàriament; no en temps real». Això canvia tota la solució.
| Peça | Servei | Per què |
|---|---|---|
| Dades d'entrada | Redshift Serverless, que ja té l'històric de compres | No cal construir cap canalització nova |
| Càlcul | Feina nocturna a Redshift + una Lambda que escriu el resultat | Amb dades diàries, un càlcul per lots de 20 minuts n'hi ha prou |
| Emmagatzematge del resultat | DynamoDB mercadofresco-recomendaciones, clau = id de client |
Lectura per clau en un dígit de mil·lisegons; una escriptura al dia per client |
| Servei al client | L'API existent llegeix de DynamoDB | Zero infraestructura nova al camí crític |
Cost estimat: uns 40 USD al mes.
Alternativa descartada: Amazon Personalize. És el servei específic per a això i probablement donaria millors recomanacions. Es descarta en la primera versió per tres raons: costa força més, afegeix un servei nou per mantenir a un equip de cinc persones, i encara no hi ha una mesura de si les recomanacions funcionen. La decisió escrita: començar amb regles senzilles —«també van comprar això», «tornes a necessitar això»— sobre dades que ja hi són, mesurar la conversió durant tres mesos, i aleshores decidir si Personalize compensa. Introduir aprenentatge automàtic abans de tenir una mètrica d'èxit és la manera més cara de no saber si alguna cosa serveix.
(d) Seguretat i compliment.
L'existent es manté i s'estén: Identity Center, alias/mercadofresco-datos per a tot el que és nou, secrets a Secrets Manager, WAF a CloudFront i a l'ALB, Shield Standard, CloudTrail i Config centralitzats a 444455556666.
El que s'afegeix per l'aplicació mòbil:
- Amazon Cognito per a la identitat dels clients, amb inici de sessió federat. Els tokens caduquen; res de claus a l'aplicació.
- Certificats per dispositiu a IoT Core per als repartidors, amb política que només permet publicar al seu propi tema. Un repartidor no pot publicar la posició d'un altre.
- Limitació de velocitat i protecció de bots al WAF de l'API mòbil, que és el nou objectiu obvi.
I la part delicada, la geolocalització:
| Qüestió | Tractament proposat |
|---|---|
| És dada personal? | Sí, sense discussió. La posició d'una persona identificable és dada personal; la d'un repartidor identificat ho és a més en context laboral, amb normativa addicional |
| Base legal | Execució del contracte per al repartiment; no consentiment genèric. Per al repartidor, la vigilància laboral té requisits propis: informació prèvia, proporcionalitat i consulta a la representació dels treballadors |
| Minimització | Es desa només la posició del repartiment en curs, amb TTL de 4 hores a DynamoDB. No es construeix un històric de moviments del repartidor |
| Històric | Només agregats i anonimitzats: temps mitjans per zona, sense identificar la persona |
| Xifratge | En repòs amb KMS i en trànsit amb TLS i MQTT sobre TLS, d'extrem a extrem |
| Accés | Rol específic i mínim; cada consulta queda a CloudTrail |
| Drets de l'interessat | Procediment escrit d'accés, rectificació i supressió, amb l'esborrat propagat a S3 i Redshift |
I l'advertiment que ha de figurar al lliurament i que forma part de la nota: això és un disseny tècnic, no un dictamen jurídic. El tractament de geolocalització de treballadors és un dels punts més sensibles del RGPD i de la normativa laboral, exigeix avaluació d'impacte i l'ha de revisar un professional de protecció de dades abans de posar-se en producció. Una proposta que resol la geolocalització sense esmentar això és incompleta per molt bona que sigui tècnicament.
(e) Observabilitat amb SLI i SLO.
| SLI | Definició mesurable | SLO | Finestra | Pressupost d'error |
|---|---|---|---|---|
| Disponibilitat de la comanda | Peticions a /pedido amb resposta 2xx o 3xx ÷ total |
99,95 % | 30 dies | 21,9 min/mes |
| Latència de confirmació | p99 de TiempoConfirmacionPedido |
< 900 ms | 30 dies | 1 % de peticions |
| Frescor del seguiment | p95 del retard entre emissió i visualització | < 3 s | 7 dies | 5 % d'actualitzacions |
| Èxit del repartiment | Repartiments lliurats en el termini ÷ total | > 98 % | 30 dies | Mètrica de negoci |
Amb tres decisions importants: les alarmes es posen sobre la taxa de consum del pressupost d'error, no sobre llindars instantanis, per no despertar ningú per un pic de 30 segons; els taulers se separen per perfil —mercadofresco-produccion per al torn de guàrdia, mercadofresco-negocio per a la Sara i gerència, i un de nou mercadofresco-movil—; i el cost per comanda continua al tauler de negoci, al costat de les comandes, tal com es va establir a 11-02.
(f) Pipeline i desplegament. Es manté pipeline-mercadofresco-tienda amb blue/green i reversió, i s'hi afegeixen tres coses: una etapa per regió per al que es desplegui a eu-west-3, sempre desplegant primer a la regió secundària i només després a la principal; un pipeline propi per a l'API mòbil, que es versiona de manera independent perquè les aplicacions publicades a les botigues no es poden revertir —una versió antiga pot quedar instal·lada mesos, així que l'API ha de mantenir compatibilitat cap enrere durant almenys dues versions—; i banderes de funcionalitat per activar el seguiment en temps real per ciutat, cosa que permet obrir Lisboa sense tocar el codi.
(g) IaC i estructura de comptes. L'organització de sis comptes no canvia: continua sent l'adequada, i l'Entorno continua sent la millor dimensió de separació. El que canvia és la parametrització: les plantilles red-mercadofresco.yaml i aplicacion-mercadofresco.yaml i les piles del CDK reben la regió com a paràmetre, amb ss-mercadofresco-linea-base estès a la nova regió. Un sol repositori, una sola definició, dos destins.
L'únic compte que es planteja afegir és un de dades per a l'analítica i les recomanacions, i es descarta de moment: amb cinc persones, un compte més és més govern del que aporta. Es revisarà si l'equip de dades creix.
(h) Pressupost estimat.
| Concepte | Actual | Amb ×4 i les funcions noves | Comentari |
|---|---|---|---|
| Aurora | 342,60 | 890,00 | Escala gairebé amb el volum; +1 lector |
| Fargate | 262,40 | 880,00 | Escala amb el volum |
| CloudWatch | 214,90 | 420,00 | Creix menys que lineal amb retenció ben posada |
| NAT Gateway | 243,80 | 290,00 | El 81 % és càrrec fix: no escala |
| ElastiCache | 71,83 | 185,00 | Node més gran; amb reserva |
| S3 | 128,90 | 310,00 | Escala amb fotos i registres |
| CloudFront | 62,80 | 240,00 | Escala amb el trànsit; més regions de vora |
| Redshift Serverless | 104,50 | 190,00 | Més dades, mateix patró |
| DynamoDB | 58,40 | 240,00 | Inclou posició i recomanacions |
| ALB i VPC | 222,80 | 330,00 | Majoritàriament càrrec fix |
| IoT Core + API Gateway WebSocket | 0 | 95,00 | Nou |
| Lambda i missatgeria | 68,70 | 210,00 | Escala amb el volum |
| Cognito | 0 | 45,00 | Nou; primers usuaris gratuïts |
| Govern, seguretat i CI/CD | 190,10 | 240,00 | Amb prou feines escala |
| Global Accelerator | 0 | 35,00 | Nou; càrrec fix + transferència |
| Total | 1.681,60 | ≈ 4.600,00 | |
| Comandes/mes | 180.000 | 720.000 | ×4 |
| Cost per comanda | 0,00934 USD | 0,00639 USD | −31,6 % |
L'objectiu es compleix amb escreix, i la raó és exactament la que 11-02 anticipava: hi ha una part important de la factura —NAT, ALB, endpoints, govern, observabilitat base— que no creix amb el volum, i en repartir-se entre quatre vegades més comandes fa baixar el cost unitari. Multiplicar el negoci per quatre multiplica la factura per 2,7.
(i) Els tres riscos principals d'aquesta proposta:
| # | Risc | Pilar | Mitigació |
|---|---|---|---|
| 1 | Una sola regió per a l'estat transaccional. Una caiguda regional deixa fora de servei tres països en lloc d'un, i el RTO de 8 hores passa a ser molt més car en reputació | Fiabilitat | Reavaluar el RTO amb el negoci ara que hi ha tres països; si baixa de 4 h, passar a llum pilot a eu-west-3 (+12 % de factura, calculat a 11-01) |
| 2 | La geolocalització de repartidors és el punt de més exposició regulatòria de tot el sistema | Seguretat | Minimització amb TTL de 4 h, sense històric personal, avaluació d'impacte i revisió obligatòria per un professional de protecció de dades abans de producció |
| 3 | Cinc persones per a tres països, dues plataformes i sis serveis nous. El risc més gran d'aquesta proposta no és tècnic | Excel·lència operativa | Runbooks i guàrdia definida —pendents des d'11-01—; obrir per fases; descartar Personalize i el compte de dades en la primera versió; automatitzar abans de créixer |
(j) Pla de migració per fases:
| Fase | Contingut | Criteri per avançar | Si falla |
|---|---|---|---|
| 0 (2 set) | Global Accelerator i ajust de CloudFront; mesurar latència real des de Lisboa i París | Primer byte < 200 ms mesurat | Reavaluar eu-west-3 per a lectura |
| 1 (4 set) | API mòbil i Cognito; aplicació sense seguiment ni recomanacions | Aplicació a les botigues, 500 usuaris, sense incidències 2 setmanes | Endarrerir; la web continua funcionant |
| 2 (4 set) | Seguiment en temps real, només a Madrid | p95 de frescor < 3 s; bateria acceptable; validació de protecció de dades | Desactivar la bandera; ningú no se n'assabenta |
| 3 (3 set) | Recomanacions diàries, amb mesurament de conversió | Conversió mesurable durant 3 setmanes | Desactivar; es perd una funció, no una comanda |
| 4 (6 set) | Obertura de Lisboa i Porto | Operació estable 3 setmanes i SLO complerts | Aturar l'expansió; Espanya no se'n veu afectada |
| 5 (6 set) | París i Lió | Ídem | Ídem |
| 6 (continu) | Prova de càrrega a 3.600 comandes/hora, simulacre de recuperació, revisió Well-Architected | Riscos alts ≤ 5 | Bloqueja la fase 5 |
Dos principis que governen el pla: cada fase és reversible sense afectar el que ja funciona —banderes de funcionalitat, no desplegaments irreversibles— i la prova de càrrega és requisit per obrir el segon país, no una tasca que es fa si sobra temps. És exactament la troballa de risc alt que 11-01 va deixar oberta.
Solució a l'exercici 2
(1) Què resol i què no. La proposta d'una sola regió resol: la residència de la dada, perquè Irlanda és la UE; el cost, perquè és de bon tros l'opció més barata; la simplicitat operativa, decisiva amb cinc persones; i la latència del contingut estàtic, que és el gruix d'una botiga. No resol per si sola: la latència de les peticions dinàmiques si no s'hi afegeix Global Accelerator o algun mecanisme d'acceleració; i no aporta res davant d'una caiguda regional completa, que continua sent el risc número u de la proposta.
(2) Latència estimada. L'anada i tornada de xarxa des de Lisboa fins a eu-west-1 ronda els 40-55 ms, i des de París els 25-35 ms. A sobre d'això cal sumar l'establiment de TLS —que amb reutilització de connexió i TLS 1.3 s'amortitza— i el temps de procés al servidor, que a MercadoFresco és per sota de 900 ms al p99 però molt més baix a la mediana. El requisit de 200 ms de primer byte és perfectament assolible per a contingut servit des de CloudFront —on la latència és la del punt de presència local, de l'ordre de 10-20 ms— i assolible per a l'API dinàmica amb Global Accelerator i connexions reutilitzades. El que no seria assolible és servir cada petició dinàmica des d'Irlanda sense memòria cau ni acceleració i amb una consulta lenta al darrere.
(3) Sobre el 99,95 %. Aquí cal ser precís amb els números, perquè és on la conversa se sol tòrcer. 99,95 % mensual són 21,9 minuts d'indisponibilitat al mes. Això és perfectament assolible en una sola regió amb Multi-AZ ben fet: ALB en dues zones, Aurora amb commutació per sota de 30 segons, tasques repartides i desplegaments sense tall. El que una sola regió no cobreix és una caiguda regional completa, que és un succés rar però real.
La resposta honesta al company és que té raó en la proposta i li falta una frase: l'arquitectura d'una sola regió compleix el SLO compromès, i el risc residual —una caiguda regional— ha d'estar escrit, quantificat i acceptat per qui signa el contracte del 99,95 %, exactament com es va fer a 11-01 amb el RPO regional de 6 hores. Si el negoci no accepta aquest risc residual ara que hi ha tres països en joc, aleshores la conversa canvia i cal pressupostar llum pilot a eu-west-3: +12 % de factura, uns 550 USD al mes amb la nova mida.
Solució a l'exercici 3
(1) Creixement lineal. Seria 1.681,60 × 4 = 6.726,40 USD, i el cost per comanda es mantindria exactament igual en 0,00934 USD, perquè el creixement lineal és la definició de cost unitari constant.
(2) Quatre partides que no creixen amb el volum:
| Partida | Import actual | Per què no creix |
|---|---|---|
| NAT Gateway | 243,80 USD | El 81 % és càrrec fix per hora; només creixen les dades processades |
| ALB i endpoints de VPC | 222,80 USD | Càrrec fix per hora i per AZ; les unitats de capacitat creixen poc |
| Govern i seguretat (Config, CloudTrail, GuardDuty, Organizations) | 132,90 USD | Depèn del nombre de comptes i recursos, no de comandes |
| CI/CD (CodeBuild, Pipeline, ECR) | 26,40 USD | Depèn dels desplegaments, no del trànsit |
| Total que amb prou feines escala | 625,90 USD | 37,2 % de la factura actual |
A aquestes quatre caldria afegir-hi la base fixa de CloudWatch —taulers, alarmes, mètriques personalitzades— i la part de Redshift que depèn del nombre d'informes i no del volum de comandes.
(3) Estimació realista.
Part que escala amb el volum ........ 1.055,70 x 4 = 4.222,80 USD
Part que amb prou feines escala ..... 625,90 x 1,2 = 751,08 USD
-------------
Subtotal 4.973,88 USD
Ajust per eficiencia d'escala (cache, trams, reserves, -8 %) -397,91
-------------
Estimacio ~4.576,00 USDCosa que coincideix, dins del marge d'una estimació, amb els 4.600 USD de l'apartat (h) de la solució de referència.
Cost per comanda = 4.600,00 / 720.000 = 0,00639 USD Objectiu ......................................... 0,00934 USD
Es compleix l'objectiu amb un 31,6 % de marge. I la conclusió de fons és la que dona sentit a tot el mòdul 11: el cost per comanda baixa en créixer perquè el 37 % de la factura és infraestructura fixa que es reparteix entre més comandes. És la raó per la qual presentar el cost absolut a la reunió mensual porta a decisions equivocades, i per la qual la mètrica unitària d'11-02 és la que cal ensenyar al gerent. Amb un advertiment: aquest avantatge només existeix si la part fixa es manté sota control. Si en créixer s'afegeixen comptes, regions, clústers i eines sense criteri, la part fixa creix amb ells i l'economia d'escala desapareix.
Els camins de certificació d'AWS
Aquest curs no prepara per a cap certificació en concret, però cobreix bona part del temari de diverses. El mapa:
| Certificació | Nivell | A qui li convé | Mòduls d'aquest curs que la cobreixen |
|---|---|---|---|
| Cloud Practitioner (CLF) | Fundacional | Perfils no tècnics, comercial, gestió de projecte; o com a primer pas | 1, 2, i parts de 4, 5 i 11. Aquest curs la supera amb escreix en profunditat tècnica |
| Solutions Architect – Associate (SAA) | Associat | El destí natural després d'aquest curs. Disseny d'arquitectures | 1 a 11, gairebé del tot. Faltaria aprofundir en migracions i xarxes híbrides |
| Developer – Associate (DVA) | Associat | Qui escriu el codi que corre a AWS | 2, 4, 5, 6, 7, 8, 10. Faltaria més SDK, Cognito i API Gateway |
| SysOps Administrator – Associate (SOA) | Associat | Operació, monitoratge i automatització | 1, 3, 5, 9, 11. Faltaria Systems Manager en profunditat i l'examen té laboratoris pràctics |
| Solutions Architect – Professional (SAP) | Professional | Arquitectes amb dos o més anys d'experiència real | Base coberta; exigeix a més multicompte avançat, migracions i escenaris molt llargs |
| DevOps Engineer – Professional (DOP) | Professional | Qui viu al pipeline | 8, 9, 10 en són el nucli; exigeix més automatització i recuperació |
| Especialitat: Security | Especialitat | Seguretat al núvol | 4, 5, 9 en donen la base; faltaria resposta a incidents i criptografia avançada |
| Especialitat: Advanced Networking | Especialitat | Xarxes complexes i híbrides | 3 en dona la base; faltaria Transit Gateway, Direct Connect i BGP |
| Especialitat: Machine Learning | Especialitat | Ciència de dades i IA | No coberta per aquest curs |
Tres consells sobre certificacions, dits sense embuts:
- L'Associate d'arquitecte és la que té millor relació entre esforç i utilitat si ja has fet aquest curs. Amb dues o tres setmanes de repàs enfocat i exàmens de pràctica, és assolible.
- Una certificació no substitueix haver construït alguna cosa. Obre portes en processos de selecció i no ensenya a decidir. Les decisions difícils d'aquest curs —descartar EKS, descartar Shield Advanced, triar un any en lloc de tres— no surten a cap examen.
- Si et vols certificar, fes-ho pel temari, no pel segell. El valor real és a les àrees que l'examen t'obliga a estudiar i que tu mai no hauries tocat pel teu compte.
Recursos oficials per continuar
| Recurs | Què és | Per a què fer-lo servir |
|---|---|---|
| Documentació d'AWS | Referència oficial per servei | La font de veritat. Comença sempre per la guia del desenvolupador, no pel blog |
| AWS Architecture Center | Patrons de referència i diagrames | Veure com es resolen problemes semblants al teu |
| AWS Well-Architected Labs | Laboratoris pràctics per pilar | El millor complement d'11-01, i són gratuïts |
| Workshops d'AWS | Tallers guiats per servei | Aprendre un servei nou amb les mans en dues hores |
| Blog d'arquitectura d'AWS | Casos i patrons | Subscriu-t'hi; una entrada a la setmana manté el nivell |
| Calculadora de preus d'AWS | Estimació prèvia | Fes-la servir abans de crear res, no després |
| What's New / anuncis | Canvis i serveis nous | Revisió mensual, no diària: el soroll és enorme |
| Guies de referència de seguretat | Prescriptiu sobre seguretat i multicompte | Quan muntis l'organització de debò |
| Prescriptive Guidance | Patrons i fulls de ruta | Migracions i modernització |
I un consell sobre com llegir-los: la documentació d'AWS és enorme i està pensada per consultar-la, no per llegir-la. La manera productiva de fer-la servir és tenir un problema concret, buscar la pàgina exacta i llegir-la sencera, inclosa la secció de quotes i la de preus, que són les dues que més disgustos eviten.
Allò que aquest curs no ha tocat
Onze mòduls i unes dues-centes hores d'AWS després, això és el que queda fora i és el pas següent natural:
| Àrea | Serveis | Per què importa | Quan abordar-la |
|---|---|---|---|
| Analítica i dades | Glue, Athena en profunditat, EMR, Kinesis, Lake Formation, QuickSight | És l'evolució natural del que fa la Sara amb Redshift: un llac de dades de debò | Quan els informes deixin de cabre en un magatzem |
| IA generativa i aprenentatge automàtic | Bedrock, SageMaker, Comprehend, Textract, Personalize | Recomanacions, cerca semàntica al catàleg, atenció al client | Quan hi hagi una mètrica d'èxit, no abans |
| IoT | IoT Core, Greengrass, SiteWise | Vehicles de repartiment, sensors de temperatura a la cadena de fred | Ja ha aparegut al projecte final |
| Migracions | DMS, MGN, Migration Hub, Snow Family | Portar sistemes existents des d'un centre de dades | Quan adquireixis una empresa o migris un ERP |
| Xarxes avançades | Transit Gateway, Direct Connect, PrivateLink, Cloud WAN | Connectar desenes de VPC, comptes i oficines | Quan la topologia deixi de cabre en un diagrama |
| Seguretat avançada | GuardDuty en profunditat, Security Hub, Macie, Detective, Inspector, Firewall Manager | Detecció, correlació i resposta a escala | Quan hi hagi algú dedicat a seguretat |
| Contenidors avançats | EKS en producció, App Mesh, Karpenter, GitOps amb Argo | Si algun dia es compleixen els criteris de 10-03 | Quan l'equip de plataforma tingui quatre persones |
| Aplicacions i usuaris | Cognito, AppSync, Amplify, API Gateway en profunditat | El front de les aplicacions mòbils i les API públiques | Ja ha aparegut al projecte final |
| Resiliència | Fault Injection Service, Resilience Hub, Elastic Disaster Recovery | Provar de debò el que 11-01 va deixar pendent | Ja: és el risc alt que continua obert |
I l'ordre que té més sentit després d'aquest curs: primer Resiliència, perquè tanca el risc obert més greu; després Analítica, perquè és on hi ha el valor de negoci immediat; i llavors el que demani el problema que tinguis al davant.
Què saps fer ara
En començar aquest curs probablement sabies que AWS existia i que «té molts serveis». Ara saps fer coses concretes:
- Dissenyar una arquitectura de tres capes al núvol, amb xarxa aïllada, computació elàstica i dades gestionades, i explicar cada decisió.
- Triar el motor de dades adequat a partir del patró d'accés en lloc de per costum: relacional, clau-valor, en memòria, columnar.
- Posar una aplicació en contenidors sense gestionar servidors, amb autoescalat, desplegament progressiu i reversió automàtica.
- Aïllar i protegir: identitats sense credencials permanents, xifratge amb claus pròpies, secrets rotats, WAF i grups de seguretat amb mínim privilegi.
- Saber què està passant: mètriques, registres, traces, alarmes i taulers que responen a preguntes de negoci i no només d'infraestructura.
- Desacoblar amb cues, temes, busos i màquines d'estats, i fer-ho bé: idempotència, reintents, cues de missatges fallits i compensació.
- Construir un pipeline que porti un commit a producció sense intervenció manual i que sàpiga tornar enrere sol.
- Descriure tota la infraestructura en codi i desplegar-la en diversos comptes i regions sense copiar i enganxar.
- Governar una organització multicompte amb unitats organitzatives, polítiques de control i una línia base comuna.
- Auditar el que s'ha construït amb mètode —sis pilars, troballes, riscos i pla prioritzat— i documentar decisions amb les seves alternatives descartades.
- Llegir una factura d'AWS, repartir-la per entorn i component, trobar el que sobra i posar-hi límits.
- I sobretot: dir que no. Descartar Shield Advanced amb criteri, descartar EKS amb sis condicions escrites, descartar Beanstalk, descartar Personalize fins a tenir una mètrica. Un arquitecte es reconeix pel que deixa fora.
La neteja final, en l'ordre correcte
Si has seguit les pràctiques en un compte real, això no és opcional. L'ordre importa, perquè molts recursos no es poden esborrar mentre altres en depenguin.
Abans de començar, dues comprovacions: revisa Cost Explorer amb granularitat diària per saber què està costant de debò, i filtra per l'etiqueta Proyecto=mercadofresco a Tag Editor per tenir l'inventari complet. Canvia de regió i repeteix: allò oblidat sol ser a us-east-1.
Fase 1 — Aturar el que consumeix ara (minuts).
REGION=eu-west-1
# Serveis d'ECS a zero tasques abans d'esborrar res
aws ecs update-service --region $REGION --cluster ecs-mercadofresco \
--service svc-mercadofresco-tienda-fg --desired-count 0
aws ecs update-service --region $REGION --cluster ecs-mercadofresco \
--service svc-mercadofresco-trabajadores --desired-count 0
# Grups de treball de Redshift Serverless (el mes car si s'oblida)
aws redshift-serverless delete-workgroup --region $REGION \
--workgroup-name wg-mercadofresco-analitica
# Clusters d'EKS de l'exercici de 10-03: 73 USD/mes cadascun
aws eks list-clusters --region $REGIONFase 2 — Computació i contenidors. Serveis d'ECS, després el clúster; funcions Lambda; instàncies EC2 —acabar-les, no aturar-les, perquè una instància aturada continua pagant el seu volum EBS—; grups d'Auto Scaling; i les imatges d'ECR, que es cobren per GB emmagatzemat.
Fase 3 — Balanceig i lliurament. Oients de l'ALB, després l'ALB, després els grups de destí. La distribució de CloudFront s'ha de deshabilitar primer i esperar que es propagui abans d'esborrar-la, cosa que triga de l'ordre de 15 minuts. Les adreces IP elàstiques s'alliberen a part: una IP sense associar costa més que una d'associada.
Fase 4 — Dades. Aquí convé aturar-se a pensar, perquè és irreversible. Clústers d'Aurora i RDS amb --skip-final-snapshot només si de debò no vols conservar res; grups de rèplica d'ElastiCache; taules de DynamoDB; i els buckets de S3, que s'han de buidar abans d'esborrar, incloses les versions antigues i els marcadors d'esborrat si el versionat està actiu, que és la causa número u de «no puc esborrar aquest bucket».
Fase 5 — Xarxa. L'ordre és estricte i no admet dreceres:
endpoints de VPC -> NAT Gateway -> alliberar IP elastiques -> taules de rutes -> subxarxes -> grups de seguretat -> porta d'enllac d'internet (desassociar i esborrar) -> VPC
Els endpoints d'interfície són la fuita més silenciosa: costen uns 0,011 USD per hora, per AZ i per endpoint, encara que no hi passi ni un sol byte. Set endpoints en dues AZ són 112 USD al mes per res.
Fase 6 — Observabilitat i govern. Alarmes i taulers de CloudWatch; grups de registres, que continuen costant emmagatzematge indefinidament; canaris de Synthetics; l'enregistrador de Config, que cobra per element de configuració; els trails de CloudTrail més enllà del primer, que és gratuït; i les regles d'EventBridge.
Fase 7 — Seguretat i gestió. Programar l'esborrat de les claus de KMS, amb un període d'espera d'entre 7 i 30 dies —costen 1 USD al mes mentrestant—; secrets de Secrets Manager, també amb període de recuperació; paràmetres avançats de Parameter Store, que són els únics que cobren; i les Web ACL de WAF, que costen 5 USD al mes més 1 per regla encara que no estiguin associades a res.
Fase 8 — Comprovació final. Quatre passos que ningú no fa i que eviten la sorpresa del mes següent:
- Espera 48 hores i torna a mirar Cost Explorer amb granularitat diària. El que continuï apareixent és el que se t'ha oblidat.
- Recorre les regions, especialment
us-east-1, on acaben les Web ACL de CloudFront i moltes proves. - Revisa Trusted Advisor, que llista recursos orfes.
- Deixa un pressupost d'1 USD actiu amb avís al 100 %. És la teva xarxa de seguretat permanent i costa zero.
I el que no s'ha d'esborrar: el compte en si, si vols continuar practicant; el trail de gestió, que és gratuït; i el pressupost de vigilància. Tancar el compte és l'opció nuclear i només té sentit si no hi penses tornar.
Conclusió
Aquí s'acaba el curs, i val la pena mirar el camí complet abans de tancar.
Vas començar amb un compte buit i una botiga que queia els divendres. Acabes amb una arquitectura que serveix quatre ciutats amb 900 comandes per hora al pic, que es desplega gairebé cinc vegades per setmana en horari laboral, que es restaura en quatre minuts, que està descrita íntegrament en codi, governada en sis comptes, auditada amb els sis pilars del marc Well-Architected i pressupostada fins al cèntim per comanda. Els cinc problemes que van obrir el curs estan resolts i cadascun té un número al costat.
Però el que t'endús no són els serveis. Els serveis canvien: la meitat de les pantalles d'aquest curs seran diferents d'aquí a tres anys i hi haurà noms nous que avui no existeixen. El que no canvia és el mètode, i això és el que has practicat onze mòduls seguits: començar pel problema i no per la tecnologia; triar el motor de dades pel seu patró d'accés; mesurar abans d'optimitzar i optimitzar abans de comprometre; provar la recuperació en lloc de suposar-la; automatitzar el que es fa dues vegades; escriure les decisions amb les seves alternatives descartades; i posar un número al costat de cada afirmació.
I amb aquest mètode ve la seva part menys vistosa i més valuosa: la capacitat de dir que no. Aquest curs va descartar Shield Advanced amb criteri, va descartar EKS amb sis condicions escrites que el canviarien, va descartar Elastic Beanstalk, va descartar una segona regió activa, va descartar Personalize fins a tenir una mètrica d'èxit i va descartar un compromís a tres anys que hauria condicionat l'arquitectura. Cap d'aquestes decisions no surt en un diagrama i totes elles són la feina real d'un arquitecte. Se't reconeixerà abans pel que deixis fora amb arguments que pel que aconsegueixis encabir.
Queda un últim consell, i és l'únic que de debò importa a partir d'aquí: munta't alguna cosa teva. No un altre laboratori guiat, ni un altre tutorial. Alguna cosa petita i real, que resolgui un problema que t'importi: el web d'un club, un servei per automatitzar alguna cosa tediosa, un tauler amb dades que t'interessin. Posa-ho en un compte propi amb MFA i un pressupost de cinc dòlars. Trenca-ho. Arregla-ho a les onze de la nit. Descobreix per tu mateix que les còpies no funcionaven, que aquell grup de seguretat estava obert i que l'endpoint que vas deixar encès t'ha costat catorze dòlars. Aquell dia hauràs après més que en qualsevol mòdul d'aquest curs, perquè l'error propi es recorda i l'aliè s'oblida.
MercadoFresco, mentrestant, continua repartint producte fresc en vint-i-quatre hores. Els divendres a la tarda, quan entren nou-centes comandes per hora, les tasques ja són amunt des de les 16:45 perquè algú va programar aquest escalat. Ningú no se n'assabenta. I aquest és exactament el senyal que la feina està ben feta: la millor arquitectura és la que ningú no nota.
Gràcies per arribar fins aquí. Ara esborra els recursos i ves a construir alguna cosa.
Curs d'AWS
Mòdul 1: Introducció a AWS
- Què és AWS?
- Configuració del teu compte d'AWS
- Infraestructura global d'AWS
- Consola d'administració d'AWS
- AWS CLI i SDK
Mòdul 2: Serveis principals d'AWS
Mòdul 3: Xarxes i lliurament de contingut
- Amazon VPC
- Grups de seguretat i llistes de control d'accés
- Elastic Load Balancing
- Amazon CloudFront
- Route 53
Mòdul 4: Seguretat i identitat
- AWS Identity and Access Management (IAM)
- AWS Key Management Service (KMS)
- Secrets Manager i Parameter Store
- AWS Shield
- AWS WAF
Mòdul 5: Monitoratge i gestió
- Amazon CloudWatch
- AWS X-Ray i traçabilitat distribuïda
- AWS CloudTrail
- AWS Config
- AWS Trusted Advisor
Mòdul 6: Bases de dades
- Com triar la base de dades adequada
- Amazon DynamoDB
- Amazon Aurora
- Amazon Redshift
- Amazon ElastiCache
Mòdul 7: Integració d'aplicacions
- Amazon SQS
- Amazon SNS
- Amazon EventBridge
- AWS Step Functions
- Patrons d'integració: idempotència, reintents i cues de missatges fallits
