
Sechzig Container auf einem Server
Eine Bare-Metal-Box führt Dutzende bis Hunderte von Hoody-Containern aus. KSM und BTRFS-Dedup machen die Marginalkosten nahezu null.
Füge einen hoody-cron-Eintrag hinzu, der fünf Minuten vor dem 03:00-Migrationsjob feuert. Er curlt die Snapshots-URL und taggt das Artefakt als Rollback-Punkt. Wenn die Migration scheitert, stellst du in 30 Sekunden mit einem einzigen PATCH wieder her.
{ "name": "snap-2026-05-04", "alias": "rollback-point", "created_at": "02:55:08Z" }
EINE NACHT, FÜNF EVENTS, NULL PAGES
Der Cron-Service plant einen curl. Der Snapshots-Service erledigt das Einfrieren. Keiner weiß vom Migrationsjob fünf Minuten später — und genau das ist der Punkt.
# wiederkehrenden Snapshot-Job registrieren (einmaliges Setup) 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" }'
# was der Cron-Eintrag jede Nacht um 02:55 UTC curlt curl -X POST \ api.hoody.com/api/v1/containers/$ID/snapshots \ -H "Authorization: Bearer $TOKEN" \ -d '{"alias": "rollback-point", "expiry": 7}' # Antwort vom Snapshots-Service → 200 OK · snap-2026-05-04 created in 8s
Der Cron-Eintrag ist eine Zeile in einer Postgres-Tabelle irgendwo bei Hoody. Die Snapshots-URL schreibt einen content-addressed Blob ins Storage-Backend des Containers. Beides ist haltbar, beides versioniert, und keins braucht einen langlebigen Prozess auf deinem Laptop.
Vier Momente, vier URLs und eine fünfminütige Lücke zwischen Sicherheitsnetz und Änderung. Die Migration ist fertig, bevor der Wecker der meisten Engineers klingelt.
Wenn Schritt 03 scheitert, ist das Rollback `PATCH /snapshots/snap-2026-05-04`, und du bist zurück auf 02:55:08Z. Die Audit-Timeline oben sind dieselben Daten, nur als JSON serviert.
Nicht der Snapshot selbst. Die Form: ein Backup, das vor der Änderung existiert, per URL adressiert, mit einem Namen, der das heutige Datum enthält.
Die meisten Outage-Post-Mortems beginnen mit "wir haben vergessen, ein Backup zu machen." Wenn das Backup ein Cron-Eintrag ist, kannst du nicht vergessen. Der 02:55-Snapshot ist der erste Satz des Runbooks, im Voraus geschrieben.
snap-2026-05-04 wiederherzustellen ist ein einziger HTTP-Call gegen api.hoody.com. Der Container fällt in unter 30 Sekunden auf seinen 02:55:08Z-Zustand zurück. Kein Ticket, keine On-Call-Eskalation, kein "wer hat die AWS-Console."
Snapshots sind content-addressed und werden als Deltas gespeichert. Ein 412 MB Delta auf einer unveränderten Base-Disk ist, wofür du zahlst — und nur für das 7-Tage-Retention-Fenster. Erfolgreiche Migrationen hinterlassen fast keinen Footprint.
Wie das Runbook früher aussah und worauf es zusammenschrumpft, wenn der Snapshot nach dem heutigen Datum benannt und als URL adressierbar ist.
Die neue Spalte rechts ist kein Tool. Es ist ein Satz in einem Runbook. Der Satz beginnt nicht mit "erstmal ein Backup machen", weil das Backup bereits existiert.
Der Rollback-Plan ist eine URL, deren Existenz du gescheduled hast.
Den Cargo-Cult um Pre-Migration-Backups. Snapshot schedulen, durch das Migrationsfenster schlafen.
Der Rollback-Plan ist eine URL, deren Existenz du gescheduled hast.