El módulo anterior terminó con la arquitectura de MercadoFresco completa: elástica, segura, observable, desplegable desde un pipeline, descrita en código y repartida en cinco cuentas de trabajo. Y con una pregunta incómoda esperando al lunes por la mañana. Antes de responder cuánto cuesta, conviene responder algo previo: ¿está bien construida? No «¿funciona?» —funciona— sino «¿resiste una auditoría honesta?».
Esta lección presenta el método que AWS publica para hacer esa auditoría: el Well-Architected Framework. Verás qué es y qué no es, los seis pilares con sus principios de diseño y sus preguntas clave, la revisión real de MercadoFresco pilar por pilar con sus hallazgos y su riesgo, los compromisos entre pilares que nadie puede evitar, la Well-Architected Tool para llevar la revisión con método, y la conversación que casi nunca se tiene por escrito: RTO, RPO y las cuatro estrategias de recuperación ante desastres. Al final tendrás un plan de mejora priorizado, y el primer punto de ese plan es el que abre las cinco lecciones siguientes.
Aviso de coste. La AWS Well-Architected Tool es gratuita: no cobra por cargas de trabajo, revisiones, hitos ni lentes. Lo que cuesta dinero son las acciones que salen del plan de mejora —una réplica en otra región, un simulacro de carga, un plan de soporte superior— y eso es exactamente lo que esta lección te enseña a priorizar en vez de comprarlo todo. Datos, cuentas e identificadores ficticios.
Contenido
- Qué es el Well-Architected Framework y qué no es
- La anatomía del marco: pilares, preguntas, buenas prácticas y plan de mejora
- Pilar 1: excelencia operativa
- Pilar 2: seguridad
- Pilar 3: fiabilidad
- Pilar 4: eficiencia del rendimiento
- Pilar 5: optimización de costes
- Pilar 6: sostenibilidad
- Los compromisos entre pilares y cómo se documentan
- El registro de decisiones de arquitectura
- RTO, RPO y las cuatro estrategias de recuperación ante desastres
- La decisión de recuperación de MercadoFresco
- La AWS Well-Architected Tool: cargas de trabajo, hitos y lentes
- La rutina: quién revisa, cada cuánto y qué se hace con los hallazgos
- Revisión periódica frente a comprobación continua: Trusted Advisor y Config
- El plan de mejora priorizado de MercadoFresco
- Errores comunes y consejos
- Ejercicios
- Conclusión
Qué es el Well-Architected Framework y qué no es
El AWS Well-Architected Framework es un documento público —un conjunto de documentos, en realidad— que recoge lo que AWS ha aprendido revisando decenas de miles de arquitecturas de clientes. Su formato no es una lista de servicios recomendados, sino una colección de preguntas agrupadas en seis pilares, cada una con sus buenas prácticas asociadas.
La forma de las preguntas es siempre la misma: «¿Cómo hace usted X?». No «¿Usa usted el servicio Y?». Esa diferencia es toda la utilidad del marco:
- «¿Cómo protege los datos en reposo?» admite responder con KMS, con cifrado de cliente, o con una justificación de por qué esos datos no necesitan cifrado. Las tres son respuestas válidas si están razonadas.
- «¿Usa KMS?» solo admite sí o no, y convierte la arquitectura en una lista de la compra.
Conviene decir con claridad qué no es:
- No es una certificación. Nadie aprueba ni suspende. No hay un sello «Well-Architected» que colgar en la web.
- No es una lista de compras de servicios de AWS. Muchas de las mejores respuestas no cuestan dinero: escribir un procedimiento, hacer un simulacro, borrar un permiso.
- No es una auditoría de cumplimiento. No sustituye a un ENS, un ISO 27001 ni a la revisión de un profesional de protección de datos. Hay solape, pero el objetivo es distinto.
- No es un trabajo de una tarde ni de una sola vez. Una arquitectura que estaba bien hace un año puede no estarlo hoy: ha crecido, ha cambiado el negocio y han aparecido servicios nuevos.
- No exige arreglarlo todo. El resultado es una lista priorizada de riesgos aceptados conscientemente y riesgos que se van a mitigar. Aceptar un riesgo por escrito es una respuesta profesional; ignorarlo no.
Lo que sí es: una forma estructurada de encontrar lo que no sabías que te faltaba, y de convertirlo en una conversación con el negocio que no dependa de la intuición de quien habla más alto.
La anatomía del marco: pilares, preguntas, buenas prácticas y plan de mejora
La estructura es jerárquica y conviene tenerla clara antes de abrir la herramienta:
graph TD M["Well-Architected Framework"] --> P1["6 pilares"] P1 --> A["Cada pilar:<br/>principios de diseño"] P1 --> B["Cada pilar:<br/>áreas de mejora"] B --> Q["Preguntas<br/>'¿Cómo hace usted X?'"] Q --> BP["Buenas prácticas<br/>seleccionables"] BP --> R["Riesgo por pregunta:<br/>alto / medio / ninguno"] R --> PM["Plan de mejora<br/>priorizado"] PM --> HI["Hito (milestone)<br/>foto congelada"] HI --> PM
Los elementos:
| Elemento | Qué es | Ejemplo en MercadoFresco |
|---|---|---|
| Pilar | Una dimensión de calidad de la arquitectura | Fiabilidad |
| Principio de diseño | Una idea rectora del pilar | «Recupérate automáticamente del fallo» |
| Pregunta | La unidad de la revisión | «¿Cómo prueba la fiabilidad?» |
| Buena práctica | Una respuesta concreta que se marca o no | «Se realizan pruebas de carga periódicas» |
| Riesgo | Lo que la herramienta deduce de lo no marcado | Alto: no hay pruebas de carga |
| Elemento de mejora | La acción para bajar ese riesgo | «Prueba de carga del pico del viernes antes de diciembre» |
| Hito | Foto congelada de la revisión en una fecha | «Revisión inicial, agosto» |
| Lente | Conjunto extra de preguntas para un dominio | Lente de Serverless |
Los seis pilares —y su orden importa poco, porque no hay un pilar más importante que otro en abstracto, solo en tu contexto— son:
| Pilar | Pregunta de una frase |
|---|---|
| Excelencia operativa | ¿Sabes ejecutar, observar y mejorar la carga de trabajo día a día? |
| Seguridad | ¿Proteges datos, sistemas y activos, y sabes qué pasó cuando pasó? |
| Fiabilidad | ¿Se recupera sola de los fallos y cumple lo que promete? |
| Eficiencia del rendimiento | ¿Usas los recursos justos y los adecuados, y sigues haciéndolo cuando cambia la carga? |
| Optimización de costes | ¿Obtienes el máximo valor de negocio por cada dólar? |
| Sostenibilidad | ¿Minimizas el impacto ambiental de ejecutar la carga de trabajo? |
Un detalle práctico antes de empezar: la revisión se hace sobre una carga de trabajo concreta, no sobre «la empresa». MercadoFresco define una carga llamada mercadofresco-tienda-produccion, que abarca la tienda, el catálogo, los pedidos y el reparto en la cuenta 111122223333. La analítica de Sara será una segunda carga de trabajo con su propia revisión, porque tiene otros requisitos, otro riesgo y otro dueño.
Pilar 1: excelencia operativa
Trata de cómo se ejecuta y se mejora la carga de trabajo: procedimientos, observabilidad, respuesta a incidentes y aprendizaje.
Principios de diseño:
- Realizar las operaciones como código: si se hace dos veces a mano, se automatiza.
- Hacer cambios frecuentes, pequeños y reversibles.
- Refinar los procedimientos con frecuencia, no dejarlos fosilizados en un documento de hace dos años.
- Anticipar el fallo: ensayarlo antes de sufrirlo.
- Aprender de todos los fallos operativos con post mortem sin culpables.
- Usar la observabilidad para obtener conocimiento accionable, no gráficos bonitos.
Preguntas clave: cómo se determinan las prioridades; cómo se estructuran los equipos para respaldar el resultado de negocio; cómo se diseña la carga para poder entenderla en ejecución; cómo se reduce el riesgo de los cambios; cómo se sabe que está lista para producción; cómo se sabe que está sana; cómo se gestionan los eventos operativos; y cómo se evoluciona lo aprendido.
Revisión de MercadoFresco:
| Hallazgo | Estado | Riesgo | Acción propuesta |
|---|---|---|---|
Pipeline pipeline-mercadofresco-tienda con blue/green y reversión automática (08-05) |
Bien | — | Mantener |
| Métricas DORA medidas: 4,8 despliegues/semana, restauración en 4 min | Bien | — | Publicar en el panel de negocio |
Paneles mercadofresco-produccion y mercadofresco-negocio (05-01) |
Bien | — | Mantener |
Trazas con X-Ray y Container Insights (05-02, 10-01) |
Bien | — | Mantener |
| No hay guía de actuación (runbook) escrita para los incidentes más frecuentes | Falta | Alto | Escribir 5 runbooks: caída de AZ, cola atascada, Aurora en conmutación, pico imprevisto, despliegue fallido |
| No hay post mortem formal ni registro de incidentes | Falta | Medio | Plantilla de post mortem sin culpables y repositorio en mercadofresco-infra |
La rotación de guardia no está definida: los avisos de alertas-mercadofresco van a un correo compartido |
Falta | Alto | Definir turno y escalado; integrar con la herramienta de guardias |
| Hay 3 tareas manuales recurrentes (rotar un certificado, cargar precios, purgar caché) | Parcial | Medio | Automatizarlas con Systems Manager o EventBridge Scheduler |
Un detalle que suele pasar desapercibido: MercadoFresco tiene una observabilidad excelente y una operación floja. Sabe perfectamente qué está pasando y no ha escrito qué hacer cuando pasa. Es el patrón más habitual en equipos técnicos buenos.
Pilar 2: seguridad
Trata de proteger la información, los sistemas y los activos, con controles que detecten y respondan.
Principios de diseño:
- Base de identidad fuerte: mínimo privilegio, separación de funciones, nada de credenciales de larga duración.
- Trazabilidad: registrar, monitorizar y auditar todas las acciones.
- Aplicar seguridad en todas las capas, no solo en el perímetro.
- Automatizar las buenas prácticas de seguridad.
- Proteger los datos en tránsito y en reposo, y clasificarlos.
- Mantener a las personas lejos de los datos: si nadie necesita entrar, nadie entra.
- Prepararse para el incidente: tener plan, herramientas y ensayo.
Preguntas clave: cómo se gestiona la cuenta y las identidades; cómo se gestionan los permisos de personas y de máquinas; cómo se detectan eventos de seguridad; cómo se protegen las redes, el cómputo y los datos; y cómo se responde a un incidente.
Revisión de MercadoFresco:
| Hallazgo | Estado | Riesgo | Acción propuesta |
|---|---|---|---|
| IAM Identity Center, sin usuarios IAM de larga duración; MFA en la raíz (04-01, 09-04) | Bien | — | Mantener |
Cifrado en reposo con alias/mercadofresco-datos en Aurora, S3, DynamoDB y colas (04-02) |
Bien | — | Mantener |
Secretos en mercadofresco/produccion/rds/mfadmin con rotación automática (04-03) |
Bien | — | Mantener |
| WAF en CDN y ALB, Shield Standard, decisión documentada de no comprar Advanced (04-04, 04-05) | Bien | — | Revisar anualmente |
Cuenta de seguridad 444455556666 con trail de organización y Config agregado |
Bien | — | Mantener |
| No hay revisión periódica de permisos: nadie ha mirado los conjuntos de permisos desde que se crearon | Falta | Alto | Revisión trimestral con IAM Access Analyzer y el generador de políticas por actividad |
| No hay plan de respuesta a incidentes de seguridad ni cuenta de aislamiento probada | Parcial | Alto | Escribir el plan; ensayar el aislamiento de una cuenta en la OU Aislamiento |
| GuardDuty activo pero sus hallazgos no van a nadie | Parcial | Medio | Enrutar a alertas-mercadofresco con filtro de severidad ≥ 7 |
| No hay clasificación de datos escrita (qué es personal, qué es sensible, qué se puede exportar) | Falta | Medio | Inventario de datos y clasificación; revisión por el responsable de protección de datos |
| Las claves de acceso de dos integraciones externas no rotan | Falta | Medio | Migrar a roles con sts:AssumeRole y confianza entre cuentas |
Pilar 3: fiabilidad
Trata de que la carga haga lo que debe cuando debe, y se recupere de las interrupciones.
Principios de diseño:
- Recuperarse automáticamente del fallo, detectándolo con indicadores clave.
- Probar los procedimientos de recuperación, no solo escribirlos.
- Escalar horizontalmente para aumentar la disponibilidad agregada.
- Dejar de adivinar la capacidad.
- Gestionar el cambio mediante automatización.
Preguntas clave: cómo se gestionan las cuotas de servicio; cómo se diseña la topología de red; cómo se diseña la arquitectura de servicios para resistir el fallo de una dependencia; cómo se monitoriza; cómo se prueba la fiabilidad; y cómo se planifica la recuperación ante desastres.
Revisión de MercadoFresco:
| Hallazgo | Estado | Riesgo | Acción propuesta |
|---|---|---|---|
| Multi-AZ real: subredes en dos AZ, ALB, Aurora con escritor y 2 lectores, Fargate repartido | Bien | — | Mantener |
Colas SQS con reintentos, DLQ mercadofresco-pedidos-fallidos e idempotencia (07-05) |
Bien | — | Mantener |
| Autoescalado con seguimiento de destino y escalado programado del viernes (10-02) | Bien | — | Mantener |
Copias con PITR de Aurora y mercadofresco-copias-basedatos |
Bien | — | Ver siguiente fila |
| Nunca se ha probado una restauración completa desde cero | Falta | Alto | Simulacro trimestral de restauración con cronómetro |
| No hay RTO ni RPO declarados por el negocio | Falta | Alto | Acordar con el gerente y escribirlos; ver más abajo |
| No hay plan de recuperación ante desastres regional | Falta | Alto | Decidir estrategia (sección de recuperación) |
| Nunca se ha simulado el fallo de una AZ completa | Falta | Alto | Experimento con AWS Fault Injection Service en preproducción |
| No hay pruebas de carga que validen el pico del viernes: los 900 pedidos/hora son una previsión, no una medición | Falta | Alto | Prueba de carga a 1.400 pedidos/hora en preproducción antes de diciembre |
| Las cuotas de servicio no están monitorizadas más allá de dos alarmas (05-05) | Parcial | Medio | Ampliar a cuotas de Fargate, ENI, Lambda concurrente y conexiones de Aurora |
Este pilar es el peor parado de los seis, y no por casualidad: todo lo que falta son ensayos, y los ensayos son lo primero que se aplaza cuando hay que entregar funcionalidad.
Pilar 4: eficiencia del rendimiento
Trata de usar los recursos adecuados —no solo suficientes— y de seguir haciéndolo cuando el mundo cambia.
Principios de diseño:
- Democratizar las tecnologías avanzadas: consumirlas como servicio en lugar de operarlas.
- Llegar a escala global en minutos.
- Usar arquitecturas sin servidor donde encajen.
- Experimentar más a menudo, porque en la nube probar es barato.
- Tener afinidad mecánica: elegir la tecnología por cómo funciona por dentro, no por costumbre.
Preguntas clave: cómo se selecciona la arquitectura; cómo se seleccionan y usan los recursos de cómputo, almacenamiento, base de datos y red; y cómo se monitoriza el rendimiento para asegurar que sigue siendo el esperado.
Revisión de MercadoFresco:
| Hallazgo | Estado | Riesgo | Acción propuesta |
|---|---|---|---|
| Elección de motores por caso de uso, no por costumbre: Aurora, DynamoDB, Redshift, ElastiCache (06-01) | Bien | — | Mantener |
| CloudFront delante de las fotos: 350 ms → 25 ms (03-04) | Bien | — | Mantener |
| ElastiCache para la ficha de producto: 240 ms → 28 ms (06-05) | Bien | — | Mantener |
| Dimensionado de tareas por el percentil 95 de Container Insights (10-02) | Bien | — | Repetir trimestralmente |
| arm64 con Graviton en la tienda (10-02) | Bien | — | Extender a trabajadores y preproducción |
| No hay revisión periódica de dimensionado de Aurora ni de ElastiCache | Falta | Medio | Revisión trimestral con Compute Optimizer |
| No hay SLO declarados por recorrido de usuario; hay métricas pero no objetivos | Falta | Medio | Definir SLI/SLO: TiempoConfirmacionPedido p99 < 900 ms, disponibilidad 99,9 % |
| Las consultas de Sara a Redshift no tienen presupuesto de tiempo ni límite de concurrencia | Parcial | Bajo | Colas de gestión de carga de trabajo con límite |
Pilar 5: optimización de costes
Trata de obtener el máximo valor de negocio por dólar gastado. No es «gastar poco»: es «gastar bien y saberlo».
Principios de diseño:
- Implantar la gestión financiera de la nube (FinOps) como una capacidad, no como un susto anual.
- Adoptar un modelo de consumo: pagar por lo que se usa.
- Medir la eficiencia global: coste por unidad de negocio, no coste absoluto.
- Dejar de gastar en trabajo pesado indiferenciado: centros de datos, parcheo de anfitriones.
- Analizar y atribuir el gasto: que cada equipo vea el suyo.
Preguntas clave: cómo se implanta la gobernanza del gasto; cómo se monitoriza el uso y el coste; cómo se desmantela lo que ya no se usa; cómo se evalúan las opciones de compra y los tipos de recurso; cómo se planifica la demanda; y cómo se evalúan los cambios de coste a lo largo del tiempo.
Revisión de MercadoFresco:
| Hallazgo | Estado | Riesgo | Acción propuesta |
|---|---|---|---|
Etiquetas obligatorias definidas en el curso: Proyecto, Entorno, Componente, Propietario, CentroCoste |
Parcial | Alto | No están activadas como etiquetas de asignación de costes ni impuestas: lección 11-02 |
Presupuesto presupuesto-mensual-mercadofresco de 10 USD, creado en 01-02 |
Parcial | Alto | Está saltando desde el segundo mes y nadie lo mira: lección 11-04 |
| Serverless y Spot ya en uso (Lambda, Fargate Spot, Redshift Serverless) | Bien | — | Mantener |
| Nadie ha abierto Cost Explorer nunca | Falta | Alto | Lección 11-03 |
La cuenta de desarrollo 333344445555 no tiene límite de gasto |
Falta | Alto | Presupuesto con acción automática: lección 11-04 |
| No hay ningún compromiso de capacidad: todo se paga bajo demanda | Falta | Medio | Lección 11-05 |
| No hay métrica de coste unitario (coste por pedido) | Falta | Medio | Lección 11-02 |
| Nadie revisa la factura con periodicidad | Falta | Alto | Reunión mensual de coste: lección 11-04 |
Ocho hallazgos y cinco de riesgo alto. Es el pilar peor gobernado, con diferencia, y es coherente con la realidad: es el único que no da un error en producción cuando se ignora. Simplemente cobra.
Pilar 6: sostenibilidad
Es el pilar más reciente y el peor entendido. Trata del impacto ambiental de ejecutar la carga de trabajo: energía, hardware y recursos consumidos.
Principios de diseño:
- Entender el impacto y medirlo.
- Establecer objetivos de sostenibilidad por unidad de trabajo.
- Maximizar la utilización: un servidor al 10 % consume casi lo mismo que al 60 %.
- Adoptar hardware y software más eficientes en cuanto están disponibles.
- Usar servicios gestionados, que agregan la carga de muchos clientes.
- Reducir el impacto aguas abajo: menos datos transferidos, menos dispositivos de cliente forzados a trabajar.
Preguntas clave: cómo se seleccionan las regiones según el objetivo de sostenibilidad; cómo se alinean los patrones de software con la demanda; cómo se aprovechan los datos; cómo se gestionan el hardware y el ciclo de vida; y cómo se optimizan los procesos de desarrollo y despliegue.
Revisión de MercadoFresco:
| Hallazgo | Estado | Riesgo | Acción propuesta |
|---|---|---|---|
eu-west-1 (Irlanda) tiene alto porcentaje de energía renovable |
Bien | — | Documentar el criterio |
| arm64/Graviton: mejor rendimiento por vatio | Bien | — | Extender a todo |
| Fargate y Lambda: sin capacidad ociosa reservada | Bien | — | Mantener |
| Ciclo de vida en S3 hacia clases frías (02-03) | Parcial | Bajo | Aplicarlo también a mercadofresco-registros-web |
| Preproducción y desarrollo encendidos 24×7 sin que nadie los use por la noche | Falta | Medio | Apagado programado: es a la vez sostenibilidad y coste (11-03) |
| Registros retenidos indefinidamente en CloudWatch Logs | Falta | Medio | Retención por grupo de registros |
| Imágenes de ECR sin política de ciclo de vida: 400 imágenes acumuladas | Falta | Bajo | Política de retención |
Un apunte honesto: en el 90 % de los casos, las acciones del pilar de sostenibilidad coinciden exactamente con las del pilar de costes. Apagar lo que nadie usa ahorra dinero y energía. Es el pilar con la mejor relación entre esfuerzo y resultado, precisamente porque va de la mano del siguiente.
Los compromisos entre pilares y cómo se documentan
Aquí es donde el marco deja de ser una lista y empieza a ser ingeniería. Los seis pilares no se maximizan a la vez. Cada decisión sube uno y baja otro. Ejemplos reales de MercadoFresco:
| Decisión | Pilar que sube | Pilar que baja | Cuantificación |
|---|---|---|---|
| Aurora Multi-AZ con 2 lectores | Fiabilidad | Coste | El cómputo se multiplica por 3 frente a una sola instancia |
| 2 NAT Gateway, uno por AZ | Fiabilidad | Coste | +33 USD/mes por el segundo NAT en cada entorno |
| WAF con inspección de cuerpo en el ALB | Seguridad | Rendimiento, coste | +3 a 8 ms de latencia por petición; +26 USD/mes |
| Cifrado con KMS en todas las colas | Seguridad | Coste, rendimiento | Llamadas a KMS por lote; mitigado con KmsDataKeyReusePeriodSeconds |
| Blue/green con canario del 10 % | Fiabilidad, operación | Coste, velocidad | Capacidad duplicada durante el despliegue; 12 min extra por despliegue |
| Fargate Spot en los trabajadores | Coste, sostenibilidad | Fiabilidad | Interrupciones con 2 min de aviso; aceptable solo con reintento |
| Endpoints de VPC en lugar de NAT | Seguridad | Coste | 7 endpoints × 2 AZ salen más caros que el NAT (10-02) |
| Registros de 90 días en vez de indefinidos | Coste, sostenibilidad | Trazabilidad forense | Un incidente descubierto a los 4 meses no se puede investigar |
La lección no es «elige bien». Es más concreta: un compromiso solo es defendible si está escrito, cuantificado y firmado por quien asume el riesgo. Multi-AZ cuesta el doble; si el gerente entiende que ese doble compra no perder los pedidos de un viernes, la decisión es suya y está tomada. Si nadie se lo ha contado, la decisión no existe: solo hay una factura.
El registro de decisiones de arquitectura
La herramienta para no perder ese razonamiento se llama ADR (Architecture Decision Record, registro de decisiones de arquitectura): un fichero de texto corto, versionado junto al código, por cada decisión relevante. MercadoFresco los guarda en mercadofresco-infra bajo docs/adr/.
Formato mínimo, cuatro secciones:
# ADR-014: Aurora con escritor y dos lectores en dos zonas
- **Fecha:** 2026-03-12
- **Estado:** aceptada
- **Decisores:** Marta (responsable técnica), gerencia
## Contexto
Los viernes entre las 17:00 y las 21:00 llegan hasta 900 pedidos/hora. Con una sola
instancia de base de datos, una conmutación de 96 segundos durante esa ventana implica
perder del orden de 24 pedidos y, sobre todo, la confianza del cliente. El negocio
factura en esa ventana el 31 % del total semanal.
## Decisión
Aurora PostgreSQL con un escritor y dos lectores repartidos entre eu-west-1a y
eu-west-1b, con conmutación automática y punto de recuperación continuo.
## Consecuencias
- Positivas: conmutación por debajo de 30 s; las consultas de solo lectura del catálogo
y de los informes salen del escritor; ReplicaLag < 100 ms.
- Negativas: el coste del cluster pasa de 118 a 280 USD/mes (+137 %). Aceptado
explícitamente por gerencia el 2026-03-12 con el argumento de que un minuto de caída
un viernes cuesta más que la diferencia anual.
- Compromiso: pilar de fiabilidad por encima de pilar de coste, de forma consciente.
## Alternativas descartadas
- RDS Multi-AZ clásico: conmutación de 60-120 s, sin lectores utilizables. Descartada
por el tiempo de conmutación.
- Una sola instancia con copias: descartada, RPO inaceptable en la ventana del viernes.Tres reglas para que los ADR sirvan de algo:
- Un fichero por decisión, y no se edita: si la decisión cambia, se escribe un ADR nuevo que sustituye al anterior y se marca el viejo como
sustituida por ADR-027. El historial es el valor. - Se escriben cuando se decide, no cuando alguien pregunta seis meses después.
- Incluyen siempre las alternativas descartadas y por qué. Es la parte que más se agradece cuando el contexto cambia: permite saber si la razón para descartar sigue siendo válida.
RTO, RPO y las cuatro estrategias de recuperación ante desastres
De todos los hallazgos de la revisión, el que más incomoda a Marta es este: nadie ha declarado nunca cuánto puede estar caída la tienda ni cuántos datos se pueden perder. Sin esas dos cifras no se puede diseñar la recuperación, porque no hay forma de saber si lo que se tiene es suficiente.
Las dos definiciones, que se confunden constantemente:
- RTO (Recovery Time Objective): cuánto tiempo puede estar el servicio caído antes de que el daño sea inaceptable. Se mide desde que empieza la interrupción hasta que el servicio vuelve a funcionar. Es una decisión del negocio, no de tecnología.
- RPO (Recovery Point Objective): cuántos datos se pueden perder, medidos en tiempo. Un RPO de 15 minutos significa que, tras el desastre, se acepta haber perdido como máximo los últimos 15 minutos de transacciones.
timeline
title RTO y RPO alrededor del desastre
section Antes
Última copia consistente : RPO mide hacia atrás desde el desastre
section Desastre
Interrupción : Punto cero
section Después
Servicio restaurado : RTO mide hacia delante desde el desastre
Dicho de otro modo: el RPO mira hacia atrás (qué perdí) y el RTO mira hacia delante (cuánto tardo en volver). Y ambos cuestan dinero de forma creciente y no lineal: bajar el RTO de 8 horas a 4 es barato; bajarlo de 30 minutos a 1 minuto es carísimo.
Las cuatro estrategias canónicas, de menos a más coste:
| Estrategia | Qué hay en la región secundaria | RTO típico | RPO típico | Coste extra sobre la factura |
|---|---|---|---|---|
| Copia y restauración (backup & restore) | Solo datos: copias replicadas y plantillas de IaC | 8-24 h | 1-24 h | +2 a 4 % |
| Luz piloto (pilot light) | Datos replicados en continuo + núcleo mínimo apagado | 1-4 h | 5-15 min | +10 a 15 % |
| Espera templada (warm standby) | Copia funcional pero reducida, encendida y recibiendo réplica | 10-30 min | < 5 min | +30 a 40 % |
| Activo-activo (multi-site) | Copia completa sirviendo tráfico real | Segundos | Casi cero | +90 a 110 % |
Aplicado a la factura mensual consolidada de MercadoFresco, que es de 2.237,60 USD (la desglosaremos en 11-03), el coste de cada opción es:
| Estrategia | Coste extra estimado | Factura resultante | Qué habría que montar |
|---|---|---|---|
| Copia y restauración | ≈ 70 USD/mes | 2.308 USD | Copias de Aurora y S3 replicadas a eu-west-3; plantillas de 09-01 probadas |
| Luz piloto | ≈ 270 USD/mes | 2.508 USD | Lo anterior + réplica de Aurora en la otra región + imágenes de ECR replicadas |
| Espera templada | ≈ 780 USD/mes | 3.018 USD | Lo anterior + ALB y 2 tareas Fargate encendidas + Route 53 con comprobación de salud |
| Activo-activo | ≈ 2.200 USD/mes | 4.438 USD | Aurora Global Database con escritura en dos regiones o partición por país |
Nótese que estos números son de la región secundaria, y que a todos hay que sumarles el coste que nunca aparece en la tabla: el trabajo de mantener esa segunda región coherente con la primera. Una espera templada que lleva cuatro meses sin actualizarse no es una espera templada, es una falsa sensación de seguridad.
La decisión de recuperación de MercadoFresco
Marta lleva la conversación al gerente con dos preguntas concretas, no con una tabla de servicios:
- «Si la región de Irlanda entera se cae —cosa que ocurre muy rara vez pero ocurre—, ¿cuántas horas puede estar la tienda cerrada antes de que el daño sea grave?»
- «¿Cuántos minutos de pedidos podemos permitirnos perder?»
Las respuestas, después de discutirlas: 8 horas de RTO y 15 minutos de RPO para el sistema de pedidos. El razonamiento del gerente es defendible: MercadoFresco reparte producto fresco en 24 horas; una caída de 8 horas retrasa un día de reparto, molesta y cuesta, pero no cierra la empresa. Perder pedidos ya confirmados y cobrados, en cambio, sí es grave, porque implica cobrar sin servir.
Esas dos cifras eliminan solas dos de las cuatro estrategias:
- Activo-activo y espera templada están sobredimensionadas para un RTO de 8 horas. Pagar 780 o 2.200 USD al mes por bajar de 8 horas a 20 minutos no lo pide nadie.
- Copia y restauración encaja en el RTO (8-24 h está en el límite) pero falla en el RPO si las copias son diarias.
La decisión resultante es un híbrido razonado: copia y restauración reforzada.
| Elemento | Configuración | Cubre |
|---|---|---|
| Copias de Aurora | PITR continuo + copia diaria replicada a eu-west-3 con AWS Backup |
RPO de 5 min en la región; 24 h fuera de ella |
| Instantáneas replicadas | Copia entre regiones cada 6 h, cifrada con clave multirregión | RPO de 6 h en desastre regional |
| S3 | Replicación entre regiones de mercadofresco-catalogo-fotos y -copias-basedatos |
RPO de minutos |
| DynamoDB | Copias PITR; sin tabla global de momento | RPO de 5 min |
| Infraestructura | red-mercadofresco.yaml y aplicacion-mercadofresco.yaml parametrizados por región |
Reconstrucción en < 2 h |
| Imágenes | Replicación de mercadofresco/tienda a ECR en eu-west-3 |
Sin dependencia de la región caída |
| DNS | mercadofresco.example en Route 53, servicio global |
Cambio de destino en minutos |
Y aquí viene la parte que distingue un plan de un documento: el RPO real declarado es de 6 horas en caso de desastre regional, no de 15 minutos. Marta lo escribe así, con esas palabras, en el ADR-021, y lo lleva firmado. La opción de bajarlo a 15 minutos existe —replicación continua a la otra región— y cuesta unos 200 USD más al mes. Gerencia decide asumir el riesgo residual por ahora y revisarlo cuando abran fuera de España.
Tres compromisos adicionales que cierran el hallazgo:
- Simulacro semestral de restauración completa en
eu-west-3, con cronómetro y acta. Si el RTO medido supera las 8 horas, se replantea la estrategia. - Simulacro trimestral de fallo de AZ con AWS Fault Injection Service en preproducción, que es un riesgo mucho más probable que el regional.
- La primera prueba se hace antes de diciembre, porque hacerla en campaña de Navidad sería temerario.
La AWS Well-Architected Tool: cargas de trabajo, hitos y lentes
La Well-Architected Tool es un servicio gratuito de la consola que convierte el documento en un flujo de trabajo con estado. Los pasos:
1. Definir la carga de trabajo. Nombre, descripción, entorno (producción o preproducción), regiones, cuentas implicadas, sector y propietario. MercadoFresco define:
# Crear la carga de trabajo desde la CLI, en la cuenta de gestión 999988887777
aws wellarchitected create-workload \
--workload-name "mercadofresco-tienda-produccion" \
--description "Tienda online de producto fresco: catalogo, pedidos y reparto" \
--environment PRODUCTION \
--aws-regions eu-west-1 \
--account-ids 111122223333 555566667777 \
--review-owner "[email protected]" \
--industry-type Retail \
--lenses wellarchitected serverless \
--tags Proyecto=mercadofresco,Entorno=produccion,Propietario=martaComentario de las opciones que importan:
--environment PRODUCTIONcambia el peso de algunas recomendaciones: la herramienta es más exigente con una carga de producción.--account-idsincluye la cuenta de herramientas555566667777porque el pipeline forma parte de la carga de trabajo: no tiene sentido revisar la excelencia operativa ignorando quién despliega.--lensesaplica de entrada la lente base y la de serverless, porque MercadoFresco tiene Lambda y Fargate en el camino crítico.--tagsetiqueta la propia revisión, coherente con la convención del curso. Sí: hasta la revisión se etiqueta.
2. Responder el cuestionario. Por cada pregunta se marcan las buenas prácticas que realmente se cumplen y se puede añadir una nota. Hay dos trampas clásicas:
- Marcar por optimismo. «Sí, tenemos copias» no es lo mismo que «hemos restaurado una copia con éxito el mes pasado». Si no se ha probado, no está marcado.
- No usar las notas. La nota es donde se escribe «lo hacemos parcialmente: solo en producción». Sin ella, la revisión de dentro de seis meses no tiene contexto.
También existe la opción «esta pregunta no aplica», con su justificación. Usarla es legítimo: las preguntas sobre gestión de flota de instancias no aplican a una carga íntegramente sin servidor.
3. Obtener el plan de mejora. La herramienta calcula el riesgo por pregunta (alto, medio o ninguno) y genera una lista de elementos de mejora con enlaces a la documentación. La lista se puede exportar y —esto es lo importante— convertir en tareas del backlog con dueño y fecha. Un plan de mejora que vive dentro de la Well-Architected Tool y no en el tablero del equipo no se ejecuta jamás.
4. Crear un hito (milestone). Un hito congela el estado de las respuestas en una fecha:
aws wellarchitected create-milestone \
--workload-id 3f2a9c1b7d4e5f60a1b2c3d4e5f60718 \
--milestone-name "revision-inicial-2026-08"Seis meses después, tras una nueva revisión, la herramienta muestra la comparación entre hitos: cuántos riesgos altos había, cuántos hay, cuáles se resolvieron y cuáles aparecieron nuevos. Esa comparación es el único indicador honesto de si el equipo está mejorando o solo corriendo.
5. Aplicar lentes. Una lente añade preguntas específicas de un dominio, y cambia el listón. Las más útiles:
| Lente | Para qué | ¿Le sirve a MercadoFresco? |
|---|---|---|
| Serverless | Lambda, API Gateway, Step Functions, colas | Sí: 6 funciones Lambda y una máquina de estados en el camino del pedido |
| SaaS | Multi-inquilino, aislamiento por cliente, medición de uso | No hoy; sí el día que venda su plataforma a otros comercios |
| Data Analytics | Ingesta, lago de datos, almacén, gobierno del dato | Sí, para la segunda carga de trabajo: Redshift y los informes de Sara |
| Machine Learning / IA generativa | Ciclo de vida del modelo, sesgos, coste de inferencia | Todavía no; sí cuando lleguen las recomendaciones de producto |
| Financial Services / Healthcare | Requisitos regulatorios sectoriales | No aplica |
| IoT | Dispositivos, conectividad intermitente, gemelos | Posible en el futuro con los vehículos de reparto |
| Migration | Evaluación y ejecución de migraciones | Ya superada |
Un consejo sobre lentes: no aplicar más de dos. Cada lente añade decenas de preguntas y la revisión deja de terminarse. Es mejor una revisión completa con dos lentes que una revisión abandonada con seis.
6. Consultar los resultados por API, que es como se automatiza el seguimiento:
import boto3
wa = boto3.client("wellarchitected", region_name="eu-west-1")
ID_CARGA = "3f2a9c1b7d4e5f60a1b2c3d4e5f60718"
# Resumen de riesgos por pilar de la revision actual
resumen = wa.get_lens_review(workloadId=ID_CARGA, lensAlias="wellarchitected")
por_pilar = resumen["LensReview"]["PillarReviewSummaries"]
print(f"{'Pilar':<28} {'Alto':>5} {'Medio':>6} {'Sin riesgo':>11}")
for p in por_pilar:
c = p.get("RiskCounts", {})
print(f"{p['PillarName']:<28} {c.get('HIGH', 0):>5} "
f"{c.get('MEDIUM', 0):>6} {c.get('NONE', 0):>11}")
# Elementos de mejora de riesgo alto, que son los que van al backlog
mejoras = wa.list_lens_review_improvements(
workloadId=ID_CARGA, lensAlias="wellarchitected"
)
altos = [m for m in mejoras["ImprovementSummaries"] if m["Risk"] == "HIGH"]
print(f"\n{len(altos)} elementos de riesgo ALTO:")
for m in altos:
print(f" [{m['PillarId']}] {m['QuestionTitle']}")Qué hace este script, línea a línea:
get_lens_reviewdevuelve el estado de la revisión para una lente concreta;PillarReviewSummariestrae el recuento de riesgos por pilar, que es exactamente el resumen ejecutivo que pide gerencia.list_lens_review_improvementsdevuelve los elementos de mejora; se filtra porRisk == "HIGH"porque un plan con 60 puntos no se ejecuta y uno con 12 sí.- El resultado se puede volcar a un fichero, abrir incidencias automáticamente o publicarse como métrica en CloudWatch para verlo evolucionar. MercadoFresco hace lo tercero: una métrica
RiesgosAltosWAen el espacioMercadoFresco/Tienda, revisada en la reunión mensual.
La rutina: quién revisa, cada cuánto y qué se hace con los hallazgos
Una revisión Well-Architected que se hace una vez es un informe. La que se repite es un proceso. La rutina que instaura Marta:
| Elemento | Decisión de MercadoFresco |
|---|---|
| Quién convoca | Marta, responsable técnica y propietaria de la revisión |
| Quién participa | Luis (desarrollo), Sara (negocio y datos), y el gerente en la sesión final |
| Por qué participa negocio | Porque RTO, RPO, presupuesto y prioridad son decisiones de negocio, no técnicas |
| Cada cuánto | Revisión completa cada 6 meses; revisión de un solo pilar cada trimestre |
| Cuándo, además, fuera de calendario | Antes de un cambio grande (nueva región, nuevo país), después de un incidente grave, y antes de la campaña de Navidad |
| Duración | 2 sesiones de 2 horas; más de eso y la gente deja de pensar |
| Salida | Hito creado + entre 8 y 15 elementos de mejora con dueño y fecha en el tablero |
| Qué se hace con los riesgos que no se van a arreglar | Se aceptan por escrito, con firma de quien asume el riesgo y fecha de revisión |
| Indicador de que funciona | Número de riesgos altos comparado entre hitos consecutivos |
Dos reglas que evitan que el proceso muera:
- Ningún elemento de mejora sin dueño ni fecha. «Habría que hacer pruebas de carga» no es una tarea; «Luis ejecuta una prueba de carga a 1.400 pedidos/hora en preproducción antes del 30 de octubre» sí lo es.
- Máximo cinco mejoras en curso a la vez. Un plan de 40 acciones abiertas equivale a ninguna acción en curso.
Revisión periódica frente a comprobación continua: Trusted Advisor y Config
La revisión Well-Architected es periódica, profunda y humana. No sirve para detectar que alguien abrió un grupo de seguridad al mundo el martes por la tarde. Para eso están las herramientas que ya conoces del módulo 5, y conviene ver cómo encajan las tres:
| Herramienta | Naturaleza | Cadencia | Qué detecta | Qué no detecta |
|---|---|---|---|---|
| Well-Architected Tool (11-01) | Cuestionario humano | Semestral | Ausencias de procedimiento, riesgos de diseño, decisiones no tomadas | Cambios del día a día |
| Trusted Advisor (05-05) | Comprobaciones predefinidas | Continua (según plan de soporte) | Recursos huérfanos, cuotas, riesgos conocidos, ahorro evidente | Lo específico de tu arquitectura |
| AWS Config (05-04) | Reglas propias y gestionadas | Continua, ante cada cambio | Desviaciones de tus reglas: etiquetas, cifrado, puertos, versiones | Lo que no has escrito como regla |
La relación correcta es de realimentación en las dos direcciones:
graph LR WA["Revision Well-Architected<br/>semestral, humana"] -->|genera reglas nuevas| CFG["AWS Config<br/>grabador-mercadofresco"] CFG -->|desviaciones recurrentes| WA TA["Trusted Advisor<br/>continuo"] -->|hallazgos repetidos| WA WA -->|acciones puntuales| BL["Tablero del equipo"] CFG -->|remediacion automatica| FIX["Corregido sin intervencion"]
Un ejemplo concreto de MercadoFresco: la revisión descubre que no hay revisión periódica de permisos. La acción no es solo «revisar los permisos este trimestre», sino convertir el hallazgo en una comprobación continua: una regla de Config iam-user-unused-credentials-check y un informe mensual de IAM Access Analyzer. Así, el hallazgo no vuelve a aparecer en la revisión de dentro de seis meses.
La regla general: todo hallazgo que se pueda convertir en una comprobación automática, se convierte. La revisión humana debe reservarse para lo que ninguna herramienta puede evaluar: si el RTO es adecuado para el negocio, si el equipo sabe qué hacer a las 3 de la mañana, si la decisión de hace un año sigue siendo válida.
El plan de mejora priorizado de MercadoFresco
Sumando los seis pilares, la revisión inicial arroja este balance:
| Pilar | Riesgos altos | Riesgos medios | Comentario |
|---|---|---|---|
| Excelencia operativa | 2 | 2 | Observabilidad excelente, operación floja |
| Seguridad | 2 | 3 | Base sólida; falta rutina y respuesta a incidentes |
| Fiabilidad | 5 | 1 | El peor: todo lo que falta son ensayos |
| Eficiencia del rendimiento | 0 | 2 | El mejor pilar, con diferencia |
| Optimización de costes | 5 | 2 | Nadie lo ha mirado nunca |
| Sostenibilidad | 0 | 2 | Coincide casi por completo con costes |
| Total | 14 | 12 |
Catorce riesgos altos son demasiados para atacarlos a la vez, así que se priorizan cruzando impacto y esfuerzo:
| Prioridad | Acción | Pilar | Esfuerzo | Impacto |
|---|---|---|---|---|
| 1 | Activar etiquetas de asignación de costes e imponerlas | Coste | Bajo | Alto |
| 2 | Analizar la factura completa y ejecutar las optimizaciones evidentes | Coste | Bajo | Alto |
| 3 | Presupuestos por cuenta, con acción automática en desarrollo | Coste | Bajo | Alto |
| 4 | Prueba de carga del pico del viernes en preproducción | Fiabilidad | Medio | Alto |
| 5 | Runbooks de los 5 incidentes más probables + guardia definida | Operativa | Medio | Alto |
| 6 | Simulacro de restauración completa con cronómetro | Fiabilidad | Medio | Alto |
| 7 | Compromisos de capacidad tras optimizar | Coste | Bajo | Medio |
| 8 | Simulacro de fallo de AZ con Fault Injection Service | Fiabilidad | Alto | Medio |
| 9 | Revisión trimestral de permisos automatizada | Seguridad | Bajo | Medio |
| 10 | Plan de respuesta a incidentes de seguridad y prueba de aislamiento | Seguridad | Alto | Medio |
Por qué el pilar de costes va primero, aunque fiabilidad tenga los mismos riesgos altos y suene más importante. Tres razones concretas:
- Es el único pilar del que nadie tiene ni un dato. No se puede priorizar lo que no se mide, y las decisiones de fiabilidad que vienen después —¿pilot light o warm standby?— son decisiones de coste disfrazadas de decisiones técnicas.
- Las acciones son de esfuerzo bajo y efecto inmediato. Activar etiquetas, borrar huérfanos y apagar entornos por la noche son horas de trabajo, no semanas, y liberan presupuesto.
- El presupuesto liberado financia el resto del plan. El dinero que se deja de tirar en desarrollo por la noche es exactamente el que paga las copias entre regiones y las pruebas de carga.
Ese es el hilo de las cinco lecciones que quedan. 11-02 convierte la factura en algo legible mediante etiquetas y asignación. 11-03 la analiza con Cost Explorer y ejecuta las optimizaciones. 11-04 pone límites y avisos con Budgets. 11-05 compromete capacidad con Savings Plans y reservas. Y 11-06 cierra el curso con el proyecto integrador.
Errores Comunes y Consejos
Error: tratar la revisión como un examen que hay que aprobar. El equipo marca buenas prácticas que no cumple del todo para que el informe salga verde. Consejo: el informe no lo lee nadie de fuera. Lo único que se pierde marcando de más es la oportunidad de encontrar el problema antes de que lo encuentre un viernes a las 19:00.
Error: revisar «toda la empresa» como una sola carga de trabajo. Sale un cuestionario imposible de responder porque la respuesta correcta es «depende del sistema». Consejo: una carga de trabajo es un conjunto de componentes que entregan valor de negocio juntos y comparten dueño. MercadoFresco tiene dos: la tienda y la analítica.
Error: convertir el plan de mejora en un documento y cerrarlo. Seis meses después, la nueva revisión encuentra exactamente los mismos hallazgos. Consejo: los elementos de mejora salen de la herramienta el mismo día y entran en el tablero del equipo con dueño y fecha, o no existen.
Error: confundir «tenemos copias» con «sabemos restaurar». Es el hallazgo más repetido del pilar de fiabilidad en todo el sector. Consejo: una copia no probada es una hipótesis. Restaura una vez, con cronómetro y en un entorno limpio, y anota el tiempo real: casi siempre triplica al estimado.
Error: fijar el RTO y el RPO desde tecnología. El equipo técnico decide «pongamos 15 minutos» sin preguntar a nadie, y luego diseña una arquitectura que cuesta tres veces más de lo necesario. Consejo: RTO y RPO los declara el negocio respondiendo dos preguntas en lenguaje llano, y se escriben en un ADR firmado.
Error: comprar la estrategia de recuperación más cara «por si acaso». Un activo-activo sin necesidad duplica la factura y, peor, duplica el trabajo de mantenimiento; suele acabar desincronizado y dando una falsa seguridad. Consejo: empieza por la estrategia que cumple el RTO y el RPO declarados, y súbela cuando el negocio suba las exigencias, no antes.
Error: aplicar seis lentes a la vez. La revisión pasa de 60 preguntas a 300 y se abandona en la segunda sesión. Consejo: la lente base más una o dos específicas. Se pueden añadir más en la revisión siguiente.
Consejo: usa las notas de cada pregunta como memoria. «Cumplido solo en producción, pendiente en preproducción, ver ADR-018» convierte la siguiente revisión en media hora de trabajo en lugar de dos horas de arqueología.
Consejo: mide el proceso, no solo la arquitectura. El indicador útil no es «tenemos 14 riesgos altos», sino «teníamos 14 y ahora tenemos 6». Los hitos existen exactamente para eso.
Consejo: acepta riesgos por escrito y con fecha de caducidad. «Aceptamos un RPO regional de 6 h hasta la apertura en Portugal, revisión en marzo» es una decisión profesional. «Ya lo miraremos» no lo es.
Ejercicios
Ejercicio 1: revisión de un pilar y priorización
Una empresa ficticia, LibreríaAtlas, vende libros en línea con una arquitectura mucho más sencilla que la de MercadoFresco: dos instancias EC2 detrás de un ALB, una RDS MySQL de una sola AZ, S3 para las portadas, sin CDN, despliegues por SSH y copias diarias automáticas de RDS con 7 días de retención. Nunca han restaurado una copia. No tienen etiquetas. El equipo son dos personas.
- Escribe cinco hallazgos del pilar de fiabilidad con su riesgo (alto o medio).
- Indica cuál atacarías primero y por qué, sabiendo que el presupuesto es limitado.
- Propón un RTO y un RPO razonables y di qué estrategia de recuperación encajaría.
Ejercicio 2: documentar un compromiso entre pilares
MercadoFresco se plantea añadir inspección del cuerpo de las peticiones en el WAF del ALB para detectar intentos de inyección en el formulario de pedido. Medido en preproducción: añade entre 4 y 9 ms de latencia por petición y unos 12 USD al mes. La tienda tiene un objetivo de TiempoConfirmacionPedido p99 por debajo de 900 ms y actualmente está en 840 ms.
- Identifica qué pilares suben y cuáles bajan.
- Escribe el ADR completo con contexto, decisión, consecuencias y alternativas descartadas.
- Indica qué métrica vigilarías después de aplicarlo y qué haría que revirtieras la decisión.
Ejercicio 3: elegir estrategia de recuperación con números
El gerente de MercadoFresco cambia de opinión: tras leer una noticia sobre una caída regional de un competidor, pide RTO de 1 hora y RPO de 10 minutos.
- ¿Qué estrategias de la tabla siguen siendo válidas con esos objetivos?
- Calcula el impacto sobre la factura mensual de 2.237,60 USD de la opción más barata que los cumpla, en valor absoluto y en porcentaje.
- Prepara tres preguntas que le harías al gerente antes de aprobar el gasto.
Soluciones
Solución al ejercicio 1
(1) Cinco hallazgos de fiabilidad en LibreríaAtlas:
| Hallazgo | Riesgo | Razón |
|---|---|---|
| RDS MySQL en una sola AZ | Alto | El fallo de una zona tumba la base de datos entera, sin conmutación |
| Nunca se ha restaurado una copia | Alto | Las copias son una hipótesis no verificada; puede que ni siquiera sirvan |
| Despliegue por SSH, manual y sin reversión | Alto | Cambio no repetible, sin vuelta atrás; es la causa más frecuente de caída |
| No hay RTO ni RPO declarados | Alto | Sin ellos no se puede evaluar si las copias diarias son suficientes |
| No hay autoescalado ni prueba de capacidad: 2 instancias fijas | Medio | Una campaña o una reseña viral tumba el sitio; el impacto es puntual |
(2) Qué atacar primero: la restauración probada. No es la respuesta intuitiva —la intuición dice «Multi-AZ»— pero es la correcta con presupuesto limitado por tres razones: cuesta cero euros (solo tiempo), valida o invalida toda la estrategia de copias de golpe, y si resulta que las copias no sirven, cambia por completo la prioridad de todo lo demás. Multi-AZ es el segundo, y ya cuesta dinero: aproximadamente duplica el coste de la instancia RDS.
(3) RTO y RPO razonables. Una librería en línea no es un servicio crítico de vida: RTO de 4 horas y RPO de 24 horas son perfectamente defendibles si el negocio los acepta —con copias diarias, el RPO real ya es de 24 h—. Con esos objetivos, la estrategia adecuada es copia y restauración, reforzada con dos cosas baratas: replicar las instantáneas a otra región y tener la infraestructura descrita en CloudFormation para poder reconstruirla sin depender de la memoria de nadie. Si el negocio exigiera RPO de 1 hora, la respuesta no sería cambiar de estrategia sino activar copias más frecuentes o pasar a un motor con recuperación a un punto en el tiempo.
Solución al ejercicio 2
(1) Pilares afectados:
- Sube seguridad: protección adicional contra inyección en el punto exacto donde entran datos de usuario, en una capa distinta de la validación de la aplicación (defensa en profundidad).
- Baja eficiencia del rendimiento: entre 4 y 9 ms por petición. Con el p99 en 840 ms y el objetivo en 900, el margen restante pasa de 60 ms a unos 51 ms en el peor caso. Sigue cumpliendo, pero con menos holgura.
- Baja optimización de costes: 12 USD al mes, un 0,5 % de la factura. Marginal.
- Neutro para fiabilidad, con un matiz: una regla WAF mal ajustada que bloquee peticiones legítimas sí afecta a la fiabilidad percibida. Es el riesgo real de esta decisión, no la latencia.
(2) ADR:
# ADR-022: Inspeccion del cuerpo de las peticiones en waf-mercadofresco-alb
- **Fecha:** 2026-08-14
- **Estado:** aceptada
- **Decisores:** Marta, Luis
## Contexto
El formulario de pedido acepta texto libre en el campo de observaciones de entrega.
La validacion de la aplicacion cubre el caso conocido, pero no hay una segunda capa
independiente. El WAF actual solo inspecciona cabeceras y parametros de consulta.
Medido en preproduccion durante 5 dias: +4 a +9 ms por peticion, +12 USD/mes.
El p99 de TiempoConfirmacionPedido esta en 840 ms con un objetivo de 900 ms.
## Decision
Activar la inspeccion del cuerpo (hasta 8 KB) en waf-mercadofresco-alb, con el grupo
de reglas gestionado de inyeccion SQL y XSS, desplegado primero en modo conteo
durante 7 dias y despues en modo bloqueo.
## Consecuencias
- Positivas: defensa en profundidad en el punto de entrada de datos de usuario;
visibilidad de intentos reales en los registros del WAF.
- Negativas: margen del p99 reducido de 60 ms a ~51 ms; +12 USD/mes; riesgo de falsos
positivos que bloqueen pedidos legitimos con caracteres poco habituales.
- Mitigacion del riesgo principal: 7 dias en modo conteo antes de bloquear, y revision
de los aciertos con Luis antes del cambio a bloqueo.
## Alternativas descartadas
- Solo validacion en la aplicacion: descartada, no da defensa en profundidad ni
visibilidad de los intentos.
- Inspeccion tambien en waf-mercadofresco-cdn: descartada por ahora, duplica coste y
latencia sin aportar cobertura adicional para este formulario concreto.
- Limitar el campo a caracteres alfanumericos: descartada, degrada la experiencia
(direcciones con guiones, apostrofes y numeros de portal).(3) Qué vigilar y qué revertiría la decisión. Se vigilan tres cosas: el p99 de TiempoConfirmacionPedido en el panel mercadofresco-produccion, la tasa de peticiones bloqueadas por el WAF, y el número de pedidos confirmados por hora comparado con la semana anterior. La decisión se revierte si el p99 supera los 900 ms de forma sostenida, o si PedidosConfirmados cae de forma inexplicable, que sería la señal de falsos positivos bloqueando compras reales. La reversión es barata: volver la regla a modo conteo es un cambio de un campo.
Solución al ejercicio 3
(1) Estrategias válidas con RTO 1 h y RPO 10 min:
- Copia y restauración: no cumple. RTO típico de 8-24 h y, con copias entre regiones cada 6 h, un RPO de 6 h.
- Luz piloto: cumple justo. RTO de 1-4 h —hay que trabajar para quedarse en la banda baja— y RPO de 5-15 min con réplica continua de Aurora hacia la otra región.
- Espera templada: cumple con holgura (RTO 10-30 min).
- Activo-activo: cumple sobradamente y es innecesario para estos objetivos.
La respuesta honesta es que luz piloto cumple el RPO con seguridad y el RTO solo si se ensaya. Un RTO de 1 hora con luz piloto exige automatización total del arranque: nada de reconstruir a mano. Es la opción a proponer, con la condición explícita de un simulacro que lo demuestre.
(2) Impacto en la factura:
Factura actual 2.237,60 USD/mes Luz piloto (+12 %) + 268,51 USD/mes ------------------------------------------------------ Factura resultante 2.506,11 USD/mes Incremento anual +3.222 USD/año
Y hay un coste que no está en esa cifra y conviene poner encima de la mesa: el trabajo recurrente. Mantener la segunda región alineada, ejecutar el simulacro semestral y arreglar lo que el simulacro rompa son del orden de 6 a 10 días de trabajo al año, que a coste interno superan al coste de infraestructura.
(3) Tres preguntas para el gerente:
- «¿De dónde sale el requisito?» Si viene de una noticia sobre un competidor, quizá el riesgo real que preocupa no sea el regional —que es raro— sino uno mucho más probable: un despliegue malo, un borrado accidental o un ataque. Esos se mitigan con reversión automática, borrado con retención y WAF, que ya existen y cuestan mucho menos.
- «¿Cuánto factura MercadoFresco en 8 horas?» Es el número que convierte la conversación en una decisión de inversión. Si son 4.000 USD y la probabilidad de una caída regional es de una vez cada varios años, gastar 3.222 USD anuales tiene que discutirse con esos dos números delante.
- «¿Asumimos también el compromiso de ensayarlo dos veces al año?» Sin esa condición, la respuesta correcta es no montarlo: una luz piloto no probada da la misma disponibilidad que no tener nada, pero con factura.
Conclusión
MercadoFresco ya no tiene solo una arquitectura: tiene una auditoría de esa arquitectura, hecha con método y no con intuición.
Sabes qué es el Well-Architected Framework y, sobre todo, qué no es: no es una certificación, ni una lista de compras de servicios, ni una auditoría de cumplimiento. Es una colección de preguntas con la forma «¿cómo hace usted X?», agrupadas en seis pilares —excelencia operativa, seguridad, fiabilidad, eficiencia del rendimiento, optimización de costes y sostenibilidad—, cada una con buenas prácticas que se marcan solo cuando de verdad se cumplen. Y sabes que la unidad de la revisión es la carga de trabajo, no la empresa.
Tienes la revisión completa de MercadoFresco pilar por pilar, con 14 riesgos altos y 12 medios, y con un patrón que se repite en casi todos los equipos técnicos buenos: una observabilidad excelente junto a una operación sin runbooks, una arquitectura elástica que nunca se ha probado bajo carga, unas copias que nunca se han restaurado y un pilar de costes del que literalmente nadie tiene un dato. Con los hallazgos escritos como hallazgos —«no hay RTO declarado», «nunca se ha simulado el fallo de una AZ», «la cuenta de desarrollo no tiene límite de gasto», «nadie ha revisado los permisos desde que se crearon»— y con su riesgo y su acción al lado.
Tienes los compromisos entre pilares cuantificados en lugar de intuidos: Multi-AZ triplica el cómputo de Aurora, el WAF con inspección de cuerpo añade de 4 a 9 ms, Spot cambia coste por interrupciones, los endpoints de VPC compran seguridad y salen más caros que el NAT. Y la herramienta para que ese razonamiento sobreviva al paso del tiempo: el registro de decisiones de arquitectura, un fichero por decisión, versionado, que no se edita y que incluye siempre las alternativas descartadas y por qué.
Tienes RTO y RPO entendidos de verdad —uno mira hacia delante, el otro hacia atrás— y las cuatro estrategias de recuperación con su coste real sobre la factura: copia y restauración (+2-4 %), luz piloto (+10-15 %), espera templada (+30-40 %) y activo-activo (+90-110 %). Y la decisión de MercadoFresco, tomada por el negocio y no por el equipo técnico: RTO de 8 horas y RPO de 15 minutos, resueltos con copia y restauración reforzada, con el riesgo residual escrito sin adornos —el RPO regional real es de 6 horas— y con dos simulacros comprometidos en el calendario.
Y tienes la rutina: quién convoca, quién participa —incluido negocio, porque RTO, RPO y presupuesto no son decisiones técnicas—, cada cuánto, cuánto dura y qué sale de ella; los hitos para comparar la revisión de hoy con la de dentro de seis meses, que es el único indicador honesto de mejora; las lentes especializadas con el consejo de no aplicar más de dos; y el reparto de papeles entre la revisión semestral humana, las comprobaciones continuas de Config y los avisos de Trusted Advisor, con la regla que los une: todo hallazgo que se pueda convertir en comprobación automática, se convierte.
El resultado es un plan de mejora priorizado de diez acciones con dueño y fecha. Y su primer punto no es el más vistoso ni el más urgente en apariencia: es el pilar de optimización de costes, porque es el único del que no hay ni un dato, porque sus acciones son de esfuerzo bajo y efecto inmediato, y porque el presupuesto que libera es exactamente el que financia las pruebas de carga y las copias entre regiones del resto del plan.
Así que la pregunta del gerente sigue sobre la mesa, ahora con un método detrás para responderla. ¿Cuánto cuesta todo esto y está bien gastado? El problema es que hoy la respuesta sería una cifra única de una factura de una sola línea, y con eso no se puede decidir nada: no se sabe cuánto es producción y cuánto desarrollo, ni cuánto cuesta el catálogo frente a los pedidos, ni cuánto de esa cifra corresponde a Madrid y cuánto a Sevilla, ni qué parte se puede recortar sin que nadie lo note.
En 11-02, «Etiquetado y asignación de costes», se resuelve ese problema primero: las cinco etiquetas obligatorias del curso dejan de ser una convención escrita en un documento para convertirse en dimensiones activadas, impuestas por política y auditadas, capaces de responder por fin quién gasta qué. Sin ese paso, todo lo que viene después —analizar, presupuestar y comprometer— se hace a ciegas.
Curso de AWS
Módulo 1: Introducción a AWS
- ¿Qué es AWS?
- Configuración de tu cuenta de AWS
- Infraestructura global de AWS
- Consola de administración de AWS
- AWS CLI y SDKs
Módulo 2: Servicios principales de AWS
Módulo 3: Redes y entrega de contenido
- Amazon VPC
- Grupos de seguridad y listas de control de acceso
- Elastic Load Balancing
- Amazon CloudFront
- Route 53
Módulo 4: Seguridad e identidad
- AWS Identity and Access Management (IAM)
- AWS Key Management Service (KMS)
- Secrets Manager y Parameter Store
- AWS Shield
- AWS WAF
Módulo 5: Monitorización y gestión
- Amazon CloudWatch
- AWS X-Ray y trazabilidad distribuida
- AWS CloudTrail
- AWS Config
- AWS Trusted Advisor
Módulo 6: Bases de datos
- Cómo elegir la base de datos adecuada
- Amazon DynamoDB
- Amazon Aurora
- Amazon Redshift
- Amazon ElastiCache
Módulo 7: Integración de aplicaciones
- Amazon SQS
- Amazon SNS
- Amazon EventBridge
- AWS Step Functions
- Patrones de integración: idempotencia, reintentos y colas de mensajes fallidos
