Fastly Computeでスケーラブルなウェイティングルームを構築する

シニア・サーバーレス・ソリューション・アーキテクト, Fastly

シニアマネージャー、プロダクトマーケティング、デベロッパープラットフォーム

開発者マーケティング担当シニアディレクター

あなたのeコマースサイトがフラッシュセールを実施しているか、チケットプラットフォームがスタジアムコンサートの座席をリリースしていると想像してみてください。何千人ものユーザーが同時にエンドポイントに殺到し、オリジンサーバーを圧迫してカスタマーエクスペリエンスが低下する恐れがあります。
ウェイティングルームは、サイトへの訪問者の流れを制御し、サイトの安定性を維持し、ショッピング体験を最適化するための完璧なソリューションです。需要の高いイベントのチケット販売の場合、ウェイティングルームは顧客を公正に並ばせ、過剰販売を防ぐ手段となります。このブログでは、Fastly Compute 上にウェイティングルームアプリを構築することに焦点を当てたクールなプロジェクトの概要と、それをどのようにしてあなた自身のユースケースに活用できるかを紹介します。
ウェイティングルームプロジェクトの目標:
キュー管理:アプリは、多数の同時ユーザーを効率的に処理し、それらを仮想キューに配置してサーバーの過負荷を防ぐ必要があります。
リアルタイム更新:ユーザーは自分のキュー内の位置と推定待ち時間を確認でき、これらは自動的に更新される必要があります。
設定可能な設定:リフレッシュ間隔や自動ユーザー入場率など、キュー設定を簡単に調整できるようにします。
不正防止対策:キュー操作を防止し、公平なアクセスを確保するために組み込まれたセキュリティ機能を含めます。
マルチキューサポート:異なるパスやイベントを別々のキューで処理できる機能を提供します。
Fastly Compute がスケーラブルなウェイティングルームを強化する方法
このウェイティングルームアプリは、Fastly ComputeとUpstashのRedisデータベースを組み合わせて使用しています。UpstashはFastlyとAPI統合しており、アトミックオペレーションを持つこのタイプのステートフルなデータベースを使用することで、書き込まれたすべてのオペレーションが受け取った順番に成功することが保証されます。こちらは高レベルの概要です:
ユーザーが保護されたエンドポイントに到達すると、アプリはそのパスのキューがアクティブかどうかを確認します。アクティブな場合、ユーザーには一意の識別子が割り当てられ、キューに配置されます。
アプリはRedisを使用してキューの位置、長さ、カーソル(次に提供される位置)を追跡しています。
ユーザーはキュー情報を含むcookieを受け取り、定期的に更新されて位置を維持します。
アプリは、設定された速度で自動的にユーザーを承認したり、手動でバッチで承認したりすることができます。

図1: ウェイティングルームのユーザーリクエストフロー(以下の手順を参照)
ユーザーがFastlyをフロントに持つサイトにリクエストを行います。
リクエストはFastly Compute Serviceにルーティングされます(これはエッジで動作する主要なアプリケーションロジックです)。ユーザーをキューに入れるか、許可するかを決定するコードを含んでいます。
Computeロジックは、ウェイティングルームがアクティブであるかどうか、ユーザーが有効なトークン(cookie)を持っているかどうかを確認します。
有効なトークンが存在しない場合、ComputeはUpstash Redisと連携して現在のキューの長さを取得し、ユーザーに新しいキューの位置を割り当て、トークンcookieを発行します。
ユーザーがまだ入場していない場合、ComputeはFastly KV Storeに保存されたページテンプレートを使用して、エッジから直ちにウェイティングルームページを提供し、オリジンにアクセスされないようにします。
トークンが有効で、ユーザーがキューの先頭に達した場合(Token Live? = Yes)、Computeはリクエストをオリジンサーバーに転送します。
ウェイティングルームをカスタマイズする方法:
テンプレートをブランドに合わせて調整する:Fastly の KV Storeを使用して、ウェイティングルームのページをブランドに合わせてカスタマイズします。
ジオターゲティング:ローカライズされたイベントのために国別キューを設定する。
複数のキュー:サイトのさまざまなセクションやイベントごとに異なるキューを設定してください。
入場戦略:キューからユーザーをどのように入場させるかについて、カスタムロジックを実装します。
Fastly Compute ウェイティングルームの構築
Fastly Compute を使用して独自のウェイティングルームを構築するには:
Upstash Redis データベースを作成してください
キュー設定とページテンプレートのためにFastlyのKVストアを設定する
JavaScript、Rust、またはGoを使用してコアロジックを実装します
シミュレートされたトラフィックで徹底的にテストしてください
インフラストラクチャを保護し、ユーザーエクスペリエンスを向上させる
Fastly Computeと高速な分散データベースを活用することで、高トラフィックシナリオを管理するための堅牢なソリューションを作成できます。このパターンを探求し、あなたの具体的なユースケースに合わせて調整することをお勧めします。
チケット販売、プロダクト発表、または需要の高いイベントを扱う際には、ウェイティングルームを適切に実装することで、ユーザーエクスペリエンスを大幅に向上させ、インフラストラクチャを保護することができます。楽しいコーディングを!Fastly Computeを使ってどのような素晴らしいものをビルドしたかお知らせください。