モバゲーオープンプラットフォームに挑戦!――面白法人カヤック流モバゲーオープンプラットフォーム企画と開発のイロハ

第3回安心!お手軽!クラウドで始めるモバゲーアプリ AWSの魅力

モバゲーアプリの話のはずなのに。。。突然質問“AWS”ってご存じですか?

AWS(Amazon Web サービス)とはAmazonが提供する開発者向けサービスの総称です。

AWS
URLhttp://aws.amazon.com/

AWSには各種のサービスが提供されていますが、ここでは主に「クラウド」として知られるEC2などのサーバ関連技術に関して説明したいと思います。

EC2は簡単に説明すると「サーバの時間貸し」のようなもので、初期費用0円で必要な台数を必要なだけいつでも数分のうちに借りることができるという画期的なシステムです。

携帯サービスの強い味方!AWSの魅力

「なぜモバゲーアプリの説明にAmazonの説明が出てくるのか?」と思う方もいらっしゃるかもしれませんが、現状1から巨大な携帯サービスを立ち上げる際のサーバ環境として、AWSという選択肢は非常に有力なものになっています。

その理由として携帯サービスの場合、ヒットした際のサーバ負荷がPCサービスと比べて逼迫する場合が多く、⁠サービスがヒットするとサーバリソースが不足し、サービスがヒットしないと確保していたサーバが無駄になる」という状況に陥りやすくなります。

また、⁠公開初日は日に1,000万PVあったが、一週間後は日に100万PVしかない」という状況になった場合、既存のレンタルサーバでは「増設を依頼している間にPVが下がってしまい、結局増設したサーバが無駄になった」ということも発生してしまいます。

この点AWSを使用するのであれば「公開の数時間前に100台用意して、公開後様子を見ながら1時間ごとにサーバを減らす」といった対応が可能となり、サーバリソースに関しては事前見積もりの必要性が大きく下がります。

また、AWSの利点として、サーバの内部に関しては通常のレンタルサーバ等と近い環境であるため、GAEなどと比べて「既存の開発手法を流用しやすい」⁠他に魅力的なサービスが出てきたときに移行しやすい」と言う点も上げられます。

AWS自体、通信速度等において既存のサービスと比べて問題となる点はありますが、一方で内部のサービスが既存のアプリケーションと近い構成で開発できるため、他の魅力的なサービスが登場した場合そちらにまるまる移行するといった対応が行いやすくなります。手軽で簡単に導入できるとはいえ、ゲームの内容如何により使用するサービスが異なったり、いざ導入しようとすると企業によっては見積もりの算出が必要だったり、という課題も浮上します。

そこで実際にAWSでWebサービスを構成する場合に検討すべきサーバの基本構成から、クラウド導入時に問題となりやすい費用計算、そのほかAWS特有の問題点を紹介します。

実際何を選べばいい?Webサービスを提供するときの基本構成

まずはAWSで選択できるサーバに関して紹介します。

AWSでは必要に応じて使用するサーバを選択でき、性能に比例して1時間あたりにかかる費用も高くなっていきます。サーバには大きく分けて32bitと64bitが存在し、同じbit数のサーバであれば比較的簡単に別の性能のサーバに乗り換えることができます。

32bitサーバ
Small
High-CPU Medium
64bit
Large
Extra Large
High-CPU Extra Large
High-Memory Double Extra Large
High-Memory Quadruple Extra Large
各サーバの具体的な性能、価格に関してはAWSのEC2ページをご覧ください。

それでは実際にサービスを提供する場合、各役割ごとに選択肢となるサーバの構成を紹介します。

Webサーバ

構成が単純なゲームの場合32bit High-CPU Medium、複雑なゲームの場合64bit High-CPU Extra Largeをおすすめします。単純なゲームは後々PVが下がっていく可能性が高く、状況に応じて32bit Smallでの運用に切り替えて費用を抑えることもできる32bitは小回りがきく点で魅力となります。

構成が複雑なゲームの場合、32bitではCPU負荷的に台数が多くなりすぎるため64bitでまとめてしまった方がいいでしょう。

DBサーバ

弊社では簡単サービスの場合は1台のRDSに共存、複雑なゲームの場合は64bit High-Memory Double Extra Largeをマスターとするレプリケーション構成で使用しています。

RDSとはAmazonの提供するMySQLのクラウドサービスのことで、通常のEC2サーバにMySQLを導入する場合に比べて容易にMySQLサーバを立ち上げることが可能です。

RDSの利点として、⁠設定が容易なこと⁠⁠、⁠AWSのSecurity Groupsと連携できること⁠⁠、⁠容易にスケールアップができること⁠⁠、⁠バックアップ、スナップショット等の環境が用意されていること」等があげられますが、⁠OS自体のエラーログが見られない⁠⁠、⁠レプリケーションができない⁠⁠、⁠設定の変更にInstance rebootが必要⁠⁠、⁠バックアップが遅い⁠⁠、⁠週一のメンテナンス時間が必須で無停止にできにない」等の問題があるため、DBが重要となるゲームにはあまりおすすめしません。

memcached

複雑なゲームの場合でも32bit Smallの複数台構成で運用可能です。

memcachedはCPUの要求が低く、32bit Smallでも1.7GBのメモリがあるため、かなりのPVであっても32bit Small数台である程度カバーできます。

ロードバランサ

弊社ではすべてElastic Load Balancerを使用してWebサーバをバランスさせています。

Elastic Load BalancerとはAmazonの提供するロードバランサのことで、通常のEC2サーバにApache等を導入してロードバランサとして利用する場合に比べて容易にロードバランスを利用することが可能です。

大きなサービスの場合Webサーバのメモリ使用量を減らすため、静的なファイルを配信するhttpdと動的な内容を処理するhttpdを分ける場合もありますが、携帯サービスの場合静的なファイル量が多くないことや必要に応じてS3やCloud Frontを使用することで対応は可能となります。

いくらかかるの?費用計算

クラウドの欠点のひとつに事前に費用が予測できないという問題があり、⁠気がついたら使用料が莫大な額になっていた」ということが発生する可能性があります。

ただ、AWSに限って言えば不確定な部分はそれほど多くなく、弊社の大規模ゲームでも使用料の大半は1時間あたりのサーバ費用であり、予測が困難な部分(転送料、ストレージ料、I/Oなど)は全体の2割に達していません。

もちろんサービスによっても変わりますが、そもそもサーバの台数が少なければ自然と処理できるPVにも限界があるため、基本的にはサーバの台数、性能からある程度は請求額を事前算出することが可能だと考えています。

ここに気をつけて!AWS導入時の注意点

準備は整った!さあ導入しようとなった時に落とし穴となりそうなところをあげます。

決済はクレジットカードのみ

AWSは基本的にクレジットカードでの決済しか対応しておらず請求書での支払いをできません。これはつまりクレジットカードの与信枠以上のサーバを追加できないことを意味します。

米国では100万程度からはクレジットカード以外の決済を受け付けているとのことですが、日本の場合当面は「クレジットカードを複数用意する」といった対応が現実的ではないかと思います。

為替変動の危険性

海外サービスに共通していえることですが、AWSの費用に関してはすべてドル建てで決済されるので、円安になった場合事前に予測した費用と実際の請求額がずれる危険性があります。

データセンターの場所による弊害

AWSのデータセンタはUS、EU内にしか存在しません。そのため、国内からの通信は200~300ms程度の遅延が発生するという問題もあります。これに関しては「一部国内のサーバも兼用する」といった方法もありますが、あまりこれといった解決方法はありません。 2010年の前半にはシンガポールにデータセンターができるとのことなので、こちらのデータセンターであれば日本からの遅延はある程度緩和されるのではないかと期待しています。

いざ導入!参考にしたいサイト・書籍3

導入を考えている方に参考となりそうなサイトや書籍を紹介したいと思います。

1.『クラウド Amazon EC2/S3のすべて~実践者から学ぶ設計/構築/運用ノウハウ~』(日経BP社)

AWSの基本的な使い方から実践的な対処法まで参考になる情報がまとまっています。他のAWS関係の書籍は持っていませんが、この内容で不足を感じることはあまりありませんでした。

2.RX-7乗りの適当な日々

上記書籍の著者が書かれているブログです。書籍は発行後公開されたサービスに関しての情報は書かれていませんが、ブログでは最新情報も紹介していただいているので非常に参考にしています。

3.tech.kayac.com - KAYAC engineers' blog

手前味噌ながら、弊社技術ブログです。AWSに関しての記事はまだ多くありませんが、Tipsを中心に今後公開していきたいと思います。

個人でのアプリ開発も夢ではない。クラウドの可能性

これまでWebサービスの参入障壁として「大規模サービス向けのサーバ群」というものがありました。いくらヒットするWebサービスを開発してもサーバを用意するのに手間取ったり、少ないサーバをやりくりするためにプログラマがリソースを取られて新しい機能を開発できないといった状況に陥り、その間に大企業が巨大なサーバ群とともに類似サービスを展開することでユーザを奪われてしまうということです。

その点、今注目されているクラウドは既存のレンタルサーバに比べて初期費用が低く構成が柔軟に変えられるため、場合によっては個人でも大規模なサービスを提供するためのサーバ群を用意することが可能になります。また、モバゲー、mixiに代表される大規模SNS向けのアプリを開発することで、高額な広告費を支払うことなく多くのユーザの目に触れる機会を得ることができます。

現在携帯SNS向けアプリの開発は企業のみにしか解放されていませんが、アプリのユーザ数ランキングを見ても必ずしも企業規模と順位が一致しないことから、⁠大規模サービス向けのサーバ群」という参入障壁は徐々に崩れていると感じています。

おすすめ記事

記事・ニュース一覧