Módulo 10 · Observabilidad y depuración

Lección 47 — Depurar en producción

Reproducir fallos y escribir postmortems sin señalar culpables.

Publicada
En esta lección
  1. Ejercicio 1 — El protocolo en frío
  2. Ejercicio 2 — El incidente del curso
  3. Ejercicio 3 — La reproducción
  4. Ejercicio 4 — El postmortem
  5. Ejercicio 5 — El on-call sostenible
  6. Entrega

El incidente simulado, de la alerta al postmortem. Sin solutions.md hasta entregar.

Ejercicio 1 — El protocolo en frío

  1. Escribe el protocolo de 5 pasos (§1) como checklist imprimible del on-call (el fichero docs/oncall.md): con los comandos de cada paso (dash, trace, log, diff, rollback/flag).
  2. El simulacro de confirmación: genera un síntoma falso (un spike de CPU sin impacto en usuarios: un job del 31 pesado). Con tu checklist: ¿el paso 1 (¿es real?) te salva del page innecesario? Documenta el criterio que distingue síntoma real de ruido.
  3. La acotación: para el incidente real del §2, escribe las 5 preguntas del paso 2 (¿quiénes? ¿dónde? ¿desde cuándo? ¿qué cambió? ¿cuánto impacto?) con la respuesta de cada una usando las herramientas del 45/46.

Ejercicio 2 — El incidente del curso

  1. Reproduce el incidente del §2 en staging: el prefetch con rate limit, el p95 a 2.8 s, y la cronología completa (dash con anotación de deploy → trace con el span nuevo → log con los WARNING → git diff → flag).
  2. La mitigación quirúrgica vs el martillo: mide el tiempo de cada mitigación: (a) el flag (¿cuánto en aplicar y volver al p95 base?); (b) el rollback completo (41: ¿cuánto? ¿qué se pierde con el rollback — las otras features del deploy?); (c) scale-out (55: ¿ayuda a este incidente o disfraza?). Documenta la decisión.
  3. El finding de la ironía: la PR era una "optimización". Escribe el guard que evita el regreso: ¿qué revisión del 50 habría cazado el prefetch bajo rate limit? ¿Qué test del 36 lo habría medido?

Ejercicio 3 — La reproducción

  1. Captura el estado del incidente: la query del prefetch, el patrón de rate limit, y el dataset anonimizado (la 23: los identificadores y el patrón, sin PII). Pega el dataset de reproducción.
  2. El test de reproducción: con las herramientas del 34 (integración) o del 36 (carga): el test que FALLA con la firma del incidente. Pégalo rojo.
  3. El fix con su regresión: aplica el fix correcto (¿el caché del 38 con TTL y single-flight? ¿el prefetch async? decide) y verifica: test verde + la meseta del 36 en verde. El test de regresión entra a la suite con el nombre que lo documenta.

Ejercicio 4 — El postmortem

  1. Escribe el postmortem completo del incidente (§4) con la plantilla: timeline UTC, impacto (¿cuántos usuarios, cuánto SLO del budget?), causas raíz + contribuyentes, acciones con dueño y fecha.
  2. El test blameless: revisa tu postmortem: ¿aparece algún nombre/rol humano como causa? Reescríbelo en términos del sistema. ¿La diferencia en el tono del documento?
  3. Las acciones que se cierran: marca las 4 acciones del §4 como issues reales (o su equivalente). La regla: una acción sin issue con dueño y fecha es un deseo. ¿Cuál de las 4 es P1 y por qué?

Ejercicio 5 — El on-call sostenible

  1. El game day completo del 46 (el Redis apagado) llevado a postmortem: escribe el documento con la cronología real del ejercicio, y las acciones que surgieron (¿la alerta del outbox que faltó? el runbook del heartbeat).
  2. La métrica de madurez: lista los incidentes del curso (el del §2, el game day, los hallazgos del 42-46) con su MTTR estimado: ¿la tendencia? ¿Qué inversión de las de este módulo (45/46) la explica?
  3. El documento final docs/oncall.md: el protocolo, las 5 alertas page con su runbook, el checklist del postmortem, y las reglas del on-call de 1 (MOC, blackout, recuperación). Máximo 2 páginas: el manual que el tú de las 3 a.m. sigue sin pensar.

Entrega

Pega el oncall.md, la cronología del incidente con la mitigación elegida, el test de reproducción y el postmortem blameless. Después: Lección 48 — Documentación y ADRs (módulo 11).