Cloudflare

Waiting Room機能で顧客体験を向上しつつ、オリジンサーバーを過負荷リクエストから保護する

Cloudflare Waiting Roomはデジタルな待合室で、オンラインセール、チケット販売、新商品リリースなどの大規模なイベントでトラフィックが急増する際に、サーバーの過負荷や遅延を防ぐことができます。新商品の発売当日に目当てのページにアクセスしてもエラーページが表示され、更新ボタンを連打しても変わらないことは誰もが経験したことがあるかもしれません。しかし、Waiting Roomを導入することで、エラーページの代わりに、待ち時間の目安を通知し、待合室にいることを知らせます。これにより、更新ボタンを連打する人が減り、顧客体験を向上させつつ、オリジンサーバーの過負荷を回避できます。Enterpriseプランであれば追加料金なくWaiting Roomの一部機能を利用できます。

Waiting Roomで実現できること & 導入メリット

  • サイト訪問者にはエラーページの代わりに、待合室にいることを通知するページが表示されます。
  • 待合室をカスタマイズして、自社スタイルを使用できます(有料版のみ)。
  • 待合室ページは、訪問者の推定待機時間を表示します。20秒ごとにブラウザは自動更新され最新の推定待機時間が提供されます。
  • 待機時間が終了したら自動的に目的のページ(アプリケーション)が表示されます。
  • サイト訪問者が待合室からアプリケーションに到達すると、ユーザーステータス(Cookie情報)が与えられているため、サイトを一度離脱してもセッション期間中であれば再度待合室の行列に入ることなく直接アプリケーションに到達できます。
  • トラフィックを動的に管理することによって待機時間を短く抑えます。

シンプルな設定項目

  1. 待合室の名前
  2. Waiting Roomを有効化にするFQDN/パス(任意)
  3. カスタムcookie name(任意)
  4. アクティブユーザー合計数の上限
  5. 分単位新規ユーザー数の上限
  6. セッション時間 ※1
  7. キューイング方式(FIFO以外は有料版のみ)※2
  8. 待合室ページのカスタマイズ(デフォルトページ以外の利用は有料版のみ)※3

上記④、⑤の閾値で待合室の入場判定をします。

※1 セッション時間:
オリジンサーバに対し有効になる最大非アクティブ時間 (分単位)

※2 キューイング方式:
待合室ではFIFO(先入先出)の待ち行列で管理されていて、オリジナルサーバーに実装を加えなくも利用できます。有料版の場合FIFO以外にランダム、すべて拒否、パススルーの選択肢もあります。

Cloudflare Waiting Roomの設定項目:キューイング方式

※3 待合室ページのカスタマイズ:
デフォルトページは予め用意されており、そのまま利用できます。
また、英語以外の言語も最初からいくつか用意されています。
有料版であれば自社ブランドのスタイルにカスタマイズすることも可能です。

[デフォルトページの日本語例]
Cloudflare Waiting Roomのデフォルトページ日本語例

Waiting Roomの振る舞い(キューイング方式FIFOの場合)

  • ユーザー定義の閾値を超えてない場合、サイト訪問者はページに直接アクセスします。
  • ユーザー定義の閾値を超えると、サイト訪問者はデジタル待合室に入り、アクセス順が回ってくるまで待機します。
  • 各ユーザーはCookieを受け取り、待合室から元のWebサイトへの要求をFIFOの順序で管理します。
  • 待合室に滞在中、ユーザーのブラウザは20秒ごとに自動的に更新され、最新の推定待機時間が提供されます。
  • サイト訪問者が待合室からアプリケーションに到達すると、ユーザーステータス(Cookie情報)が与えられているため、サイトを一度離脱してもセッション時間内であれば再訪問時再度待合室の行列に入ることなく直接アプリケーションに到達できます。

Waiting Room管理画面

Waiting Room管理画面(未発動)
Waiting Room管理画面(発動中)

Waiting Roomが発動してなければ、ステータス列がキューに入れないで表示されます。
Waiting Roomが発動している場合、ステータス列に待ち人数nをキューに格納中が表示されます。
nは待ち人数を示します。

EnterpriseプランにおけるWaiting Room Add-on(有料版)機能の違い

  Add-onなし Add-onあり
待合室の個数 1室のみ 複数可能(室数により料金が変わる)
ホスト名とパス 1つのみ 複数可能
待合室ページのカスタマイズ デフォルトページ言語のみ変更可 自社ブランドとスタイルにカスタマイズ可
セッション更新の無効化 ※4 ×
JSONレスポンス ×
キューイング方式 FIFO FIFO、ランダム、すべて拒否、パススルー
待合室ルール ※5 https://developers.cloudflare.com/waiting-room/reference/configuration-settings/ ×
スケジュールイベント ※6 ×

参考:Features by plan type · Cloudflare Waiting Room docs

※4 セッション更新の無効化:
セッション更新はデフォルトで有効であり、有料版では無効にすることができます。
セッション更新が有効の場合、ユーザーは設定したセッション時間(Session duration)ごとにリクエストを行う限り、好きなだけサイトに滞在できます。
セッション更新を無効にすると、セッション時間に設定した期間が経過すると、ユーザーのセッションは期限切れになります。セッションが切れた後にユーザーがサイトへアクセスした場合、次のリクエスト時に新しい待合室Cookieが発行されます。アクティブな待ち行列がある場合は、このユーザーは待ち行列の最後尾に配置され再度待機する必要があります。
そうすることによってユーザーのサイト利用時間のコントロールができ、混雑を回避することが可能です。

※5 待機室バイパスルール:
特定のパスまたはURLや、例として内部サイト管理者を常にバイパスすることができます。

※6 スケジュールイベント:
キューイング方式の変更やアクティブユーザーの合計数の増加など、特定期間の待合室の動作をカスタマイズできます。

おわりに

Cloudflare Waiting Roomは新商品発売のような大規模なトラフィック増加のケースに対し、オリジンサーバーの過負荷や遅延を回避する優れた機能です。ビジネスのニーズに合わせて最適なプランを選択できます。Waiting Roomの導入により、サイト運営者には顧客満足度向上とサーバーの安定性がもたらされ、新商品のリリースや大規模なイベントにおいて、スムーズで効果的なウェブ体験を提供できるでしょう。


三井情報株式会社

執筆者:
三井情報株式会社
ソリューション技術グループ ソリューション第二技術本部 次世代基盤技術部 第二技術室