Zum Inhalt springen
use-cases / branch-computers-like-git / hero
SNAPSHOTS · BUILD-UMGEBUNGEN

Branch-Computer wie Git-Zweige Code

Ein Snapshot friert einen laufenden Container ein – Dateisystem, Prozesse, Speicher, offene Dateideskriptoren. Stellen Sie in 5–15 Sekunden wieder her. Forken Sie mit einem POST in einen separaten Container. Branching, aber für die ganze Maschine.

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

Was wird tatsächlich erfasst

Zwei Modi, entschieden durch den Zustand des Containers zum Snapshot-Zeitpunkt. Stateful erfasst alles; stateless nur das Dateisystem.

WENN LAUFENDerstellen 1–5 s · wiederherstellen 5–15 s

Stateful — laufender Container

  • Dateisystem (CoW Delta)BTRFS Reflinks; spätere Snapshots speichern nur geänderte Blöcke.
  • ProzessbaumLangzeitdaemone setzen mitten in der Ausführung fort, nicht vom Boot.
  • SpeicherzustandHeap, Stack, mmaps. ~4 GB zusätzlicher Speicher für den RAM-Dump.
  • Offene DateideskriptorenLokale Sockets und FDs bleiben erhalten; Remote-Peers nicht.
  • Terminal-RückblickLive tmux/screen-Sessions setzen mitten in der Zeile fort.
WENN GESTOPPTerstellen 1–5 s · Kaltstart 5–15 s

Stateless — gestoppter Container

  • Dateisystem (CoW Delta)Gleiches inkrementelles Speichermodell wie Stateful.
  • ProzessbaumContainer startet frisch vom erfassten Dateisystem.
  • SpeicherzustandKein RAM wird geliefert — spart Speicher und Zeit.
  • Offene DateideskriptorenErneut geöffnet durch die neuen Prozesse beim Kaltstart.
  • DatenbankdateienPostgres / SQLite erholen sich vom erfassten WAL.
use-cases / branch-computers-like-git / branch

Branching ist ein HTTP-Aufruf

Snapshots sind benannte Alias-Punkte. /copy startet einen separaten Container von einem beliebigen Snapshot — gleiche Daten, abweichende Timeline.

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

# 2) Stelle an Ort und Stelle wieder her — stelle diesen Container auf den Snapshot zurück.
curl -X PATCH "https://api.hoody.com/api/v1/containers/$CID/snapshots/pre-migration" \
  -H "Authorization: Bearer $HOODY_TOKEN"

# 3) Fork — starte einen SEPARATEN Container vom gleichen 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 macht die Änderungen rückgängig. Copy erstellt einen unabhängigen Container, der sein eigenes Leben lebt — unterschiedliche ID, unterschiedliche Timeline, dein Original läuft weiter. Egal wie — der Speicher ist inkrementell, also günstig.

Restore FlowFenster wiederherstellen · 5 bis 15 Sekunden
0110:00Snapshot genommen
0210:14Migration explodiert
0310:14:08Wiederhergestellt
use-cases / branch-computers-like-git / powers

Was das Branch-Modell freischaltet

Drei Workflows, die mit VM-Snapshots unpraktisch und mit docker commit unmöglich waren.

  1. 01

    Parallele Experimente

    Spawne N Container aus dem gleichen Snapshot via /copy — versuche drei Migrationsstrategien parallel, behalte den Gewinner.

  2. 02

    Pre-Flight für jeden riskanten Deploy

    POST einen Snapshot vor jeder destruktiven Änderung. Die sieben-Sekunden-Wiederherstellung ist dein Undo-Button für den gesamten Computer.

  3. 03

    Dauerhafte Timeline

    Aliases sind benannte Branch-Punkte. snapshot_count ist in der Container-API. Speicher ist inkrementell, also günstig, dutzende zu behalten.

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

Was dies ersetzt

Wenn du zu einem dieser greifst, um dich von einer schlechten Änderung zu erholen, erledigt das Snapshot-Modell die gleiche Aufgabe in 5–15 Sekunden mit einem HTTP-Aufruf.

  • VM-SnapshotsMinuten zum Erstellen, GB Speicher pro Snapshot
  • VagrantLokale Boxen, kein gemeinsamer Zustand, keine Remote-Wiederherstellung
  • Docker CommitNur Dateisystem, keine Prozesse / kein Speicher
  • Manuelle BackupsRsync + eine Wiki-Seite, die niemand liest
  • pg_dump-ZyklenNur Datenbank, hinterlässt den Rest der Box im Zustand mittel-schlecht
  • Alles von vorne neu aufbauen30+ Minuten, bricht deine Editor-Session
use-cases / branch-computers-like-git / cta

Git gab dir Branching für Code. Hoody gibt dir Branching für ganze Computer.

Snapshot-API lesen
use-cases / branch-computers-like-git / related

Lies die anderen