恐ろしいWebサイトの「バースト」現象
前回に続いて、今回もECサイトやSNSサービスに代表されるBtoCサイトの負荷対策についてお話ししたいと思います。
皆さん、よく利用しているECサイトやコミュニティサイトなどがつながりにくかったり、ページ表示がものすごく遅かったりして、「どうなってるんだ!」とストレスを感じた経験が一度はありますよね。BtoC系のWebサイトでは、予期せぬ大量のユーザアクセスが原因でスローダウンしたり、最悪サイト自体が停止してしまうケースもあります。このようなサービス障害を引き起こすのが、短時間でのアクセス集中、すなわち「バースト」です。
今回は、筆者が経験したECサイト運用現場での事例をもとに、ユーザアクセスの傾向例を紹介しつつ、バーストへの対策について解説します。
バーストが引き起こされるパターン
一口にバーストと言っても、その発生原因は「参照が多い」のか「更新が多い」のか、はたまた、参照であっても「静的コンテンツへのアクセスが多い」のか「動的ページ生成が重い」のかなどさまざまです。バーストへの対策はこうした負荷特性によって変わってきます。
ここでは、私が過去にチューニングに携わったECサイトの中から、アクセスが集中するケースの代表的なパターンを3つ紹介します。
パターン①|国内通販サイトA「PC向けメールマガジン配信、ガラケー向けメール配信、夜間の購買ピークで異なる特性」
このケースでは午前中に「50%OFF!」など特売情報をメールマガジンで告知したタイミングで、急激ににアクセスが集中しています。特徴的なのが、カートへの投入や購買といった更新を伴うアクセスは夜間帯のほうが多いことです。自宅でじっくりと検討できる夜間帯のほうが商品の購入を決断しやすいといったユーザの心理傾向が見て取れます。
パターン②|海外通販サイトB「バナー広告出稿タイミング、SNSのプッシュ通知のタイミングでアクセスが集中」
このケースでは、バナー広告の出稿とSNSでのプッシュ通知でアクセス集中のパターンが大きく異なることが特徴的でした。
バナー広告の出稿後は、アクセスされるページの分布はそのままで、アクセス量全体が大きく底上げされているのに対し、その直後に実施されたSNSアプリ(スマートフォンアプリ)によるプッシュ通知では、メッセージ内のURLへのアクセスのみが急激にバーストしています。このタイミングでは、サイト全体がスローダウンしてアクセスが受け付けられない状態が発生していました。実際には、この数倍以上のアクセスが来ていたのかもしれません。BtoCサイト運営の恐ろしさを感じます。告知媒体やプロモーション内容によるアクセス傾向の違いを事前に把握しておくことが、いかに大切であるかを痛感した出来事でもありました。
また、次に示すグラフ②-1は動的に生成されるページへのアクセスのみを可視化したグラフ、グラフ②-2はcss、js、gifといった静的コンテンツを含めたグラフです。このパターン②の事例では、全体の8割以上を静的コンテンツが占めており、ネットワーク帯域の圧迫も問題となっていました。
パターン③|国内通販サイトC「特定の人気商品の発売にユーザが殺到」
パターン①、パターン②のケースでは、商品一覧ページや個別の商品ページでも比較的多品目にアクセスが分散される傾向にあったのですが、このパターン③のケースでは、事前告知されていた人気商品の販売開始のタイミングで、特定の商品ページにアクセスが一気に集中しました。
多品目な日常品を扱うECサイトとは異なり、玩具や書籍などを扱うECサイトでは、限定品や口コミによる人気の集中でサイトのキャパシティに到底見合わない量のアクセスが集中することがよくあります。
似たケースとして、某中古品販売サイトで、毎日商品の在庫が補充されるタイミングでアクセス集中と、それに伴うレスポンス遅延が発生していました。集中しているURLを解析したところ、エンドユーザが登録しておいた商品が入荷するとそのユーザへ入荷が通知され、その通知結果を確認するページにアクセスが集中していることが判明しました。掘り出し物の争奪戦によって、アクセス集中が引き起こされていたのです。
メルマガやSNSアプリのプッシュ通知、ポータルサイトへのバナー広告出稿などで発生するアクセスの集中なら、発生のタイミングを事前に想定できます。しかし、人気や話題性などで通常以上にアクセスが集中する可能性がありますし、Twitterや2ちゃんねるで話題(祭り?)になって一気に大量のアクセスが集中することもありえます。また、中古品販売サイトのケースのように、ユーザが能動的に行動を起こすことで生じるバーストは、事業者側が意図しないタイミングで起きるため、対応も後手に回りがちで厄介です。