
1 つのサーバーで 60 のコンテナ
1 つのベアメタルボックスで数十から数百の Hoody コンテナを実行。KSM と BTRFS のデデュプでマージナルコストはほぼゼロ。
スナップショットは実行中のコンテナを凍結します — ファイルシステム、プロセス、メモリ、開いているファイルディスクリプタ。5 ~ 15 秒で復元します。1 つの POST で別のコンテナにフォークします。コード用のブランチングです。但し、マシン全体に対してです。
各コミットは 1 つのコンピューター · ハッシュはコンテナ ID · ブランチはマシン全体の状態のフォーク
2 つのモード。スナップショット時のコンテナの状態で決定。Stateful はすべてをキャプチャ。Stateless はファイルシステムのみ。
スナップショットは名前付きエイリアスポイント。/copy はそのいずれかから別のコンテナをスピンアップ — 同じデータ、分かれたタイムライン。
# 1) ブランチポイントをマーク。
curl -X POST "https://api.hoody.com/api/v1/containers/$CID/snapshots" \
-H "Authorization: Bearer $HOODY_TOKEN" \
-d '["alias": "pre-migration", "expiry": 30]'
# 2) 復元 in place — このコンテナをスナップショットに戻す。
curl -X PATCH "https://api.hoody.com/api/v1/containers/$CID/snapshots/pre-migration" \
-H "Authorization: Bearer $HOODY_TOKEN"
# 3) フォーク — 同じスナップショットから別のコンテナをスポーン。
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"]'復元は in place で復元。Copy は独立したコンテナを作成 — 異なるID、異なるタイムライン、オリジナルは実行を続ける。どちらにしろ境界付き。ストレージはインクリメンタルなので安い。
VM スナップショットでは非実用的で、docker commit では不可能だった 3 つのワークフロー。
/copy で同じスナップショットから N 個のコンテナをスポーン — 3 つのマイグレーション戦略を並行実行、ウィナーを保持。
危険な変更の前に POST スナップショット。7 秒の復元はマシン全体のアンドゥボタン。
エイリアスは名前付きブランチポイント。snapshot_count はコンテナ API に。ストレージはインクリメンタルなので、数十を保持するのに安い。
悪い変更から復旧するためにこれらを使用する場合、スナップショットモデルは 5~15 秒で同じジョブを 1 つの HTTP 呼び出しで実行しています。
Git はコードのブランチングを提供しました。Hoody はコンピュータ全体のブランチングを提供します。