Webサイトの高トラフィックイベントに備える方法
スイス最大の祭典であるチューリッヒフェストに向けて、Previon Plusと協力して最適なユーザー体験とサイトパフォーマンスを実現した過程をご紹介します。アプリケーションとホスティング、特にコンテンツデリバリーネットワーク(CDN)に焦点を当てた入念な準備が、イベントの成功にどのように貢献したかをお伝えします。
大規模イベント用に作成されたウェブサイトは、通常の企業サイトとは大きく異なります。イベント中に数千人の訪問者が同時にアクセスする突発的な高トラフィックに対応する必要があるためです。このようなイベントサイトでは、予想される高トラフィック期間中の最適なユーザー体験を優先しなければなりません。十分に準備されたチームが協力してユーザー体験を最適化すれば、成功の可能性が高まります。
私たちはパートナーであるPrevion Plusと共に、チューリッヒフェスト(Züri Fäscht)のウェブサイトに対して、まさにそのような取り組みを行いました。チューリッヒフェストはスイス最大の祭典で、3年に1度開催されます。今年のイベントは7月7日から9日まで行われました。この3日間のイベント期間中、約200万人の訪問者がチューリッヒ市を訪れます。チューリッヒフェストのウェブサイトの主な目的は、この期間中の出来事を訪問者に知らせ、3日間の祭典中に訪れたいと考えているイベント、食事の選択肢、アクティビティをブックマークできるようにすることです。
これをイベント当日とその期間中に成功させ、ウェブサイトを最適に機能させるためには、緊密な協力と入念な準備が不可欠です。私たちの準備は祭典の5ヶ月前から始まり、Previonとamazeee.ioのチームが任務と目標を一致させるためのミーティングを行いました。共に、サイトの信頼性、パフォーマンス、稼働時間を維持するために、次の2つの主要分野に焦点を当てました:
1. アプリケーション
2. ホスティング、特にコンテンツデリバリーネットワーク(CDN)にフォーカス
最初に取り組んだのはアプリケーション、今回はDrupalコンテンツ管理システム(CMS)を使用しました。Previonはウェブサイトをデザインし、使いやすい祭典プログラムページとブックマーク機能を作成するために多くの労力を費やしました。特定のイベントをマークし、個人のリストに追加するためのJavaScript機能を実装しました。この方法には、訪問者のデバイスの処理能力を活用しながら、データベースインフラストラクチャの負荷を軽減する(この場合、95%以上)というメリットがありました。
次のステップでは、ウェブサイトのホスティングの課題に取り組みました。ここで重要なのは、ウェブサイトの訪問者からの負荷が、私たちのインフラストラクチャで管理可能な範囲内に収まるようにすることでした。私たちの解決策は、コンテンツデリバリーネットワーク(CDN)を使用してユーザーにコンテンツを提供し、このようなハブの効率性を活用することでした。チューリッヒフェストのDrupalサイトはCDNを利用するために特別に設計されていたため、以下のモジュールを事前にインストールしました:
Fastly
FastlyモジュールはDrupalサイトをamazeee.ioで使用するCDNに接続します。Fastly Service IDやDNS処理に必要なパラメータなどの基本設定は、このモジュールで設定されます。
HTTP cache_control
CDNが何をどのくらいの期間キャッシュできるかを知るために、すべてのサイトでキャッシュヘッダーを設定する必要があります。このモジュールはDrupalのキャッシュ制御ヘッダーを細かく制御することができます。
Purge
サイトのコンテンツが更新または削除された場合、CDNも適切に更新する必要があります。Purgeモジュールは、古いコンテンツが適切にクリアまたは更新されるようにします。
Drupalモジュールはアプリケーションの一部であり、したがってPrevionが対応しましたが、私たちのCDNスペシャリストは、Fastly CDNサービスが状況に応じて正しく設定されているかを確認する必要がありました。私たちの標準的な運用モデルでは、設定管理システムを通じてサービスを自動的に更新していました。しかし、このような特別なイベントでは、キャッシング能力を最適化し、微調整する必要がありました。キャッシングを成功させるために重要な2つの指標は以下の通りです:
ヒット率:CDNが処理したヒット(リクエスト)の割合(%)
キャッシュカバレッジ:総リクエストに対するキャッシュ可能なリクエストの比率
長年のDrupalホスティング経験が、CDN設定の基礎となりました。予想されるトラフィック負荷に対して余裕を持って対応できるよう設定しました。
「約200万人の訪問者に常時ウェブサイトを利用可能にするという点で、私の側にも当然ながら一定の緊張感がありました。そのため、amazeee.ioとの専門的な意見交換とプラットフォームの最適化が重要であり、それは完璧に機能しました。amazeee.ioが有能で信頼できるパートナーであることが、再び示されました。」
– Thomas Werthmüller, Head of Technology, Previon Plus AG
祭典に向けて数日前から、トラフィックは徐々に増加しました。これにより、予想されるトラフィックパターンとユーザーの行動について把握することができました。
イベントの3日前にシステムへの攻撃がありました。この攻撃は40秒間で140万ヒットを生成しました。これは非常に短時間で大量のリクエストであり、祭典当日の40秒間に予想されるリクエスト数をはるかに上回るものでした。攻撃の意図は明らかに悪意のあるものでしたが、使用している技術と、このような場合に自動的に適用されるルールセットへの信頼を確実に高めることができました。また、システムとプラットフォームの追加最適化を見出す機会にもなりました。
私たちのチームは、イベント前日の夕方にCDN設定の最終調整を行いました。その夕方にはPrevionにも結果を報告しました。最終的なCDN設定は、祭典初日の午前11時に適用されました。その結果、キャッシュカバレッジは99%をはるかに超え、ほぼ完璧な状態になりました。さらに、Previonは正午に、すでにトラフィックが大幅に増加しているタイミングで、アプリケーションの最後の変更をデプロイしました。これらの最後のデプロイメントが、私たちが実装した最後の変更でした。しかし、これは私たちの仕事が終わったということではありません。バックエンドでの動きや出来事を引き続き注意深く監視し続けました。
上のグラフ1)に示すように、トラフィックは7日間で一貫して増加しています。また、7月4日の夜(失敗した攻撃)のトラフィックスパイクと、7月7日の正午頃(下のグラフの黒い線)のCDN設定への最後の変更が見られます。
祭典自体のタイムライン(上のグラフ2)を見ると、非常に典型的なユーザー行動パターンが見られます。朝からトラフィックが増加し始め、ランチタイム頃(グラフでは午前10時)にピークを迎えます。2回目のピークは午後遅くに達し、訪問者が夜の計画を立てている時間帯です。最後のピークは午後10時頃で、ユーザーがどのパーティーに参加するかを探している時間帯と思われます。
ヒット率は、サイトの安定性を測るもう一つの重要な指標でした。「良い」ヒット率がどの程度高いかについての明確なベンチマークはありません。広く受け入れられている説では、90%以上であれば良いとされています。したがって、イベント期間中の96.64%というヒット率は十分に満足のいくものでした。
祭典期間中に監視した最後の重要な指標は、キャッシュカバレッジでした。この指標を99%以上に押し上げるために、イベント前日のトラフィックデータに頼る必要がありました。ウェブサイトの主な目的が情報提供(訪問計画のため)であったことから、イベント直前に最も訪問されたサイトが、イベント中に最も高いトラフィックを受けると予測できました。イベント前日の夕方に、この発見をPrevionと共有し、特定されたサイトを適切に改善できるようにしました。手を取り合って作業した結果、イベント当日の正午頃のキャッシュカバレッジに小さいながらも重要な違いが生まれ、キャッシュカバレッジは約95%から99%にまで押し上げられました(下のグラフ3)を参照)。
私たちの入念な準備は功を奏しました。イベント中は、上記の指標とサイトを注意深く監視しながら、リラックスして祭典を楽しむことができました。
「成功する高度にスケーラブルなプロジェクトには、ホスティングプロバイダーからウェブサイトを構築する代理店まで、複数のチームが協力する必要があります。高トラフィックイベントに向けて、私たちは数回のミーティングと改善のラウンドを重ね、スムーズな運営を確保するために発見事項をまとめました。イベント中は、コミュニケーション方法を簡潔にし、私たちが『エンジンルーム』で見たことを代理店に伝え、必要に応じて改善や変更を実施することに焦点を当てました。」
– Bastian Widmer, Platform Lead, amazeee.io
主要な指標を非常に高いレベルに保つことで、インフラストラクチャクラスターへの負荷を最小限に抑えることができました。そのため、需要に応じて急速にスケールアップできるようにクラスターを構築していましたが、それを試す必要はありませんでした。
まとめると、高トラフィックのウェブサイトイベントに向けて、以下のステップを適用し最適化することをお勧めします:
ユーザー体験に焦点を当て、効率的に提供できるようにアプリケーションを構築する。
CDNを通じてキャッシュが可能になるようにアプリケーションを設定し、必ずテストを行う。
できるだけ早くホスティングパートナーを関与させ、ホスティングプラットフォーム上でアプリケーションがスムーズに動作することを確認する。
イベント中は、関係者全員の間で直接的なコミュニケーションチャンネルを確保する。
一定の緊張感を持つこと。何かが起こった場合に備えて警戒を怠らないことが重要です。
amazee.ioのZeroOpsアプリケーションデリバリープラットフォームが、あなたの技術的課題の解決や戦略的目標の達成にどのように役立つかをお知りになりたい場合は、🗓️ 今すぐ無料の技術デモをスケジュールしてください。