Ir al contenido
use-cases / branch-computers-like-git / hero
SNAPSHOTS · ENTORNOS DEV DE CONSTRUCCIÓN

Ramificar computadoras como Git ramifica código

Un snapshot congela un contenedor en ejecución — sistema de archivos, procesos, memoria, descriptores de archivo abiertos. Restaura en 5–15 segundos. Bifúrcate en un contenedor separado con un POST. Ramificación, pero para toda la máquina.

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

Qué se captura realmente

Dos modos, decididos por el estado del contenedor en el momento del snapshot. Stateful captura todo; stateless es solo el sistema de archivos.

CUANDO SE EJECUTAcrear 1–5 s · restaurar 5–15 s

Stateful — contenedor en ejecución

  • Sistema de archivos (delta CoW)BTRFS reflinks; snapshots posteriores almacenan solo bloques cambiados.
  • Árbol de procesosLos daemons de larga duración se reanudan en mitad de la ejecución, no desde el arranque.
  • Estado de memoriaHeap, stack, mmaps. ~4 GB de disco extra para el volcado de RAM.
  • Descriptores de archivo abiertosLos sockets locales y FDs sobreviven; los pares remotos no.
  • Historial del terminalLas sesiones de tmux/screen en vivo se reanudan en mitad de la línea.
CUANDO SE DETIENEcrear 1–5 s · arranque frío 5–15 s

Stateless — contenedor detenido

  • Sistema de archivos (delta CoW)El mismo modelo de almacenamiento incremental que stateful.
  • Árbol de procesosEl contenedor comienza fresco desde el sistema de archivos capturado.
  • Estado de memoriaNo se vuelca RAM — ahorra disco y tiempo.
  • Descriptores de archivo abiertosSe reabre por los nuevos procesos en el arranque frío.
  • Archivos de base de datosPostgres / SQLite se recuperan del WAL capturado.
use-cases / branch-computers-like-git / branch

La ramificación es una llamada HTTP

Los snapshots son puntos de alias nombrados. /copy genera un contenedor separado de cualquiera de ellos — los mismos datos, línea de tiempo divergente.

iterm
# 1) Marca el punto de rama.
curl -X POST "https://api.hoody.com/api/v1/containers/$CID/snapshots" \
  -H "Authorization: Bearer $HOODY_TOKEN" \
  -d '["alias": "pre-migration", "expiry": 30]'

# 2) Restaura en su lugar — revierte este contenedor al snapshot.
curl -X PATCH "https://api.hoody.com/api/v1/containers/$CID/snapshots/pre-migration" \
  -H "Authorization: Bearer $HOODY_TOKEN"

# 3) Bifurca — genera un contenedor SEPARADO desde el mismo 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"]'

Restore revierte en su lugar. Copy crea un contenedor independiente que vive por su cuenta — ID diferente, línea de tiempo diferente, el original sigue ejecutándose. De cualquier forma está acotado; el almacenamiento es incremental, así que es barato.

Flujo de restauraciónVentana de restauración · 5 a 15 segundos
0110:00Snapshot tomado
0210:14La migración explota
0310:14:08Restaurado
use-cases / branch-computers-like-git / powers

Lo que desbloquea el modelo de rama

Tres flujos de trabajo que eran impracticables con snapshots de VM e imposibles con docker commit.

  1. 01

    Experimentos en paralelo

    Genera N contenedores desde el mismo snapshot vía /copy — prueba tres estrategias de migración en paralelo, mantén la ganadora.

  2. 02

    Pre-vuelo de cada despliegue arriesgado

    POST un snapshot antes de cualquier cambio destructivo. El restauro de siete segundos es tu botón de deshacer para toda la máquina.

  3. 03

    Línea de tiempo duradera

    Los alias son puntos de rama nombrados. snapshot_count está en la API del contenedor. El almacenamiento es incremental, por lo que es barato mantener docenas.

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

Lo que esto reemplaza

Si recurres a cualquiera de estos para recuperarte de un cambio malo, el modelo de snapshot hace el mismo trabajo en 5–15 segundos con una llamada HTTP.

  • vm-snapshotsMinutos para tomar, GB de disco por snapshot
  • vagrantCajas locales, sin estado compartido, sin restauración remota
  • docker commitSolo sistema de archivos, sin procesos / sin memoria
  • copias de seguridad manualesrsync + una página wiki que nadie lee
  • ciclos pg_dumpSolo BD, deja el resto de la caja en mal estado
  • reconstruir desde cero30+ minutos, rompe tu sesión de editor
use-cases / branch-computers-like-git / cta

Git te dio ramificación para código. Hoody te da ramificación para computadoras completas.

Lee la API de snapshots
use-cases / branch-computers-like-git / related

Lee los otros