Azure トップ > メイキング・オブ mixi Xmas 2011
もうすぐクリスマス。日本のネットシーンにおけるクリスマスの一大イベントといえば Mixi Xmas。3 回目を迎える今年も楽しんでおられる方も多いのではないでしょうか?
日本最大規模のソーシャルイベントである Mixi Xmas 2011、実は Windows Azure で動いているのです。
mixi Xmas 2011
(mixi アカウントへのログインが必要です)
こちらは、11/30 ~ 12/25 の期間に利用可能なソーシャルアプリで、アプリ上でくつしたを飾って、友人のベルを鳴らし合ったり、イベントに参加したりすることでレベルアップ、プレゼントに応募できる仕組みになっています。また、mixi の決済機能を用いて、友人へギフトを送ったりすることができる機能も備えています。
PC はもちろん、携帯電話やスマートフォンにも対応、12/20 時点で 250 万ユーザーが利用するアプリとなっており、 Windows Azure コンテンツ配信ネットワーク (CDN: Contents Delivery Network) が活用されています。12/16~18 にはテレビ CM と連動したキャンペーンが展開され、Windows Azure の拡張性を活用して柔軟にスケールアウトさせることにより、突発的なアクセス増加にも対応しています。
ここでは Windows Azure を使うことになった背景や簡単な技術解説をまとめます。
昨年まで Google App Engine(以下、GAE)で運営されていたのですが、今年はマイクロソフトが IE9 の普及のためにスポンサーになることをきっかけとして、バックエンドを Windows Azure にする検討を開始したのが夏の終わり頃。その後、簡易的なパフォーマンス検証と見積もりをクリアして、採用に至っています。利用者数の伸びが読めず、瞬間最大風速的なスパイクのあるアクセスをさばく必要がありながら、約1ヶ月の短期利用という、まさにクラウドにおあつらえ向きな日本最大規模のソーシャルイベントを大きな事故なく、Windows Azure でご支援できたことを非常に光栄に思います。混雑時に多少のご不便はおかけしたかもしれませんが、常連ユーザーのみなさまからは昨年よりつながりやすくなったとのありがたいコメントも頂いております。
Google App Engine で動いていた昨年版のアプリをベースに開発しています。再利用性の観点から Java のコードをそのまま Windows Azure で動かそうという話も検討はしましたが、主にデータアクセスまわりで独特の実装となっている Google App Engine のアプリを強引に移植するのではなく、Windows Azure での安定性とパフォーマンスを重視して ASP.NET MVC3 で新規開発しています。
企画および全ての画面デザインや UI デザイン、PC 向けの Flash、スマホの演出部分の構築はバスキュール号が、スマホ、ガラケー向け画面含むバックエンドは Windows Azure での開発運用経験豊富な FIXER が担当し、200 画面を超える規模の開発を実質約 1ヶ月で完了しています。
データの格納先はリレーショナルデータベースである SQL Azure ではなく、主に Key Value Store である Table(GAE での Big Table に相当)を利用。非同期処理のために、Queue(GAE での Task Queue に相当)を活用しています。
キャンペーン向けの短期開発ということもあり、サービス開始当初、アプリのチューニングが間に合わなかった場面ではインスタンス数を増やしてパフォーマンスを補う対応もしていました。最終的には性能改善をはかっているものの、限られた時間の中で、アプリの性能をクラウドリソースでカバーできたのはプロジェクト的に助かっています。
11月28日のサービス開始後、49時間で 100万人に到達。昨年より 9時間ほど早い急激なユーザー数の伸びに Web サーバーおよび Memcached を増強して対応しています。パフォーマンスカウンタなどで状況をトラッキングしながら本番環境で遅い処理を発見し、機動的に修正を加えており、複数台のインスタンスを順次更新してゆくインプレイスアップグレードによりアプリ更新をダウンタイムなしで実施しています。
アプリの性能改善で重視していたのは非同期系のバランスです。サービスの仕組み上、更新がリアルタイムに反映されなくてもよさそうな更新系の処理は Queue 経由にすることでフロントの応答時間を短縮しつつ、Mixi API やマスター系のデータ参照はキャッシュ経由に切り替え、キャッシュの生存期間を調整しています。
12月16日から 18日にかけて 3夜連続で 24時前に放送された TVCM と連動した企画では、アクセスの集中を予期して動的生成しなくてもよいコンテンツを中心に構成した上で、東京のCDNを活用しました。ちなみに、アプリ本体は香港のデータセンターで稼働しています。
今回のプロジェクトを通じて、Windows Azure はもちろん、ASP.NET もアプリをしっかり作っていれば高負荷環境で良好なパフォーマンスを発揮できることを改めて証明できたと思います。
かかるサーバー費用は実質値上げ前の GAE で運用していた昨年実績に比べて若干増えたものの、TVCM 連動などの新しい試みを安定して提供することができました。期間限定サービスということもあり、ピーク時に大量のインスタンス並べたとしても費用面でのインパクトはさほど大きくなく、やはりキャンペーンサイトでの Windows Azure 活用は相性がよいです。
クリスマスまであと 3日。今年も Mixi Xmas でみなさんにちょっとステキなユーザー体験をご提供できたのは、運営主体であるバスキュール号の企画力、開発運用を担当した FIXER の粘り強さ、いろいろな支援をしてくれた開発者コミュニティ含むマイクロソフトの総合力が成功要因であったかと。この場をお借りして、Mixi Xmas 2011 にご協力頂いた皆様に改めてお礼申し上げます。さらにぶっちゃけたお話はコチラのブログ (Azure の鼓動)
でご紹介します。
メリークリスマス!
スマートフォンを含むモバイルアプリケーションやソーシャルアプリケーション、ゲームといった分野でクラウドの活用が進んできています。詳細は下記をご覧ください。