Pular para o conteúdo
use-cases / branch-computers-like-git / hero
SNAPSHOTS · BUILD DEV ENVIRONMENTS

Computadores branch como code branch do Git

Um snapshot congela um contêiner em execução — sistema de arquivos, processos, memória, descritores de arquivo abertos. Restaure em 5–15 segundos. Bifurque em um contêiner separado com um POST. Branching, mas para a máquina inteira.

use-cases / branch-computers-like-git / capture

O que realmente é capturado

Dois modos, decididos pelo estado do contêiner no momento do snapshot. Stateful captura tudo; stateless é apenas sistema de arquivos.

QUANDO EM EXECUÇÃOcriar 1–5 s · restaurar 5–15 s

Stateful — contêiner em execução

  • Sistema de arquivos (delta CoW)Reflinks BTRFS; snapshots posteriores armazenam apenas blocos alterados.
  • Árvore de processosDaemons de longa duração retomam a execução no meio, não na inicialização.
  • Estado da memóriaHeap, stack, mmaps. ~4 GB de disco extra para o dump de RAM.
  • Descritores de arquivo abertosSoquetes locais e FDs sobrevivem; peers remotos não.
  • Histórico de scrollback do terminalSessões tmux/screen ao vivo retomam no meio da linha.
QUANDO PARADOcriar 1–5 s · inicialização fria 5–15 s

Stateless — contêiner parado

  • Sistema de arquivos (delta CoW)Mesmo modelo de armazenamento incremental que stateful.
  • Árvore de processosO contêiner inicia fresco a partir do sistema de arquivos capturado.
  • Estado da memóriaNenhuma RAM é despejada — economiza disco e tempo.
  • Descritores de arquivo abertosReabertura por novos processos na inicialização fria.
  • Arquivos de banco de dadosPostgres / SQLite recuperam do WAL capturado.
use-cases / branch-computers-like-git / branch

Ramificação é uma chamada HTTP

Snapshots são pontos de alias nomeados. /copy gira um contêiner separado a partir de qualquer um deles — mesmos dados, linha do tempo divergente.

iterm
# 1) Marque o ponto de ramificação.
curl -X POST "https://api.hoody.com/api/v1/containers/$CID/snapshots" \
  -H "Authorization: Bearer $HOODY_TOKEN" \
  -d '["alias": "pre-migration", "expiry": 30]'

# 2) Restaure no local — reverta este contêiner para o snapshot.
curl -X PATCH "https://api.hoody.com/api/v1/containers/$CID/snapshots/pre-migration" \
  -H "Authorization: Bearer $HOODY_TOKEN"

# 3) Ramifique — gire um contêiner SEPARADO do mesmo snapshot.
curl -X POST "https://api.hoody.com/api/v1/containers/$CID/copy" \
  -H "Authorization: Bearer $HOODY_TOKEN" \
  -d '["target_project_id":"prod","name":"experiment-a","source_snapshot":"pre-migration"]'

Restaurar reverte no local. Copiar cria um contêiner independente que vive por conta própria — ID diferente, linha do tempo diferente, seu original continua em execução. De qualquer forma, é limitado; o armazenamento é incremental, então é barato.

Fluxo de restauraçãoJanela de restauração · 5 a 15 segundos
0110:00Snapshot tirado
0210:14Migração explode
0310:14:08Restaurado
use-cases / branch-computers-like-git / powers

O que o modelo de ramificação desbloqueia

Três fluxos de trabalho que eram impraticáveis com snapshots de VM e impossíveis com docker commit.

  1. 01

    Experimentos paralelos

    Gire N contêineres do mesmo snapshot via /copy — tente três estratégias de migração em paralelo, mantenha o vencedor.

  2. 02

    Pré-voo em cada implantação arriscada

    POST um snapshot antes de qualquer mudança destrutiva. A restauração de sete segundos é seu botão de desfazer para a máquina inteira.

  3. 03

    Linha do tempo durável

    Aliases são pontos de ramificação nomeados. snapshot_count está na API de contêiner. O armazenamento é incremental, então é barato manter dezenas.

use-cases / branch-computers-like-git / replaces

O que isso substitui

Se você recorrer a qualquer um destes para recuperar de uma mudança ruim, o modelo de snapshot está fazendo o mesmo trabalho em 5–15 segundos com uma chamada HTTP.

  • vm-snapshotsMinutos para tirar, GBs de disco por snapshot
  • vagrantCaixas locais, sem estado compartilhado, sem restauração remota
  • docker commitApenas sistema de arquivos, sem processos / sem memória
  • backups manuaisrsync + uma página wiki que ninguém lê
  • pg_dump cyclesApenas DB, deixa o resto da caixa no meio do mau estado
  • reconstruir do zero30+ minutos, quebra sua sessão de editor
use-cases / branch-computers-like-git / cta

Git lhe deu ramificação para código. Hoody te dá ramificação para computadores inteiros.

Leia a API de snapshot
use-cases / branch-computers-like-git / related

Leia os outros