lección 7
Día 5 -- Post-mortem profesional y demo a stakeholders
Escribes el post-mortem blameless, presentas a Clara los resultados de la semana y el incidente se convierte en argumento para más presupuesto.
⏱ 40 min
### Viernes, 10:00 AM -- Post-mortem blameless
Alberto convoca al equipo en la sala Turing. La regla del post-mortem es clara y la repite antes de empezar: "No buscamos culpables. Buscamos causas raíz y mejoras al sistema. Si alguien tiene miedo de hablar, el proceso ha fallado." Paula, Miguel, Sara y tú estáis presentes.
El formato es estándar en la industria (Google SRE Book, capítulo 15): timeline, impacto, causa raíz, mitigación, acciones con responsable y deadline. Lo escribes en un Google Doc compartido mientras habláis:
1# Post-Mortem: OOM en neobank-txn-streaming-v22## Metadata3- Fecha: 2024-03-154- Severidad: P1 (producción degradada)5- Duración: 47 minutos (03:12 - 03:59)6- Redactado por: [Data Engineer]7- Revisado por: Alberto Reyes, Paula García89## Resumen ejecutivo10El pipeline de streaming de transacciones sufrió un OOM por data skew11causado por un bug en el TPV de MERCH-48291 (2.8M micro-transacciones12de 0.01 EUR en 6 minutos). El servicio se restauró en 47 minutos con13un hotfix de filtro + cuarentena. Zero data loss. Impacto limitado a14features de fraude stale durante el downtime.1516## Timeline1702:47 Inicio del batch anómalo (MERCH-48291 genera 2.8M txns)1802:53 Executor 3: 14.2GB RAM (límite: 15GB)1903:01 GC pauses >30s, heartbeat timeout2003:08 Executor 3 OOM killed por Spark driver2103:09 Executor 1 OOM al recibir tasks redistribuidas (cascada)2203:12 Job falla completamente. PagerDuty alerta2303:14 Paula en #incidents, confirma solo streaming afectado2403:16 DE conectado, abre Spark UI + CloudWatch2503:35 Causa raíz identificada: data skew por bug TPV2603:45 Decisión: hotfix con filtro + cuarentena2703:49 PR abierto con 5 líneas de cambio2803:52 Paula aprueba code review de emergencia2903:55 Deploy ejecutado via GitHub Actions3003:57 Consumer lag bajando: 200K -> 100K -> 50K3103:59 Lag en 0. Servicio restaurado completamente3233## Impacto34- Features de fraude stale: 47 minutos (SLA: 5 min) -- **BREACH**35- Transacciones en cola: ~200K (procesadas en 4 min post-recovery)36- Transacciones perdidas: **0** (Kafka retiene 7 días)37- Impacto en clientes finales: **NINGUNO** (modelo usó features cached)38- Impacto financiero directo: 0 EUR39- Impacto financiero potencial: si hubiera habido fraude durante40 esos 47 min sin features frescas, pérdida estimada ~3.400 EUR41 (11 fraudes/hora * 0.78 horas * 3.200 EUR/fraude medio * 0.12 prob)4243## Causa raíz44Bug en el terminal punto de venta (TPV) de MERCH-48291 que genera45un bucle de retry infinito. Cada retry crea una transacción real de460.01 EUR en el core bancario (que propaga al topic Kafka). El pipeline47de streaming agrupa por account_id en el cálculo de features. Las 2.8M48transacciones de múltiples clientes en ese merchant generan un skew49de ~280x en la partición del executor asignado, causando OOM.5051## Factores contribuyentes521. El pipeline no tenía protección contra data skew532. No existía alerta de volumen anómalo por merchant543. El threshold de memoria de executor (15GB) era ajustado554. No había circuit breaker para merchants con volumen explosivo5657## Mitigación aplicada (hotfix)58- Filtrar MERCH-48291 del stream principal59- Escribir sus transacciones a cuarentena en S3 (no perder datos)60- Config externalizada en SSM (no requiere redeploy para futuros)6162## Acciones correctivas63Cada acción tiene responsable, deadline y prioridad (P1 = urgente).64Ver la tabla siguiente.
Post-mortem (parte 1): resumen, timeline, impacto, causa raíz y mitigación
1## Lecciones aprendidas21. El pipeline no estaba diseñado para skew -- diseñar para skew SIEMPRE32. Sin alertas preventivas, el primer síntoma fue el OOM (demasiado tarde)43. El patrón hotfix + cuarentena funciónó bien -- estandarizar como playbook54. Kafka retention = safety net -- zero data loss incluso con 47 min down65. El equipo respondió en <5 min -- la cultura de on-call funciona76. El incidente justifica inversión en monitoring end-to-end (argumento para Clara)89## ¿Qué salió bien?10- Detección rápida (PagerDuty en <1 min del fallo)11- Comunicación clara entre Paula y DE en #incidents12- Diagnóstico en 20 minutos (a las 3AM, sin cafeína)13- Hotfix limpio y con PR (no "commit directo a main")14- Zero impacto en clientes finales
Post-mortem (parte 2): lecciones aprendidas y qué salió bien
### La demo de sprint -- viernes 15:00
Clara, Alberto, Sara y Miguel están en la sala. Tienes 20 minutos. Presentas los 4 logros de la semana: ADR aprobado, GDPR diseñado, Feature Store implementado, e incidente resuelto. El incidente no lo escondes -- lo presentas como evidencia de que el sistema necesita inversión.
1Clara Mendoza (después de tu presentación):2"Buen trabajó para una primera semana. El incidente me preocupa3menos por lo que pasó y más por lo que REVELA: no tenemos4alerting preventivo. Quiero una propuesta la semana que viene:5monitoring end-to-end con consumer lag, memoria, latencia por6micro-batch, y alertas de volumen anómalo.78Eso es lo que diferencia un prototipo de un sistema de9producción en un banco. Los prototipos se caen. Los sistemas10de producción SE ANTICIPAN a las caídas."1112Alberto Reyes (en privado después):13"El incidente de hoy es lo mejor que nos podía pasar. Suena14contradictorio, pero ahora tenemos un caso REAL para pedir15presupuesto. Antes era una petición teórica -- ahora es una16necesidad demostrada con 47 minutos de downtime documentados.17Usa el post-mortem en la próxima reunión de presupuesto."
Feedback de Clara y consejo de Alberto post-demo
Los incidentes bien gestionados son una herramienta de negocio poderosa. Un post-mortem con datos concretos (47 min downtime, 200K txns retrasadas, coste potencial de 3.400 EUR) justifica presupuesto mejor que cualquier presentación de PowerPoint. La clave es no esconder los problemas sino presentarlos como "el equipo funcionando correctamente ante una situación anómala".
En una demo de sprint NUNCA presentes solo éxitos. Mostrar problemas pendientes y riesgos genera más confianza que una presentación perfecta. Los VPs saben que la realidad es compleja -- si todo parece "perfecto", sospechan que estás ocultando problemas. La transparencia es tu mejor aliada.
## ejercicios
Generar post-mortem estructurado
Implementa un generador de post-mortem que válida completitud (timeline, impacto, acciones con responsable) y calcula métricas del incidente automáticamente.
Priorizar acciones post-incidente
Dado el feedback de Sara, Miguel y Clara más las acciones del post-mortem, genera una lista priorizada para la semana siguiente con dependencias y esfuerzo estimado.
Regístrate para guardar tu progreso.
## comentarios
Reporta erratas, ayuda a otros o comparte tu opinión. Sé constructivo.
Inicia sesión para comentar y responder.
cargando comentarios...