
1 つのサーバーで 60 のコンテナ
1 つのベアメタルボックスで数十から数百の Hoody コンテナを実行。KSM と BTRFS のデデュプでマージナルコストはほぼゼロ。
開発者ベースラインを 1 度スナップショットします。それ以降、新規入社者は全員 1 つの URL を取得します。手元のどんなノートパソコンでもクリックすれば、ベースラインのクローンである新しいコンテナの中にいます — コードベース、依存関係、環境変数、シードされたデータベース、ブラウザ内の VSCode。5 分でコードを書いています。セットアップではありません。
ようこそ!開発環境の準備ができました: https://devbox-jordan.hoody.dev. Postgres がシーディングされ、リポジトリがクローンされました。すでに cd ~/work && bun dev.
Hoody スナップショットはコンテナ全体をキャプチャします — ディスク上のファイル、ユーザーアカウント、systemd ユニットファイル、シードされたデータベース。コンテナコピーがそのスナップショットを開発者ごとに新しいコンテナにクローンします。メールのリンクがその新しいコンテナへのルートです。
POST .../snapshotsリファレンスコンテナの名前付きスナップショットを取得 — エイリアスを dev-baseline にします。ベースラインが変わったら再実行します。
POST .../copy [ source_snapshot ]1 回の API コールでスナップショットを新しい開発者のプロジェクト下の新しいコンテナにクローンします。
alex-laptop.containers.hoody.comコンテナは最初から公開 URL を持って出荷されます。Slack に貼り付けます。彼らはクリックします。中にいます。
ttyd · webview · sshhoody_kit がターミナル、ファイルブラウザ、ブラウザ内 VSCode のエンドポイントを自動的に起動します。ノートパソコンにインストールするものは何もありません。
# 1. Snapshot the baseline (do this once, refresh when you upgrade Node)
curl -X POST "$API/api/v1/containers/$BASE/snapshots" \
-H "Authorization: Bearer $TOKEN" \
-d '[ "alias": "dev-baseline" ]'
# 2. Copy the snapshot into a fresh container for the new hire
curl -X POST "$API/api/v1/containers/$BASE/copy" \
-H "Authorization: Bearer $TOKEN" \
-d '[
"target_project_id": "$ACME",
"name": "alex-laptop",
"source_snapshot": "dev-baseline",
"copy_firewall_rules": true,
"copy_network_rules": true
]'
# 3. The response carries the container URL. Email it. That's onboarding.
# => https://alex-laptop.containers.hoody.com2 つの POST と 1 つの URL。ベースラインスナップショットが契約、コンテナコピーがコンストラクター、結果のサブドメインがウェルカムメールに届くものです。プロビジョニングするバスティオンも、クローンする dotfiles リポジトリも、交渉する Docker Desktop ライセンスもありません。
すべてのリポジトリにかつて同梱されていた README には失敗モードも含まれていました。半分の行は、新規入社者がたまたま持ってきたノートパソコンへの回避策でした。ノートパソコンが画面から消え — 環境がそこにあるため、URL は短くなります。
TO: alex@acme.com · SUBJECT: WELCOME
チームへようこそ。コードを書く準備ができたらこれを開いてください:
— infra@acme
かつて 47 ステップだった README が、今や 1 行になりました: この URL を開いてください。
これらのそれぞれが新しい開発者のノートパソコンに動作する環境を届けようとしています。それぞれセットアップ、ライセンス、または DIY の接着剤がかかります。スナップショット URL はそのどれもかかりません — 環境はすでに動いています。
README のセットアップ手順を出荷するのをやめてください。URL を出荷してください。