Ir al contenido
use-cases / send-a-teammate-a-database-state / hero
PIPE · COMPARTIR STREAMS · POSTGRES

Envía a un compañero el estado de una base de datos en una línea

Un compañero da con un bug que no puedes reproducir. Sáltate el archivo. pg_dump en tu portátil fluye directo a su psql en staging — sin subida, sin enlace, sin descarga. El pipe encamina los bytes.

use-cases / send-a-teammate-a-database-state / flow

Una ruta de pipe. Dos curls. Sin archivo intermedio.

La API de Hoody Pipe mantiene un pipe no establecido hasta cinco minutos esperando que el otro lado se conecte. Cuando ambos os conectáis, los bytes fluyen. Nunca se escribe nada en disco en el servidor.

pipe.containers.hoody.com/dev-snapshot
PUT · EMISORtú · dev

Transmite el dump fuera de pg_dump

# from your dev laptoppg_dump --format=custom dev \  | curl -T - \      https://pipe.containers.hoody.com/api/v1/pipe/dev-snapshot[INFO] Waiting for 1 receiver to connect…[INFO] Streaming to 1 receiver…[INFO] Transfer complete.

PUT (o POST) con un cuerpo en streaming. El servidor imprime mensajes de estado de vuelta a tu terminal según se establece el pipe — útil para ver cuándo conectó realmente el otro lado.

GET · RECEPTORcompañero · staging

Tira del dump directo a psql

# on their staging shellcurl https://pipe.containers.hoody.com/api/v1/pipe/dev-snapshot \  | pg_restore -d staging# rows imported · staging now matches dev

GET en la misma ruta se bloquea hasta que el emisor se conecta. Los bytes que escribe el emisor aparecen como cuerpo de la respuesta. Canaliza a pg_restore (o psql) y el dump aterriza directo en la base de datos — nunca un archivo.

n=1 · fan-out por defectoel pipe espera hasta 5 minutos0 bytes almacenados en el servidor

Si quieres mirar el progreso sin consumir un slot de receptor, apunta un tercer curl a la misma ruta con ?progress y obtienes un dashboard HTML en vivo con bytes transferidos, velocidad y ETA.

use-cases / send-a-teammate-a-database-state / steps

Cómo se ve en tiempo real

Los cuatro movimientos para llevar una BD de dev al staging del compañero sin que nada toque disco en un servidor.

Mensaje de Slack → BD restauradaCUATRO PASOS · UN PIPE
10:14 · REPORTE DE BUG01

El compañero no puede reproducirlo

“¿me mandas tu bd de dev?”

Ayer esto habría significado pg_dump, bucket S3, URL prefirmada y un pegado en Slack.

10:14 · PUT02

Transmites el dump

pg_dump dev | curl -T - …/pipe/dev-snapshot

Tu terminal imprime “Waiting for 1 receiver to connect…” y se queda ahí. Tampoco se crea un archivo localmente.

10:15 · GET03

El compañero ejecuta el receptor

curl …/pipe/dev-snapshot | pg_restore

El pipe se establece en cuanto se conecta. Los bytes empiezan a fluir desde tu pg_dump directo a su pg_restore.

10:18 · LISTO04

Staging coincide con dev

Transferencia completa · 0 bytes en el servidor

El uso de disco del servidor sigue siendo cero. La ruta del pipe olvida que la transferencia ocurrió en cuanto ambos lados se desconectan.

use-cases / send-a-teammate-a-database-state / reasons

Por qué una ruta le gana a un archivo

Es el mismo número de comandos que teclearías para una ida y vuelta a S3 — menos el bucket, la credencial, la subida, la descarga y la limpieza.

SIN ALMACENAMIENTO

El servidor nunca retiene los bytes

Hoody Pipe es un intermediario en streaming, no un servicio de archivos. El dump existe en tu disco y en el suyo; entre medias, son solo bytes en vuelo. Nada que limpiar, nada que filtrarse.

SIN ARCHIVOS GRANDES

El tamaño lo limita el pipe, no la RAM

No hay barra de progreso de subida que vigilar porque no hay subida. Un dump de 40 GB se mueve a la velocidad que tu red y el pg_restore del compañero puedan sostener — el pipe solo reenvía.

OBSERVABLE

Añade ?progress para un dashboard en vivo

Abre la misma ruta con ?progress en una tercera URL y mira bytes-transferidos, velocidad y ETA en tiempo real. Hasta 50 espectadores por pipe, ninguno consume un slot de receptor.

use-cases / send-a-teammate-a-database-state / punchline

El estado de una base de datos solía ser un adjunto. Ahora es una ruta.

Los archivos son estado en reposo. Las rutas son estado en movimiento. Hoody Pipe permite que un snapshot de base de datos sea lo segundo — direccionable, efímero y nunca aparcado en un servidor que tengas que limpiar después.

  • sin subida
  • sin descarga
  • sin enlace que compartir
use-cases / send-a-teammate-a-database-state / replaces

Lo que esto reemplaza

La mayoría de herramientas que usábamos para compartir una base de datos de dev son restos de cuando no podíamos transmitir bytes entre dos terminales por HTTP. El pipe las hace innecesarias.

  • AWS S3 + URL prefirmadaUn bucket, una credencial, una subida y un enlace de 24 horas
  • Dropbox / Google DriveInicio de sesión, compartir manual, esperar a que sincronice
  • Subidas de archivo en SlackTope de 30 MB, luego “por favor usa un enlace de verdad”
  • Servicios estilo WeTransferMuros de email, páginas con anuncios, ventanas de retención misteriosas
  • Atajos con Postgres dblinkAbrir un puerto a dev para que staging tire de filas en vivo
  • rsync sobre SSH bastionDos claves SSH, un jump host y un archivo temporal en cada extremo
use-cases / send-a-teammate-a-database-state / cta

Dos curls. Una ruta. Su staging coincide con tu dev.

use-cases / send-a-teammate-a-database-state / related

Lee los otros