
Sesenta contenedores en un servidor
Un servidor bare-metal ejecuta decenas a cientos de contenedores Hoody. KSM y dedup BTRFS hacen que el costo marginal sea casi cero.
Un backup de Postgres de 200 GB en Frankfurt. Una caja nueva en Singapur. Saltas la ida y vuelta a S3. Un curl canaliza pg_dump a una URL de Hoody pipe; un curl al otro lado lo transmite directo a psql. Los bytes están en vuelo, nunca en reposo.
200 GB · cero saltos · cero retención
Hoody Pipe es una ruta con nombre en un servidor HTTP. El emisor hace PUT de un stream, el receptor hace GET a la misma ruta y el servidor empalma las dos. Nada se escribe en disco; el pipe contiene cero bytes por diseño.
Desde la caja de origen, pg_dump | gzip | curl -T - a la URL del pipe. El cuerpo del PUT fluye tan rápido como el backpressure TCP permita. El servidor mantiene la conexión hasta que aparezca un receptor en la misma ruta.
PUT /api/v1/pipe/migrationCuando el GET del receptor aterriza en la misma ruta, Hoody empalma los bytes de la subida directamente en la respuesta de la descarga. Sin buffer, sin staging en disco, sin commit asíncrono — solo un stream directo entre dos sockets HTTP.
0 bytes en discoDesde la caja de destino, curl hace GET a la ruta y canaliza la respuesta por gunzip | psql. El stream del lado receptor termina en el segundo en que llega el último byte del emisor. Sin reintentos, sin manifest, sin limpieza.
GET /api/v1/pipe/migrationEl orden de conexión no importa — el receptor puede hacer curl primero y bloquearse hasta que se conecte el emisor (o viceversa), hasta el TTL de 5 minutos del pipe. El backpressure fluye de extremo a extremo: un psql lento estrangula al curl en el origen. No hay cola que desbordar porque no hay cola.
Esto no es pseudocódigo. Abre dos terminales en los dos servidores, ejecuta uno en cada uno y mira cómo un backup de 200 GB sale de una nube y aterriza en otra.
Se prefiere PUT (curl -T) porque es como curl quiere subir un stream. POST funciona idéntico — misma ruta, mismos mensajes de estado. Usa ?n=N en ambos lados si necesitas repartir el mismo dump a varios receptores.
Un tercer portátil abre la misma URL del pipe con ?progress y obtiene un feed SSE en tiempo real de bytes-por-segundo, ETA y receptores conectados. Espectar no consume un slot de receptor — cincuenta compañeros pueden mirar la migración sin cambiar el valor de n ni interferir con la transferencia.
La ida y vuelta a S3 parece simple en una pizarra. En producción es una pila de piezas móviles que cobran por segundo. El pipe colapsa la pila entera dentro del propio transporte.
S3, GCS, Azure Blob — la ida y vuelta existe solo porque no había otro sitio donde aparcar los bytes. El pipe es la ruta. No hay bucket que aprovisionar, regla de lifecycle ni limpieza posterior.
Egress en la subida, egress en la descarga — dos veces. Con el pipe los bytes salen de Frankfurt y llegan a Singapur en un solo salto. Pagas por los segundos que la conexión estuvo abierta, no por almacenamiento que borrarás mañana.
Tu monitorización ya entiende HTTP. También tu VPN, tu firewall, tu log de auditoría. Sin nueva identidad IAM, sin nuevo SDK, sin nuevo modo de fallo — es un comando curl.
La velocidad está acotada por el enlace más lento de extremo a extremo (egress de Frankfurt, ingress de Singapur, tu ventana TCP). El pipe de Hoody contiene cero bytes — no hay almacenamiento del lado del servidor; el backpressure fluye directo entre los dos extremos.
Dos terminales, una URL, sin tercera capa de almacenamiento.
La migración entera tiene la misma forma que cat file | wc -l. Que los dos pipes vivan en data centers distintos es un detalle de implementación de la URL.
Cualquier cosa que existe solo porque nadie tenía una ruta HTTP que transmita. El pipe colapsa toda la pila de migración de datos en un curl en cada lado.
Sáltate el bucket. El transporte es la URL.