« July 2010 | Main | October 2010 »

August 06, 2010

ソーシャルアプリのサービスを行う際に考えておくべきこと

最近「ソーシャルアプリをやることになって、コンテンツは作れるけどインフラ周りが全然わからないので助けて欲しい」という相談をよく受けるので、よい機会ですので数回に分けてノウハウを記していこうと思います。というわけで今回はソーシャルアプリのサービスを行う際に考えておくべきことを記してみたいと思います。

【初期サーバ台数を多めにしておく】
「お金が無いので最初は少ないサーバ台数でサービスインをして、ユーザ動向を見ながらサーバを増やしていきたい」と思う人も多いと思います。

しかしソーシャルアプリの場合、サービスイン直後に大量のユーザが押し寄せてサーバダウンしてしまう場合が多々あることや、サービスイン直後に慌ててサーバ増強が必要となってもそれができる余裕がない場合も多いと思うので、初期サーバ台数を多めに準備しておき、ユーザ動向を見て事後にサーバ台数を調整するのが良いと思います。

【大量のテストデータを用意する】
よく聞く事例として「テストデータがほとんどない開発サーバ上でさくさく動いていてもいざ本番サービスに投入してみるとすぐに高負荷になって落ちてしまう」というものがあります。

DBテーブルのIndex貼り忘れ程度であれば早期に対応できますが、アプリケーションの構造に関するものであればすぐに対応できずサービスダウンが頻発して苦しむことになります。本番サービスに投入する前にかならず大量のテストデータ(数百万件とか)がある環境で負荷テストしてみましょう。

【極力早めに本番サーバに載せてテストする】
本番サーバを利用すると費用が発生してしまうので、サービスイン直前ぎりぎりまで本番サーバを用意しない会社も多いと思います。しかし実際にやってみると本番サーバの設定に思ったより時間が取られる、開発環境でうまく動いていても本番環境だと何故かうまく動かず原因究明に手間取る、また本番環境にしか必要でなくて準備をすっかり忘れているものがあって慌てて準備することが出てくる(ドメイン取得、DNS登録、SSL証明書取得などなど)といったことが起こり、結果としてかなり慌ただしい状態でサービスインを迎えることなります。

サービスイン直前はいろいろなタスクが集中するので、多少お金がかかったとしても事前にできることは事前に準備しておいたほうが良いと思います。

【スケールアウトできるようにアプリケーションを開発する】
開発中は1台の開発サーバ上で開発する場合が多いでしょうから、開発中はなかなかスケールアウト構成を意識することはないかもしれません。しかしソーシャルアプリの場合、サービスイン直後にいきなり高負荷になるケースがあり、その場合サーバ増強することですぐに負荷分散できるようにしておかないととても追いつきません。

スケールアウトできるようにアプリケーションを開発しておくことはもちろんのこと、サービスインの前に本当にスケールアウトできるかテストも行っておきましょう。

【マルチプラットフォームに対応できるようにシステムを構成する】
オープン当初は特定プラットフォーム上だけでサービスを行うこと前提だったとして、ビジネス判断として急遽他のプラットフォーム上でもサービスを行うことになるかもしれません。

そのようなときのために、まずアプリケーション側ではコンテンツ部分とプラットフォーム依存部分を完全に切り離しておくことで、プラットフォームを変える場合その部分だけを入れ替えることでプラットフォームを変えられる設計にしておくことが重要となります。

またシステム側では、プラットフォームごとにサーバを別に立てられれば理想的ですが、費用面でそれが叶わない場合同じサーバに同居せざるを得ないことがあるかもしれません。そんな場面を想定して予めそのようなことができるシステム構成を考えておきましょう。

【まとめ】
今回記したことは、つまり常に先の先を考えて事前に準備しておくということに尽きるのではないかと思います。多分今回記したことは「そんなの当たり前じゃないか」と思われる方も多いと思います。しかし実際やってみると、その当たり前のことが目の前のタスクに忙殺されて当たり前でなくなってしまうということが本当によくあります。

つまり「先にできることは先にやっておく」というのが最大のノウハウなのかもしれません。

| | Comments (0) | TrackBack (0)

« July 2010 | Main | October 2010 »