話題の記事

導入期間5分でワクチン予約サイトを落ちなくできるCloudflare Waiting Roomは最強のソリューション

Cloudflare Waiting Roomを使うことで、既存のシステムを改修する事無く5分程度でWaiting Roomを実装して、ワクチン予約サイトを落とすこと無く運用できます。
2021.05.19

昨今のCOVID-19ワクチン予約サイトでは、大量のリクエストが一気に押し寄せてサイトがダウンしてしまい、予約ができないなどと話題になってしまいがちです。

ワクチン予約サイトはたくさんリクエストが来るのは事前に分かっていますので、サーバーを増強したり、クラウドなどを活用して予約のタイミングだけサーバーを大量にスケーリングしたり、サーバーレスなアーキテクチャにしたりして負荷に強いワクチン予約システムを作成して大量のリクエストを捌きれればベストですが、瞬間風速的なリクエストを捌ききるのは難しく、開発期間も短いため、頭を抱えていらっしゃる自治体・医療機関・協力会社様は多いかと思います。

クラスメソッドではCloudflareのFair Shotプロジェクトに賛同し、ワクチン接種を推進する自治体・医療機関・協力企業にデジタル待合室Cloudflare Waiting Roomを無償提供しております。数多くのお問い合わせを頂いており、実際に国内のワクチン予約サイトに導入されて、問題無く乗り切った実績もございます。高負荷なサイトが大好物なクラスメソッドのエンジニアが導入のお手伝いもします。現在のシステム構成を変えること無く、DNSの変更とCloudflareの設定を行うだけで、文字通り5分で導入が終わる最強のソリューションです。

※なお、Cloudflare Waiting Roomはまだ一般公開されておらず、ワクチン接種に関連したサイトにのみ提供されております。導入には審査がございますので、お問い合わせフォームよりご連絡ください。

本記事では、実際にどのように導入するのか、管理画面はどのようになっているか等の詳細をご紹介していきいます。

Cloudflare Waiting Roomの導入の方法

Cloudflare Waiting Roomは既にある構成を変更する事無く、DNSの設定とWaiting Roomの設定をするだけで簡単に導入する事ができます。

※導入の方法などは下記のブログでもまとめられていますが、私もせっかく触ってみたので一部重複する部分もあるかと思いますが記事にしていきます。

Step1. DNSのネームサーバー委譲をする

まずはじめに、利用するドメインのネームサーバーを設定します。Cloudflareではアカウントを発行すると次のようにネームサーバーはこれに設定してください、といった内容が表示されますので、こちらを設定してあげます。

なお、ネームサーバーの委譲ができない場合についても、無償提供するCloudflareのアカウントではCNAMEで代用する事ができます。

Step2. CNAMEの設定をする

CloudflareのDNS管理画面で、利用したいサブドメインとオリジンとなるレコードをCNAMEで設定してあげます。

設定が終わりましたら、設定したドメインへアクセスして正常にオリジンの画面が表示されることを確認します。一旦オリジン側はAWSのALB+EC2構成で、nginxを表示させています。

Step3. Cloudflare Waiting Roomを設定する

続きましてCloudflareのWaiting Roomを設定してきます。

設定内容は次の通りで、「待機室の名前」、「設定するホスト名」、「アクティブ ユーザーの合計数」、「分単位の新規ユーザー」、「セッション時間」を設定します。ここでオリジンに流すユーザー数を設定する事ができます。

続きまして、Waiting Roomで表示されるHTML(もちろんJavaScriptも実行可能)を指定します。デフォルトの物もありますが、日本語化したHTMLを用意しておりますので、こちらを設定して保存します。

これだけで設定は完了です。この解説記事を書きながらでも5分以内に設定できました。

負荷試験をする

Waiting Roomを試すために負荷テストを行ってみます。こちらの記事で紹介されているCloudFormationで簡単にデプロイできる負荷テストツールで負荷を掛けてみます。

たくさんリクエストを投げてみましょう。今回は5分で同時リクエスト数が6000となり、1時間負荷を掛け続ける設定を組んでみました。

しばらく負荷を掛けた後にアクセスしてみると、Cloudflareで設定したWaiting Roomが表示されていることを確認できます。表示されている待ち時間は先程設定したユーザー数に基づき表示されて、順番が来たらオリジンへ自動で転送されてワクチンの予約ページにアクセス出来るようになる、という仕組みです。

アナリティクス

負荷テストツール側では大量のリクエストを1件も5XXエラーを返さず、Waiting Roomの画面を返却できていることを確認できます。

Cloudflare Waiting Roomの画面ではキューに何人追加されているのかを確認する事ができます。こちらの人数とオリジンの負荷状況を見ながらオリジンへ流すユーザー数を変更することで、待機時間を短くすることができます。

ClaoudflareのAnalytics機能でもどれくらいのリクエストが来ているのか、200を返せているのかなどの情報も可視化する事ができます。

攻撃・DDos・Bot対策もこれで1つでOK

Cloudflareでは得意分野としてDDos Protectionが上げられる程で、CloudflareのHTTP Proxyを経由する事で大半のDDos攻撃はブロックすることもできますし、OWASPのマネージドルールも設定できるため、SQLインジェクション、クロスサイトスクリプティング(XSS)などの攻撃をWAFで弾くことができます。

Cloudflare Webアプリケーションファイアウォール(WAF)について

Bot対策についても完璧で、Cloudflare Super Bot Fight Modeを有効にすると悪意のあるトラフィックのみをブロック(もしくはreCAPTCHAチャレンジ)できて、Waiting Roomの悪質な占領も回避する事ができます。

そういった細かなテクニックを紹介しているブログも公開されておりますので、ぜひ合わせてご覧下さい。

まとめ

Cloudflare Waiting Roomを使うことで超簡単にWaiting Roomを設定できます。従来の「CDNでキャッシュさせて頑張る」などの考え方とは違うため、動的コンテンツでも設計を変更する必要はないですし、オリジンの負荷に合わせながら調整する事ができるため、「ワクチン予約サイトが落ちてF5連打する人が増えて余計負荷が大変な目に遭う」事態を回避する事ができます。

日本では現在高齢者向けにワクチン接種が開始されていますが、年齢層が低くなっていくとサイトを利用したワクチン接種の予約需要が増えて行き更にリクエスト数が増えていくと思いますので、是非下記よりご相談ください。

お問い合わせフォーム