Pular para o conteúdo
use-cases / send-a-teammate-a-database-state / hero
PIPE · COMPARTILHAR STREAMS · POSTGRES

Envie a um colega o estado de um banco em uma linha

Um colega bate num bug que você não consegue reproduzir. Pule o arquivo. pg_dump no seu notebook entra direto no psql dele em staging — sem upload, sem link, sem download. O pipe roteia os bytes.

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

Um caminho de pipe. Dois curls. Sem arquivo no meio.

A Hoody Pipe API mantém um pipe não estabelecido por até cinco minutos enquanto espera o outro lado conectar. Quando os dois conectam, os bytes fluem. Nada é escrito em disco no servidor.

pipe.containers.hoody.com/dev-snapshot
PUT · REMETENTEvocê · dev

Envie o dump pelo pg_dump

# do seu notebook de devpg_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 (ou POST) com corpo em streaming. O servidor imprime mensagens de status no seu terminal conforme o pipe se estabelece — útil para você ver quando o outro lado realmente conectou.

GET · RECEPTORcolega · staging

Puxe o dump direto para o psql

# no shell de staging delecurl https://pipe.containers.hoody.com/api/v1/pipe/dev-snapshot \  | pg_restore -d staging# linhas importadas · staging agora bate com dev

GET no mesmo caminho bloqueia até o remetente conectar. Os bytes que o remetente escreve aparecem como o corpo da resposta. Mande para pg_restore (ou psql) e o dump cai direto no banco — nunca em arquivo.

n=1 · fan-out padrãopipe espera até 5 minutos0 bytes armazenados no servidor

Se você quer ver o progresso sem consumir um slot de receptor, aponte um terceiro curl para o mesmo caminho com ?progress e ganha um dashboard HTML ao vivo mostrando bytes transferidos, velocidade e ETA.

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

Como fica em tempo real

Os quatro movimentos para colocar um banco de dev no staging do colega sem nada tocar disco em servidor.

Mensagem do Slack → banco restauradoQUATRO PASSOS · UM PIPE
10:14 · BUG REPORT01

Colega não reproduz

“pode me mandar seu banco de dev?”

Ontem isso teria virado pg_dump, bucket S3, URL pré-assinada e um link no Slack.

10:14 · PUT02

Você envia o dump

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

Seu terminal imprime “Waiting for 1 receiver to connect…” e fica parado. Nenhum arquivo é criado localmente também.

10:15 · GET03

Colega roda o receptor

curl …/pipe/dev-snapshot | pg_restore

O pipe se estabelece no momento em que ele conecta. Os bytes começam a fluir do seu pg_dump direto para o pg_restore dele.

10:18 · PRONTO04

Staging agora bate com dev

Transfer complete · 0 bytes no servidor

O uso de disco do lado do servidor fica em zero. O caminho do pipe esquece que a transferência aconteceu no momento em que os dois lados desconectam.

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

Por que um caminho vence um arquivo

É o mesmo número de comandos que você digitaria para um round-trip de S3 — menos o bucket, a credencial, o upload, o download e a limpeza.

SEM STORAGE

O servidor nunca segura os bytes

O Hoody Pipe é um intermediário de streaming, não um serviço de arquivos. O dump existe no seu disco e no dele; entre os dois, são só bytes em voo. Nada para limpar, nada para vazar.

SEM ARQUIVOS GRANDES

O tamanho é limitado pelo pipe, não pela RAM

Não tem barra de progresso de upload para babá porque não tem upload. Um dump de 40 GB se move na velocidade que sua rede e o pg_restore do colega aguentam — o pipe só encaminha.

OBSERVÁVEL

Adicione ?progress para um dashboard ao vivo

Abra o mesmo caminho com ?progress numa terceira URL e veja bytes transferidos, velocidade e ETA em tempo real. Até 50 espectadores por pipe, nenhum consome um slot de receptor.

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

Estado de banco de dados era um anexo. Agora é um caminho.

Arquivos são estado em repouso. Caminhos são estado em movimento. O Hoody Pipe deixa um snapshot de banco ser o segundo — endereçável, efêmero e nunca parado num servidor que você precisa limpar depois.

  • sem upload
  • sem download
  • sem link para compartilhar
use-cases / send-a-teammate-a-database-state / replaces

O que isto substitui

A maioria das ferramentas que usávamos para compartilhar um banco de dev é resquício de quando não dava para fazer streaming de bytes entre dois terminais por HTTP. O pipe torna tudo isso desnecessário.

  • AWS S3 + URL pré-assinadaUm bucket, uma credencial, um upload e um link de 24 horas
  • Dropbox / Google DriveLogin, share manual, esperar sincronizar
  • Upload de arquivo no SlackLimite de 30 MB, depois “use um link de verdade”
  • Serviços tipo WeTransferPedido de e-mail, páginas com anúncio, janelas misteriosas de retenção
  • Gambiarras com dblink do PostgresAbrir uma porta no dev para o staging puxar linhas ao vivo
  • rsync sobre bastion SSHDuas chaves SSH, um jump host e um arquivo temporário em cada ponta
use-cases / send-a-teammate-a-database-state / cta

Dois curls. Um caminho. O staging dele agora bate com seu dev.

Ler o guia da Pipe API
use-cases / send-a-teammate-a-database-state / related

Leia os outros