
1 つのサーバーで 60 のコンテナ
1 つのベアメタルボックスで数十から数百の Hoody コンテナを実行。KSM と BTRFS のデデュプでマージナルコストはほぼゼロ。
hoody-pipe は所有するすべてのパスで既にウェブアップロードフォームを提供しています。ファイルをページにドロップすれば、バイトはパイプを通ってスクリプトの stdin にストリーミングされます。アップロードコードは 1 行も書いていません。
ファイルをドロップまたはクリックしてアップロード
サイズ制限なし · 種類問わずアップロードコードなし、S3 バケットなし、署名付き URL なし
hoody-pipe はパスのルートでウェブ UI を、/noscript で JavaScript 不要のフォールバックを実行します。どちらも同じパスを読んでいる相手にマルチパートのバイトをそのままストリーミングします。スクリプトはパイプを読むだけ — 配線はそれだけです。
https://pipe.hoody.com/upload予約されていない任意のパスがパイプになります。その URL がアップロードページです。
GET /upload — 自動配信されるアップロードフォームHoody がフォームを配信します:ドロップゾーン、マルチパートパーサー、CSP nonce、すべて含まれています。/noscript は制限されたブラウザ向けに用意されています。
PUT /api/v1/pipe/upload (multipart/form-data)最初のマルチパートパートが展開され、レシーバーへストリーミングされます。サーバー側のステージングなし、一時ファイルなし。
curl …/api/v1/pipe/upload | python process.pyレシーバーとセンダーは 5 分の TTL 内に接続されます。スクリプトはウェブページの裏にいることを知らず、ただバイトを読みます。
パイプがアップロードサーバーです。スクリプトがレシーバーです。ドロップゾーンと stdin の間に第 3 のプロセスはありません — Lambda も API ゲートウェイも糊付けの関数もありません。
下記の項目はすべて、単発のアップローダーを作るときに普通なら 1 日仕事になるものです。パイプにはそれらすべてが同梱されています。
パイプ UI はドラッグ&ドロップエリア、クリックして選ぶフォールバック、進捗フィードバックをレンダリングします。/noscript は JS なしのブラウザ向けに純粋な HTML フォームを配信 — 同じパス、追加コードなし。
ブラウザが multipart/form-data を POST すると、サーバーは最初のパートを抽出してストリーミングします。ボディのバッファリングなし、一時ファイルのクリーンアップなし、10 行のマルチパートライブラリなし。
フォームはフレッシュな CSP nonce で配信されます。危険なコンテンツタイプ (text/html、image/svg+xml、application/javascript) は届く前に text/plain に書き換えられます。OPTIONS がクロスオリジンプリフライトを処理します。
アップロードの前にスクリプトを実行しても、後でも構いません — パイプは両端が揃うまで最大 5 分の TTL で接続を保持します。レシーバー数 (n) は最大 256 まで設定可能です。
並べて比較:構築するはずだったアップロードパイプライン と、スクリプトに向ける URL。
あなたはスクリプトを書きました。Hoody がアップロードフォームを書きました。
process.py — stdin を読み、仕事をする
while read chunk; do …ページ、フォーム、パーサー、セキュリティ
GET /upload — 自動配信単発のファイルアップロードが必要なときに開発者が手を伸ばすパターン。どれもセットアップ税を要求します — バケットのプロビジョニング、ミドルウェアのインストール、署名鍵のローテーション。パイプは URL です。
パスを選んで、パイプを読みましょう。アップロードフォームはその URL ですでに公開済みです。