Apacheからnginxへ ~日々変動するオウンドメディアのトラフィックにどう対応するか~
プロダクション部門Webデザイン&デベロップメントユニット長の磯和太郎です。
昨年「オウンドメディアのためのインフラ選定、6つのポイント」(前編・後編)というタイトルで、オウンドメディア構築のためのサーバーやネットワーク選定に関する基礎的な知識について整理させていただきました。今回は、前回の記事から変化したトレンドを踏まえ、安定した運用を目指すためのTipsをお伝えしたいと思います。
まず大前提として、オウンドメディアの運用がいかに重要になってきているといえども、それだけで世の中に浸透できるわけではありません。オウンドメディアでは一般的に自然検索からの流入を重視しますが、それだけで集客が十分満たされるのは幸運なケースでしょう。
かといってオウンドメディアで記事を掲載する度に「ペイド」の広告を掲載するわけにも行きませんので、次なる期待はほかのブログやSNSでの紹介、バズに向かうことになります。
ヤフー砲とは
そしてこういった他メディアからのアクセスの中で、もっとも集客パワーを持ち得る流入元のひとつが「Yahoo!トピックス」であることに異論を唱える人は少ないのではないでしょうか。
Yahoo! JAPANサイトのニュースコーナーであるYahoo!トピックス(通称:ヤフトピ)は、日本のアグリゲーションニュースサイトの先駆けかつ代表といえる存在です。2014年6月現在の媒体資料でも、トップページで月間500億、下層のニューストップでも月間40億以上のPVを誇る、まさにお化け媒体です(詳細は「ヤフー・トピックスの作り方」[光文社新書]といった書籍をご覧になるのが早いかと思います)。
とにかく、個人ブログも企業のオウンドメディアも、ヤフトピや関連ニュースに記事が掲載されることで一気に流入が拡大し、サイト全体で月間10万PV、1記事で数百PVといった規模のサイトでも、数時間の間に数千からそれ以上の規模でアクセスが発生する状況となり得ます。
これを業界では「ヤフー砲」と呼んでおり、「昨日うちのサイトにヤフー砲がやってきた」といった表現をすることになります。
最近のネットでは、こういった「○○砲」による流入アクセスが、かつて「TVで紹介される」ことの代わりに、あるいは同等の話題になっているのが現状です。
※最近では「Gunosy砲」といった表現や、キャンペーン告知界隈では「LINE砲」もすごい、といった類似例も出てきています。
もちろん、これらのアクセスをすべて受け止められれば、サイトにとっては認知獲得の大きなチャンスとなりますが、逆にサーバーダウンが発生すれば、その間にサイトに訪れたユーザーは中身を知ることができません。
また再来訪のきっかけも失ってしまいますし、信頼という面でもよい印象は与えません。
ヤフー砲にどう対応するべきか
では、こういった○○砲をはじめとする突発的なアクセス増加に対して、どのような対策を取ったらよいのでしょうか。
一般的には、以下のような検討ができるかと思います。
- サーバー台数やスペックに余裕を持たせておく
- サーバー台数を自動的に増やせるようにしておく
- ミドルウェアやアプリケーションの構成・設定のチューニングを行う(今日のオススメ!)
まず、1. はもっとも古典的かつ基本的な考え方。
最大アクセス数を「想定」して、そこにさらにバッファを加えて必要なサーバーの台数を導き出すやり方です。
この算出でサーバー台数を見込むことは、もちろんできなくはないのですが、平常のアクセスとピーク時のそれとの差が大きくなり、「無駄に」強固なサーバー構成となってしまうのが難点です。当然予算も運用期間に比例して「無駄」にかかってしまうことになります。
また、キャンペーンサイトなどでは告知の期間やルートがはっきりしている場合が多いため、最大負荷が読みやすい部分があったのですが、現在は前述の「○○砲」がいつやってくるかなど誰もわからないため、特定の期間だけサーバーを強固にするというのは難しいのが現実です。
では、2. の「サーバー台数を自動的に増やせるようにしておく」というやり方はどうでしょうか。
これはサーバーを仮想的にすぐ立ち上げられるクラウド環境ならではの方法ですが、この考え方も当てはまる場合とそうでない場合があります。
たとえば、AWSではこの台数を増やす仕組みをAuto Scaling(オートスケーリング)と呼んでいますが、ある設定した負荷のしきい値を超えてアクセスが来た場合、実際にその機能が働いてアクセスを捌けるようになるまで、数分のタイムラグが発生してしまいます。
アクセスの大きなピークはその数分に集中することも多いため、結果的に一番必要な時にはその機能がまだ動作していなかった、ということになってしまいます。実際、AmazonのAWSでもお墨付きの構成としてこのやり方で事例を出されていますが、その資料でも「事前の仕込み」を推奨しています。
逆に「事前の仕込み」が難しい場合は、有効性が落ちるということになります。
ちなみに、弊社のグループ会社であるメディアジーンでは、某社の製品発表会のタイミングだけAWSのCloudFront(クラウドフロント)と呼ばれるCDN(コンテンツデリバリーネットワーク)を導入して、1100万PV/日を超えるアクセス数に耐えた実績がありますが、この方法は 1. と 2. の折衷(あるいは派生)版とでも表現できるやり方です。
※詳細はハートビーツ社の記事で触れられていますので参考にしてください。
最後に 3. の「ミドルウェアやアプリケーションの構成・設定のチューニングを行う」についてですが、今日のメインディッシュはこちらです。
この分野は最近大きなトレンド変化が発生しており、3. だけでかなりのアクセス増に対応できる新しいノウハウが確立しつつあります。
今回はその代表例を紹介します。
まず、世の中のWebサーバーといえば、この10年来「Apache HTTP Server」というオープンソースのWebサーバーがデファクトスタンダードとして君臨してきたことに疑いを持つ人はいないでしょう。開発者でなくとも「LAMP」(Linux / Apache / MySQL / PHP)という言葉に覚えがある人も多いと思います。
ところが最近になってこの流れを大きく覆すソフトウェアが登場しています。
それが「nginx」(「エンジンエックス」と呼びます)。
nginxもApache同様Webサーバー用のミドルウェアではあるのですが、設計思想が異なりアクセスが多く複数のWebサーバーを建てるような環境に向いているといわれています。
実際NETCRAFT社の調査において、アクセスの多いWebサイト上位100万におけるシェアで、Apacheが緩やかに下降しているのに対して、nginxは上昇を続け、20%に届く辺りまで到達しています。
W3Techs社の「上位10,000サイト」によるシェア調査では、その傾向がより顕著であり、2014年5月にはとうとうnginxがApacheのシェアを追い抜いたと発表しています。
詳しい両者の違いについては、たとえばこちらの解説資料(「Apacheコミッターが見た、Apache vs nginx」野村総合研究所)に任せたいところですが、ECサイトのような個別の会員に対して別々の内容を見せるようなサイトでなく、メディアサイトのように同じ内容を皆に見せる「キャッシュの効きやすい」ページが多いサイトでは、nginxの方がパフォーマンスが出やすい、という結果が色々と出ています。
弊社でも最近はnginxの環境を使うケースが徐々に出てきており、まず出来合いの環境としてはSix Apart社のMovableTypeクラウド版があり、自前で構築している環境としては、nginxをベースにしたWordPress環境があります。
具体的には以下のような構成を取っていますが、
今までApache HTTP ServerがWebサーバーとして設置されていた部分に、新たにnginxが入る構成となっています(厳密にはnginxはリバースプロキシーとしても動作しています)。
弊社の場合、nginxの導入と同時にCDNも構成に取り入れたりしているため、nginx単体での効果は正確に検証できていないのですが、EC2のc3.largeインスタンスを3台設置したWordPress環境では同時接続を100から1600まで増やしてもまだCPUやメモリに余裕がある状況でした。
もっとも上記の環境でまだヤフー砲に遭遇したわけではなく、値を公開できる段階にもないため、機会があればまたこの場を借りて紹介させていただきたいと思います。
※同様の検証については株式会社デジタルキューブの運営する網元でわかりやすく紹介されており、AWS上でnginxによるWordPress環境を構築するためのテンプレート(AMI)も提供されているので、そちらを参考にしてください。
ただ、ここまで読むと「全部nginxでやればいい?」という疑問を持たれるかも知れませんが、まだそこまで状況は進んでいないのが実情です。
Apacheに関してはネットや書籍などで様々なノウハウを得ることができますが、nginxではまだまだ情報は限定的で、企業のWeb担当者レベルの知識でさっと運用できるものとはいえない状況です。
たとえばBasic認証ひとつとっても設定方法が異なりますし、SEOとの関連でもよく話題になる「リダイレクト」の設定方法も違います。
加えて動的に生成される情報が多く、キャッシュが効きにくいサイトではそれほど効果を期待できないケースもあるようです。
それでも一度環境ができてしまえば、それまでと同じサーバー構成でより多くのアクセスを受け止めることができるわけですから、WordPressによるメディア運用といった特定の用途に関してnginxの導入を検討してみる価値は十分あるのではないでしょうか。
最後に、弊社ではまだ試していませんが、機能が強化され日本語の公式サポートの付いたNGINX Plusがサイオステクノロジー社によって2014年6月から販売開始されています。
それに合わせて生みの親であるIgor Sysoev氏らによるインタビュー記事も掲載されるなど、日本での動きも非常に活発になってきています。
これを期にぜひnginxに触れてみてはいかがでしょうか。