
Sessenta contêineres em um servidor
Uma caixa bare-metal executa dezenas a centenas de contêineres Hoody. KSM e BTRFS dedup fazem o custo marginal próximo a zero.
Adicione uma entrada hoody-cron que dispara cinco minutos antes do job de migração das 03:00. Ela dá curl na URL de snapshots e marca o artefato como o ponto de rollback. Se a migração falhar, você restaura em 30 segundos com um único PATCH.
{ "name": "snap-2026-05-04", "alias": "rollback-point", "created_at": "02:55:08Z" }
UMA NOITE, CINCO EVENTOS, ZERO PAGES
O serviço de cron agenda um curl. O serviço de snapshots faz o congelamento. Nenhum dos dois sabe do job de migração que roda cinco minutos depois, e essa é toda a graça.
# registra o job recorrente de snapshot (configuração única) curl -X POST \ cron.containers.hoody.com/users/root/entries \ -H "Content-Type: application/json" \ -d '{ "schedule": "55 2 * * *", "command": "curl -X POST $SNAP_URL -d '{\"alias\":\"rollback-point\"}'", "comment": "pre-migration snapshot" }'
# o que a entrada de cron faz curl toda noite às 02:55 UTC curl -X POST \ api.hoody.com/api/v1/containers/$ID/snapshots \ -H "Authorization: Bearer $TOKEN" \ -d '{"alias": "rollback-point", "expiry": 7}' # resposta do serviço de snapshots → 200 OK · snap-2026-05-04 created in 8s
A entrada de cron é uma linha em uma tabela Postgres em algum lugar dentro da Hoody. A URL de snapshots grava um blob endereçado por conteúdo no backend de armazenamento do contêiner. Os dois são duráveis, os dois são versionados, e nenhum exige um processo de longa duração no seu laptop.
Quatro momentos, quatro URLs e um intervalo de cinco minutos entre a rede de segurança e a mudança. A migração termina antes do primeiro despertador da maioria das pessoas engenheiras.
Se o passo 03 falhar, o rollback é `PATCH /snapshots/snap-2026-05-04` e você está de volta às 02:55:08Z. A linha do tempo de auditoria acima são os mesmos dados, servidos como JSON.
Não o snapshot em si. O formato: um backup que existe antes da mudança, endereçado por uma URL, com um nome que inclui a data de hoje.
A maior parte dos post-mortems de incidente começa com "esquecemos de tirar um backup". Quando o backup é uma entrada de cron, você não consegue esquecer. O snapshot das 02:55 é a primeira frase do runbook, escrita com antecedência.
Restaurar snap-2026-05-04 é uma única chamada HTTP contra api.hoody.com. O contêiner reverte para o estado de 02:55:08Z em menos de 30 segundos. Sem ticket, sem escalonamento de plantão, sem "quem tem o console da AWS".
Snapshots são endereçados por conteúdo e armazenados como deltas. Um delta de 412 MB sobre um disco-base inalterado é o que você paga, e só pela janela de retenção de 7 dias. Migrações bem-sucedidas deixam quase nenhum rastro.
Como o runbook era antes, e em que ele se reduz quando o snapshot tem nome com a data de hoje e é endereçável como uma URL.
A nova coluna à direita não é uma ferramenta. É uma frase em um runbook. A frase não começa com "primeiro, tire um backup" porque o backup já existe.
O plano de rollback é uma URL que você agendou para existir.
O culto cargo em torno de backups pré-migração. Agende o snapshot e durma com a janela de migração rodando.
O plano de rollback é uma URL que você agendou para existir.