Pular para o conteúdo
TipoDesbloqueado
EstágioFrota
DificuldadeModerado
TarefaAmbiente por branch
ParaEquipes de desenvolvimento
ServiçosContêineres
ServiçosSnapshots
Por que HoodyEconomia de contêineres
Por que HoodyViagem no tempo de snapshot
TipoDesbloqueado
EstágioFrota
DificuldadeModerado
TarefaAmbiente por branch
ParaEquipes de desenvolvimento
ServiçosContêineres
ServiçosSnapshots
Por que HoodyEconomia de contêineres
Por que HoodyViagem no tempo de snapshot
TipoDesbloqueado
EstágioFrota
DificuldadeModerado
TarefaAmbiente por branch
ParaEquipes de desenvolvimento
ServiçosContêineres
ServiçosSnapshots
Por que HoodyEconomia de contêineres
Por que HoodyViagem no tempo de snapshot
TipoDesbloqueado
EstágioFrota
DificuldadeModerado
TarefaAmbiente por branch
ParaEquipes de desenvolvimento
ServiçosContêineres
ServiçosSnapshots
Por que HoodyEconomia de contêineres
Por que HoodyViagem no tempo de snapshot
CONTÊINERES · SNAPSHOTS · PREVIEWS DE PR

Um ambiente de preview por pull request, o mês todo, $30

Tire um snapshot do seu contêiner de staging uma vez. Cada novo PR clona o snapshot em seu próprio contêiner com sua própria URL. O contêiner acorda quando um revisor abre o link, cochila quando ninguém está olhando, e é destruído por uma cron de uma linha quando o PR fecha. Sessenta branches, sessenta URLs e uma conta fixa.

CRON · DESTRUIR PREVIEWS DE PRs MERGEDuma linha, a cada 5 minutos
# Quando um PR é merged, a cron derruba o contêiner dele.*/5 * * * * curl -X DELETE https://api.hoody.com/api/v1/containers/$MERGED_PR_CID
LINHAGEM DE SNAPSHOTuma base · muitos clones
STAGING-BASEsnap-2026-05-01 · 4.2 GB
PÁGINAS COPY-ON-WRITE COMPARTILHADAS30 / 30 contêineres

Como um PR vira uma URL

Três chamadas. Uma linha de cron. O pipeline de CI que você já tem dispara as três na ordem que você escreveria sozinho se tivesse que.

    01
    PASSO 01 · UMA VEZ

    Tire um snapshot do contêiner de staging

    Escolha o contêiner que roda sua stack de staging — app, banco, filas, fixtures. Faça POST de um snapshot, dê o nome staging-base. Arquivos, processos e memória são capturados. O snapshot é um ponto de partida deltável, não um tarball — clones compartilham as páginas dele em vez de copiá-las.

    02
    PASSO 02 · POR PR

    Clone o snapshot no push

    Sua CI recebe o webhook de push do GitHub e faz POST para a Containers API com source_snapshot=staging-base. Um novo contêiner inicia em segundos com o banco populado e o branch do PR feito checkout. A URL volta como um status check.

    03
    PASSO 03 · NO MERGE

    Destrua quando o PR fechar

    Uma entrada de cron de 5 minutos varre PRs merged e faz DELETE nos contêineres deles — ou seu webhook de merge faz isso inline. O delta de disco do contêiner é recuperado, a URL é liberada, e o slot do contêiner volta para o pool para o próximo PR.

O Passo 02 leva mais ou menos o tempo de um yarn install. O Passo 03 é uma chamada HTTP. Nada mais precisa saber que o contêiner do PR existiu.

Os endpoints exatos que sua CI chama

Três endpoints reais das APIs Hoody Containers e Snapshots. Encaixe-os no passo do GitHub Actions que você já tem.

AMBIENTE DE PREVIEW · TABELA DE CHAMADAScontêineres + snapshots
  • POSTmétodo · path
    /api/v1/containers/[staging_id]/snapshots

    Capture o snapshot staging-base

    Body: [ "alias": "staging-base", "expiry": 30 ]. Retorna um nome de snapshot como snap-20260501-093000. Rode isso uma vez por deploy do branch principal — todo clone de PR descende da captura mais recente.

  • POSTmétodo · path
    /api/v1/projects/[project_id]/containers

    Clone um contêiner novo por PR

    O body escolhe server_id e um container_image; passe environment_vars para injetar o número do PR, ref do branch e nome do banco. O contêiner inicia a partir do sistema de arquivos do seu snapshot, não do zero — caches e dados de seed já estão lá.

  • DELETEmétodo · path
    /api/v1/containers/[pr_container_id]

    Aposente o preview quando o PR fechar

    Uma chamada. O contêiner desliga e seu delta de disco é recuperado; nada mais precisa ser desmontado. Uma entrada de cron a cada 5 minutos lida com os PRs que fecharam enquanto ninguém estava olhando.

Endpoints da Hoody Container Snapshots API e da Containers API. A expiração de snapshot é em dias; a criação de contêiner aceita environment_vars, ssh_public_key, autostart, ramdisk e realm_ids — veja a documentação para o schema completo da requisição.

O que muda quando previews são grátis

A matemática deixa de barrar o comportamento dos revisores. Três hábitos que eram caros demais a $40 por preview aparecem sozinhos quando o custo por PR é arredondamento.

VELOCIDADE DE REVIEW

Revisores clicam, não fazem pull

Ninguém faz checkout do branch localmente para reproduzir o bug. Eles abrem a URL, clicam na coisa quebrada, deixam um screenshot no PR. O loop de review roda no que o código realmente faz, não no que o diff sugere que ele faz.

ORÇAMENTO

PRs ociosos não custam nada

Os cinquenta PRs que ninguém está revisando agora custam zero CPU e zero RAM. Eles compartilham as páginas em disco do snapshot staging-base, então até a pegada deles é principalmente delta. A conta é limitada pela máquina, não pela contagem de PRs abertos.

DESIGN & PRODUTO

Stakeholders entram no loop

Sua designer, seu engenheiro de suporte, seu líder de vendas — qualquer um com a URL pode mexer no PR. Eles nunca iam fazer git checkout de um branch. Com um link, eles realmente olham a mudança antes dela cair.

A matemática em dólares, sem rodeios

Um time abrindo 30 PRs por mês. O número antes é a conta padrão de ambiente de preview. O número depois é uma máquina bare-metal Hoody que cabe todos os 30 mais seu staging.

ANTES · PREVIEWS VERCEL, TIME PRO

$480/mês

Pricing Pro por assento mais minutos de build mais largura de banda em um time de 6 engenheiros rodando 30 deploys de PR por mês. A maioria dos times limita previews aos 10 ativos porque os próximos 20 custam dinheiro de verdade.

VS
DEPOIS · HOODY · UMA MÁQUINA BARE-METAL

$30/mês

Um servidor de tier médio do marketplace Hoody roda staging mais 30 clones de PR mais seu cache de CI. Adicione os próximos sessenta por $0 — copy-on-write significa que cada clone é as páginas do snapshot mais um delta.

Preço de tabela do Vercel Pro é $20/assento/mês mais uso; preço bare-metal Hoody é orientado pelo marketplace e começa abaixo de $20/mês para tiers de entrada. A densidade de contêineres depende da carga — apps web típicos empilham dezenas a centenas; serviços stateful grandes precisam de mais folga.

Ambientes de preview deixam de ser um item de orçamento. Eles viram o padrão.

antes · limitado aos 10 ativosdepois · um por pull request
COMO ERA A POLÍTICA ANTIGApreview só dos 10 PRs mais barulhentosos outros vinte ganham um screenshot no comentário
COMO É AGORAtodo PR · todo diff · todo revisorsem documento de política, sem ticket pedindo um preview

O que isso substitui

Produtos de ambiente de preview cobram por assento, por minuto ou por contêiner em execução. O Hoody cobra por servidor — o 30º preview custa o mesmo que o 1º.

  • Vercel preview environments (Pro / Enterprise)Por assento mais minutos de build mais largura de banda
  • GitHub Codespaces previewsCobrança por hora, esteja o revisor olhando ou não
  • AWS Fargate preview tasksHoras de vCPU + memória por task, mais transferência de dados
  • Render preview environmentsPreço por ambiente, ocioso não é grátis
  • Heroku review appsUm dyno por PR, dyno-horas por review
  • Netlify deploy previews + minutos de buildMinutos de build medem todo push, não toda review

Snapshot uma vez. Clone por PR. Destrua no merge. O revisor nunca sente a costura.

Leia os outros