Fastly エッジクラウドプラットフォーム

革新的なデジタルソリューション

ブログに戻る

フォロー&ご登録

英語のみで利用可能

このページは現在英語でのみ閲覧可能です。ご不便をおかけして申し訳ございませんが、しばらくしてからこのページに戻ってください。

コード不要のリクエストルーティング

Shane Burgess

Senior Product Manager, Fastly

現代のアプリケーションは、単一のオリジン上で完結するものではありません。API サーバー、静的アセット、認証サービス、メディアパイプラインのそれぞれに、トラフィックを正しくルーティングする必要があります。これを実現するには、複数のドメイン、カスタム VCL、オリジンの前段に配置されたコンピューティングコード、またはサービスチェイニングの使用など、複雑な設定が必要でした。

リクエストルーティングにより、これを簡素化できます。

1つのドメイン、複数のサービス

リクエストルーティングにより、ドメイン管理システム内の任意のドメインにパスベースのルールを定義し、各リクエストを適切なサービスに自動的に送信することが可能になります。カスタムコードは必要ありません。

マーケティングページを静的 CDN で、API をコンテナ化されたバックエンドで、メディアファイルをオブジェクトストレージでそれぞれホストし、すべてを1つのドメインで提供できます。/api/* をアプリケーションサーバーへ、/assets/*を S3 へ、/auth/*を ID プロバイダーへ。シンプルかつ高速に、すべて宣言的な設定でルーティングできます。

ユースケース

  • マイクロサービスのオーケストレーション : 異なるバージョンの API を特定のレガシーまたは最新のサービスにルーティングします。

  • 地理的ローカライゼーション : 特定の国のユーザーを、そのリージョンのオリジンサーバーにルーティングすることで、レイテンシを低減します。

  • A/B テスト & カナリアデプロイ : ヘッダーベースのマッチングを使用して、トラフィックの一部をステージング環境やベータ版サービスへルーティングします。

仕組み

ルート設定は、コントロールパネル上部のナビゲーションにある Domains で行います。3つの主要な条件タイプを使用して高度なルールを作成できます。初回リリースではヘッダーのみをサポートしますが、他の条件タイプも近日中に追加する予定です。

  • Header : API バージョンや User-Agent などの HTTP ヘッダーに基づいてマッチングします。

  • Geo : ユーザーの地理的な場所 (国コードなど) に基づいてトラフィックをルーティングします。

  • IP : 特定の IP アドレスまたは範囲に基づいてフィルタリングとルーティングを行います。

今回のリリースでは、ヘッダーの値が指定した文字列で始まる (starts_with)、指定した文字列で終わる (ends_with)、指定した文字列と一致する (equals)、または指定した文字列を含む (contains) といった条件を指定できます。各パスに複数のルールを定義でき、それぞれのルールに関連するアクションがあります。アクションは、条件に一致した場合に実行される処理を決定します。初回リリースでは、値として Service ID を指定する「サービス」アクションを提供しています (その他のアクションタイプも近日中に追加する予定です)。各パスにはデフォルトアクションを設定する必要があり、これはルールにマッチしない場合のフォールバックルートとなります。

以下は、User-Agent リクエストヘッダーに基づくトラフィックルーティングのシンプルな例です。

Route configuration:
  Path: /example
    Rule:
      Condition: header User-Agent starts_with "Mozilla/5.0"
      Action: route to service-A
    Rule:
      Condition: header User-Agent starts_with "Mozilla/4.0"
      Action: route to service-B
    Default: route to service-C

システムは /example へのリクエストを上から順番に評価します。最初に一致したルールが優先され、どの条件にも一致しない場合はデフォルトルールが適用されます。

ドラフトからデプロイまでのワークフロー

リクエストルーティングによって「ドラフトからデプロイまで」のワークフローを合理化し、安全性を確保しながら、開発者の生産性を向上させられます。

  1. ドラフト : 編集を開始すると、現在有効な設定をクローンして自動的にドラフトが作成されます。

  2. 設定 : パスを追加し、ルールを定義します。各ルートごとに、最大10,000のパス、パスごとに20のルール、ルールごとに5つの条件を設定できます。

  3. プレビュー : 本番環境に反映する前に、Structured Diff API エンドポイントまたは UI を使用して、変更内容を正確に確認します。

  4. 有効化 : 1回の呼び出しで変更内容をエッジにデプロイできます。厳密な検証により、すべてのパスにフォールバックルールが設定されていることを保証します。

  5. ロールバック : 最新のアクティブなバージョンを5つ保持しているため、正常に動作する既知の状態へほぼ瞬時にロールバックできます。

利用を開始

リクエストルーティングは現在、すべてのプランでご利用いただけます。コントロールパネルで設定を開始してください。また、ルールのシンタックス、ワイルドカードマッチング、高度なオプションについては、ドキュメントをご覧ください。

リクエストルーティングを活用して何か面白いものを開発されている場合は、Fastly のコミュニティで共有するか、Fastly サポートまでご連絡ください。

始める準備はできましたか?

ぜひご連絡ください