Ir al contenido
use-cases / replay-this-mornings-incident / hero
PIPE · REPLAY DE INCIDENTE

Reproduce el incidente de esta mañana para todo el equipo

Son las 14:00. Se está haciendo el post-mortem del incidente de las 7:00. Seis ingenieros quieren recorrer la secuencia exacta de logs que vio el SRE de guardia en su momento. Transmites el snapshot a través de una URL de Hoody Pipe con ?n=8. Todo el mundo ve la cascada dispararse en su propio terminal en el mismo instante — sin capturas, sin hacer scroll desincronizados, sin grabación de Zoom.

Leer la API de pipe
use-cases / replay-this-mornings-incident / mechanism

Un snapshot. Un pipe. Seis terminales al unísono.

Coge el archivo de logs del momento del incidente desde tu snapshot de hoody-files. Transmítelo a través de una ruta de Hoody Pipe con ?n=8. Ocho ingenieros hacen curl a la misma ruta. El pipe espera hasta que todos estén conectados, y entonces los bytes pasan una sola vez al ritmo que tú marques — cada lector ve la misma línea en el mismo instante.

post-mortem.host · emisor
PUT · replay
# The 7am incident is captured in incident-2026-05-04.log
# (snapshotted from /var/log/app at 07:25 by the on-call SRE).
# Replay it through a pipe path with ?n=8 — the server waits
# until eight readers connect, then the bytes move through once.
# pv -L 50k rate-limits the replay to a readable 50KB/s.

cat incident-2026-05-04.log \
  | pv -L 50k \
  | curl -T - \
      "https://prod-pipe.containers.hoody.com/api/v1/pipe/replay?n=8"

# [INFO] Waiting for 8 receiver(s) to connect...
# [INFO] Streaming to 8 receiver(s) at 50.0 KB/s
los 8 lectores conectados · el pipe no retiene nada · los bytes pasan una sola vez
alex / ben / chen / dani / ev / fox / dos más · lectores
GET · al unísono
# Each engineer in the post-mortem call runs the same line.
# They block until everyone has joined, then the cascade scrolls
# past their terminal at the exact rate the SRE saw at 07:23.

curl "https://prod-pipe.containers.hoody.com/api/v1/pipe/replay?n=8"

# 07:23:14 INFO POST /v1/checkout u_28f
# 07:23:15 WARN stripe latency 2.4s
# 07:23:16 ERR  500 stripe timeout
# 07:23:17 ···  auto-rollback armed
# ...the whole cascade, in order, on every terminal at once.

Dos piezas de la API documentada de Pipe: PUT /api/v1/pipe/[path] en el emisor, GET /api/v1/pipe/[path] en cada lector, ambos referenciados por el mismo n. El servidor reenvía el Content-Type del emisor, mantiene la conexión hasta un TTL de 5 minutos mientras espera lectores, y aplica backpressure si algún lector va lento. La velocidad de replay la define el emisor por completo — pv, dd, o cualquier limitador de tasa de tu confianza.

use-cases / replay-this-mornings-incident / powers

Lo que ver juntos consigue y un documento no

Un stream que va pasando cambia la conversación. La gente deja de discutir qué pasó y empieza a ver qué pasó. Tres propiedades del pipe hacen esto posible.

MULTIPLAYER POR DEFECTO

Seis terminales sobre el mismo playhead

n=N está documentado en la API de Pipe: cada lector que se une a la misma ruta con el mismo n recibe una copia idéntica fan-out. Ocho ingenieros ven la misma línea pasar en el mismo instante — nadie va por delante, nadie está achicando los ojos en la pantalla compartida de otro.

LIMITADO POR EL EMISOR

Replay lento suficiente para leerse

Los logs reales de prod corren más rápido de lo que un humano puede absorber. pv -L 50k limita el replay a un ritmo legible; el pipe lleva la velocidad que elija el emisor. Puedes pausar el post-mortem haciendo ctrl-Z al emisor y reanudarlo con fg — el terminal de cada lector se pausa contigo.

EFÍMERO POR DEFECTO

Termina el replay, desaparece el pipe

El pipe almacena cero bytes. Cuando el cat termina o el SRE hace ctrl-C al emisor, la ruta se cierra — sin endpoint residual expuesto a internet, sin transcripción que gestionar en retención. Vuelve a ejecutarlo desde el snapshot para quien se haya unido tarde a la llamada.

use-cases / replay-this-mornings-incident / session

Cómo se desarrolla una sesión de replay

Cuatro tiempos desde el log del momento del incidente hasta una reproducción compartida del post-mortem. Nada de aquí es infraestructura a medida — el snapshot vive en hoody-files, el replay viaja por una sola URL de Pipe.

  1. 0107:25

    Snapshot de los logs

    El SRE de guardia copia /var/log/app a las 07:25 a un bucket de hoody-files. El archivo es la fuente de verdad para todo lo que pasó en la ventana de la cascada.

  2. 0213:55

    Abrir la sala de reunión

    El lead escribe una URL de Hoody Pipe con ?n=8 (seis ingenieros + dos huecos para rezagados) y la pega en el canal del post-mortem. Los receptores pueden conectar primero — el pipe mantiene la plaza hasta 5 minutos.

  3. 0314:00

    Pulsar play

    El SRE vuelca el snapshot a través de pv -L 50k a la URL. El servidor espera a que ocho curls estén conectados, luego los bytes pasan una sola vez al unísono — la cascada se dispara en seis terminales en el mismo instante.

  4. 0414:18

    Replay para los rezagados

    El director llega tarde. Vuelve a ejecutar la misma línea. El pipe es una ruta, no un lugar — no hay nada que rebobinar, nada que buscar, nada almacenado en el servidor. Simplemente vuelve a darle al play.

use-cases / replay-this-mornings-incident / capacity

¿Cuán grande puede ser la sala?

Según la spec documentada de la API de Pipe. Límites y comportamientos que convierten una sola URL en un teatro de post-mortem.

  1. LECTORES POR RUTA256

    Tope documentado de n. Tu reunión de post-mortem no se quedará sin asientos — el pipe escala a una organización entera.

  2. BYTES ALMACENADOS0

    El pipe transmite directo de extremo a extremo. El replay no deja rastro en el servidor cuando el emisor se desconecta.

  3. VENTANA DE UNIÓN5 min

    Los receptores pueden conectar antes que el emisor; el pipe mantiene la plaza hasta 5 minutos para los que llegan tarde.

Fuente: Hoody Pipe API — límites documentados para /api/v1/pipe/[path], parámetro n (1–256), y TTL de pipe sin establecer.

use-cases / replay-this-mornings-incident / punchline

El post-mortem no es un documento. Es un stream que todo el mundo ve junto.

sin scroll desincronizado · sin entrecerrar los ojos en la pantalla compartidauna URL · ocho curls · un playhead
POST-MORTEMayerhoy
  • ARTEFACTODocumento de Confluence con capturashttps://prod-pipe.../pipe/replay
  • SINCRONÍAtodos hacen scroll a su propio ritmoreproducción al unísono para n=8
  • RETENCIÓNel PDF perdura añosctrl-C y el pipe se acabó
  • REPLAYagendar un segundo Zoomreejecutar el mismo curl
Leer la API de pipe
use-cases / replay-this-mornings-incident / replaces

Lo que esto reemplaza

El conjunto de herramientas y rituales que invocas hoy para guiar a un equipo por el timeline de un incidente. Cada uno almacena algo, cobra por asiento, o pierde el timing. El pipe es una sola URL con un playhead compartido.

  • Documento de post-mortem en ConfluencePágina estática con capturas obsoletas
  • Informe de incidente en NotionLista de bullets, sin sincronía temporal
  • Pegar capturas en SlackPierde el orden y el timing de la cascada
  • Sesiones manuales de replay-the-logsUna persona hace scroll, los demás entrecierran los ojos
  • Timeline de Zoom grabadoCada uno hace scrub a su propio ritmo
  • Anotaciones de Datadog notebookLicencia por asiento, sin playhead compartido
use-cases / replay-this-mornings-incident / cta

La cascada se dispara en seis terminales a la vez. La conversación cambia. La gente deja de discutir qué pasó y empieza a ver qué pasó.

Leer la API de pipe
use-cases / replay-this-mornings-incident / related

Lee los otros