現代のアプリケーションは、単一のオリジン上で完結するものではありません。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 へのリクエストを上から順番に評価します。最初に一致したルールが優先され、どの条件にも一致しない場合はデフォルトルールが適用されます。
ドラフトからデプロイまでのワークフロー
リクエストルーティングによって「ドラフトからデプロイまで」のワークフローを合理化し、安全性を確保しながら、開発者の生産性を向上させられます。
ドラフト : 編集を開始すると、現在有効な設定をクローンして自動的にドラフトが作成されます。
設定 : パスを追加し、ルールを定義します。各ルートごとに、最大10,000のパス、パスごとに20のルール、ルールごとに5つの条件を設定できます。
プレビュー : 本番環境に反映する前に、Structured Diff API エンドポイントまたは UI を使用して、変更内容を正確に確認します。
有効化 : 1回の呼び出しで変更内容をエッジにデプロイできます。厳密な検証により、すべてのパスにフォールバックルールが設定されていることを保証します。
ロールバック : 最新のアクティブなバージョンを5つ保持しているため、正常に動作する既知の状態へほぼ瞬時にロールバックできます。
利用を開始
リクエストルーティングは現在、すべてのプランでご利用いただけます。コントロールパネルで設定を開始してください。また、ルールのシンタックス、ワイルドカードマッチング、高度なオプションについては、ドキュメントをご覧ください。
リクエストルーティングを活用して何か面白いものを開発されている場合は、Fastly のコミュニティで共有するか、Fastly サポートまでご連絡ください。

