
1 つのサーバーで 60 のコンテナ
1 つのベアメタルボックスで数十から数百の Hoody コンテナを実行。KSM と BTRFS のデデュプでマージナルコストはほぼゼロ。
ほとんどの CI パイプラインはキャッシュトラフィックでお金を燃やします。アーティファクトを S3 にプッシュし、次のジョブで取り戻し、ストレージに支払い、エグレスに支払い、ランナーがリージョンを移動するときにまた支払います。Hoody ではキャッシュは、ビルドコンテナを実行するのと同じベアメタル上のフォルダーです。curl で tarball をプッシュ。curl で取得。バイトはサーバーから出ていきません。
同じ 47.2 GB のキャッシュ · 2 つの異なる請求書
CI キャッシュ全体は 3 つのコマンドと 1 つのクリーンアップジョブです。tarball を書くために PUT。読むために GET。プルーンに find -atime。4 つ目はありません。IAM ポリシーも、バケットライフサイクルも、署名付き URL の儀式もありません。
インストール後、ランナーは node_modules を tar | zstd でストリームし、/files/cache に対する 1 回の PUT に流し込みます。Hoody はボディを 1 つのバイナリ blob としてディスクに書き込みます。マルチパートも、パートアップローダーも、SDK もありません。
次のジョブの最初のステップは 1 回の curl です。ボディは NVMe からラインレートで出てきます。キャッシュがランナーと同じ物理サーバーに住んでいるからです。エグレスホップも、クロス AZ プルも、CloudFront エッジもありません。
Hoody Cron が夜に 1 回起動します。find /files/cache -atime +30 -delete が、1 か月読まれていないものを捨てます。保持ポリシーも、Glacier 階層も、保守する lifecycle JSON もありません。
PUT が書き、GET が読み、find がプルーンします。Hoody Files API はキャッシュサーバーであり、クリーンアップエンジンであり、監査ログでもあります。すべて同じ /files/[path] URL の裏側で。
ストレージが希少だった頃は、キャッシュを別のベンダーに送り出すのは理にかなっていました。ベアメタルコンテナでは、ベンダーが 1 つ増えるだけです。
S3 は 3 つのメーターで課金します。ストレージ、エグレス、リクエストごと。Hoody Files はコンテナに含まれます。すでに支払っているディスクが、キャッシュが乗るディスクです。バイトは課金境界を越えません。
読み取りはビルドを実行するのと同じ物理サーバーから来ます。解決する S3 エンドポイントも、リージョンへの TLS ハンドシェイクも、プレフィックスのスループットレート制限もありません。1.4 GB の Rust ターゲットは数秒で展開されます。
ランナーとキャッシュは同じインスタンスに住み、同じ請求書で課金され、同じ SSH セッションでデバッグされます。コンテナをオフにすると、キャッシュはディスクイメージです。起動した瞬間に再びオンラインです。
典型的な中規模の CI フットプリントは、1 か月あたり約 1.4 TB のキャッシュトラフィックを移動させます。AWS で構築する明細と、Hoody で構築する明細はこちらです。
ビルドを実行するサーバーにキャッシュが住むと、S3 が動かしていたメーターには読むものがありません。明細は動きません。課金するトランザクションがないからです。
Hoody Files は薄いラッパーではありません。ハッシュ、履歴、レンジリード、監査ジャーナルを備えた本物の永続化バックエンドです。CI キャッシュは実際に公開されているもののごく一部を使います。
PUT で書き、GET で読み、HEAD で ETag と Content-Length、?hash で SHA256、?stat でメタデータ。キャッシュはログ、ビルド、共有アーティファクトを支えるのと同じエンドポイントファミリーです。
すべての書き込みはファイルジャーナルを通ります。タイムスタンプまたはパスごとのリビジョン番号で昨日のキャッシュを取得できます。フレークのデバッグに別のスナップショットツールが要らなくなります。
もしキャッシュが本当に S3、B2、Drive フォルダーに住む必要があるなら、バックエンドとしてマウントして同じ /files/[path] URL を維持できます。ランナーコードは変わりません。キャッシュが移るだけです。
数字は公開された Hoody Files API の表面を反映しています。`GET/PUT/HEAD/PATCH /api/v1/files/[path]`、`?hash`/`?stat`/`?at`/`?revision`/`?history` クエリパラメーター、`/api/v1/journal` 配下のファイルジャーナルエンドポイント。
CI キャッシュは別のベンダーであることをやめます。それは、すでにレンタルしているサーバー上のフォルダーです。
標準的な手近なキャッシュバックエンドはそれぞれ、ベンダー関係、エグレス請求、ビルドごとの料金を取ります。/files はそのどれも取りません。
2 つ目のクラウドからキャッシュをレンタルするのをやめましょう。すでに支払っているディスクに tarball を書き、それを curl で取り戻しましょう。