Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

プログラマブルプラットフォーム

最終更新 Markdown で表示Agent セットアップ

はじめに

プログラマブルプラットフォームでは、顧客がコードを書いて製品をカスタマイズできます。機能が固定された従来の SaaS と違い、機能の拡張、バックエンドロジックのデプロイ、フルスタック体験の構築を、プラットフォームのインフラ上で行えます。

こうしたプラットフォームのインフラをホストするには、セキュリティ、スケーラビリティ、コスト効率、性能の分離など、いくつかの課題があります。顧客にカスタムコードの実行を許すと、信頼できない実行、悪用、リソース競合といったリスクが生じます。これらは、プラットフォームの信頼性を損なわずに管理する必要があります。シングルテナントのアプリケーションを数百万動かすのは本質的にコストが高いため、効率的なリソース利用が重要です。アイドル時にワークロードをゼロまで縮小できることは、需要急増時の高速起動を保ちつつ、経済的に成立させる鍵です。加えて、低遅延でグローバルに実行するには、耐障害性のある分散アーキテクチャが必要です。顧客がデプロイしたコードを可視化し制御するには、堅牢な監視、デバッグ、ガバナンスも欠かせません。イノベーションを制限してはなりません。

Workers for Platforms は、プログラマブルプラットフォームを構築するためのインフラに適しています。顧客がカスタムコードを安全に大規模実行できる分離環境、アイドル時の自動スケールゼロ、性能とコストを最適化するグローバル分散ランタイムを提供します。

コアアーキテクチャの構成要素

Workers for Platforms のアーキテクチャは、マルチテナントアプリケーション向けに安全でスケーラブルかつ効率的なソリューションを提供する、いくつかの主要コンポーネントで構成されます。次に中核となる考え方を示します。

  1. メインのリクエストフロー: プログラマブルプラットフォームにおけるリクエストの流れの概要です。

  2. 呼び出しとメタデータのフロー: 多くの場合、受信リクエストにメタデータを付与し、関数呼び出しに必要なコンテキストを渡すか、ルーティングロジックを実行します。

  3. Egress 制御: 準拠した動作を保つために、送信接続を制御します。

  4. ストレージとデータリソースの利用: データベースとストレージを使い、大規模でも豊かなエンドユーザー体験を構築します。

  5. オブザーバビリティツール: プラットフォーム性能の監視とトラブルシューティングのためのログとメトリクス収集です。

メインのリクエストフロー

図 1: Workers for Platforms のメインフロー
図 1: Workers for Platforms のメインフロー
  1. クライアントリクエスト: クライアントアプリケーションから、プラットフォームの Dynamic Dispatch Worker へリクエストを送ります。

  2. ルーティング: 実行する正しいワークロードを特定し、Dispatch Namespace 内の対応する User Worker へリクエストをルーティングします。各顧客のワークロードは、独自のリソースとセキュリティ境界を持つ分離された User Worker で実行されます。

呼び出しとメタデータのフロー

図 2: Workers for Platforms のメインフロー
図 2: Workers for Platforms のメインフロー

多くのユースケースでは、追加のメタデータ、ユーザーデータ、設定を取得して受信リクエストを処理し、User Worker の呼び出しに追加コンテキストを渡すのが適切です。

  1. 受信リクエスト: カスタムホスト名、または Workers のワイルドカードルートを使う Worker へリクエストを送ります。

  2. メタデータの参照: KV ストレージから顧客固有の設定データを取得します。参照は通常、受信リクエストのホスト名、またはカスタムホスト名の場合はカスタムメタデータに基づきます。

  3. Worker の呼び出し: メタデータに基づき、Dispatch Namespace 内の適切な User Worker へリクエストをルーティングします。任意で、関数呼び出し時に追加コンテキストを渡せます。

Egress 制御パターン

図 3: Workers for Platforms の Egress 制御
図 3: Workers for Platforms の Egress 制御

データの可観測性と制御は、セキュリティに不可欠です。Outbound Workers を使うと、User Worker スクリプトからのすべての送信リクエストをインターセプトできます。

  1. Worker の呼び出し: Dispatch Namespace 内の適切な User Worker へリクエストをルーティングします。任意で、User Worker 呼び出し時に Outbound Worker へ追加パラメーターを渡せます。

  2. 外部リクエスト: 制御された Outbound Worker 経由で、fetch() 呼び出しにより外部サービスへリクエストを送ります。

  3. リクエストのインターセプト: 送信リクエストを評価し、集中的なポリシー適用や監査ログなどの中核機能を実行します。

メトリクスとログのアーキテクチャ

図 4: Workers for Platforms のメトリクスとログ
図 4: Workers for Platforms のメトリクスとログ
  1. ログ: リクエストフロー内のすべての Workers から、Tail WorkerWorkers Trace Events Logpush でログを収集します。

  2. メトリクス: Workers Analytics Engine でカスタムメトリクスを収集し、すぐに GraphQL API で照会できる標準の Analytics も利用します。

  3. サードパーティ連携: Analytics integrations 経由で、ログとメトリクスを Datadog、Splunk、Grafana などの外部監視・分析プラットフォームへエクスポートします。

リソース分離モデル

図 5: Workers for Platforms のリソース
図 5: Workers for Platforms のリソース
  1. 受信リクエスト: カスタムホスト名、または Workers のワイルドカードルートを使う Worker へリクエストを送ります。

  2. Worker の呼び出し: Dispatch Namespace 内の適切な User Worker へリクエストをルーティングします。

  3. リソースアクセス: スクリプトごとのリソースとやり取りします。

    • リレーショナルデータベースストレージの D1
    • 強い一貫性が必要なデータの Durable Objects
    • 読み取りが多く、結果整合のキーバリューストレージの KV
    • オブジェクトストレージの R2

デプロイと管理のフロー

図 6: Workers for Platforms のデプロイと管理フロー
図 6: Workers for Platforms のデプロイと管理フロー
  1. 管理インターフェイス: GUI、API、CLI からプラットフォームを操作します。

  2. プラットフォーム処理: これらの操作を処理して、次を行います。

    • コードの変換とバンドル
    • セキュリティチェック
    • 設定の適用
  3. 変更管理: Cloudflare REST API を使って、変更を Cloudflare へデプロイします。

まとめ

Cloudflare Workers for Platforms は、強い分離、グローバル分散、スケーラブルな性能を備えたマルチテナント SaaS アプリケーションを構築するための堅牢な基盤です。このアーキテクチャを使うと、基盤インフラの複雑さは Cloudflare が担い、プラットフォーム提供者は顧客への価値提供に集中できます。

関連リソース

役に立ちましたか?