サイバーエージェントが開発したスマートフォン向けサービスのプラットフォームでは、データベースとしてHBaseを採用しています。ここでは、開発を担当した同社のAmeba Technology Laboratoryに所属する鈴木俊裕氏と善明晃由氏に、HBaseを採用した理由や開発で苦労した点などを伺いました。
HBaseにグラフ構造でデータを格納
自社開発のコミュニティサービスや、サードパーティも含めたソーシャルゲームをスマートフォン向けに提供するプラットフォームとして、サイバーエージェントで開発されたのが「Ameba」のスマートフォンプラットフォームです。FacebookやTwitter、mixiなど外部サービスのアカウントでログインできる利便性の高さ、そして一部外部のゲームメーカーが開発したソーシャルゲームを配信するオープンなプラットフォームであることなど、さまざまな特長を持つプラットフォームであり、同社におけるスマートフォン向け事業の中核を担う存在となっています。
この「Ameba」のスマートフォンプラットフォームは、「デカグラフ」と呼ばれている構想に基づいて開発が進められてきました。デカグラフは個々のサービスを「ミニグラフ」ととらえ、それを集約することによって大きなグラフ(デカグラフ)を実現するという構想であり、その土台となるのが「Ameba」のスマートフォンプラットフォームというわけです。
同様のプラットフォームは他社でも展開していますが、それらと大きく異なるのは「コミュニティ」を実現するためのプラットフォームであるということ。他社のプラットフォームはゲームを提供することに軸足が置かれていますが、「Ameba」ではさまざまなユーザが楽しめるコミュニティであることが前提となっており、ソーシャルゲームはその一部という位置付けです。
「Ameba」のスマートフォンプラットフォームにおいて、ユーザ情報を記録するためのデータベースを「HBase」で構築し、そして現在は運用を担当しているのがAmeba Technology Laboratoryに所属する鈴木俊裕氏と善明晃由氏です。鈴木氏はHBaseを採用した理由について、次のように説明します。
「Ameba Technology Laboratoryは、デカグラフ構想に技術選定から携わりました。その際にデータベースとして提案したのが、HBaseを利用してグラフデータベースを構築するというものでした。HBaseにしたのは、もともとAmeba Technology LaboratoryでHadoop環境を運用していてHBaseの経験があったこと、そしてスケーラビリティを担保できるという点ですね。扱うデータ量が大きくなっていくことが予想されたので、スケールしやすいという点でもHBaseが最適ではないかと考えたわけです(鈴木氏)」
ただ、HBaseを提案しつつ「たいへんなプロジェクトになるだろうな」という感触はあったと言います。
「これまではHBaseをバッチ系で使っていましたが、今回はオンラインなので当然難易度は上がるだろうと考えていました。バッチ系の使い方であればレイテンシやスループットに対する要求はそれほど高くありませんが、オンラインとなると素早くレスポンスを返せるかどうかが重要になります。このあたりはチャレンジでしたね(鈴木氏)」
スケーラビリティを左右するスキーマの設計
このようにバックエンドのデータベースにHBaseが採用されたわけですが、各サービス(ミニグラフ)が直接HBaseにアクセスするのではなく、フロントエンドに別のサーバ(ゲートウェイ)を用意し、API経由でデータにアクセスする形になっているとのこと。
「プロジェクトが始まって、まずはデータベースをどういう形にするか、どういったインターフェースを提供するのかといった点について検討を開始しました。インターフェースはHBaseであることを意識せずに使えるようにしていて、たとえばバックエンドがMySQLになってもそのまま使えます。また大規模なデータベースになることがわかっていたので、設計の時点からデータ量が増えてもスケールできるようにしています。HBaseはノードを追加すればそのまま性能が上がっていくという特徴があるので、そこでスケーラビリティを担保しています。難しかったのはスキーマの設計ですね。今でも『こうすべきだったか』と考えるときがあります(鈴木氏)」
設計が終わったあとの実装フェーズでは、HBaseのどのバージョンを使うかが悩ましかったと話すのは善明晃由氏です。
「HBaseはここ1年くらいでかなり多くの機能が追加されましたが、安定して動作するバージョンがなかなかなかったんですね。最終的にはHadoopディストリビューションである『CDH4』のbeta1を選択しましたが、そのバージョンで使われているHBaseとHDFSの組み合わせではパフォーマンスが出なかったのです。今のバージョンではすでに修正されていますが、当時はなおっていなかったので、しかたがなくHDFSだけを入れ替えたパッケージを作って回避しました。検証はその前のバージョンで行っていて、新しいバージョンが出たので切り替えたらパフォーマンスが出ない。そこで調べたところ、CDH4のHDFSが問題になっていることがわかったわけです(善明氏)」
このように「Ameba」のスマートフォンプラットフォームのデータベースは、あまたの苦労を乗り越えて完成に漕ぎ着け、現在ではさまざまなスマートフォン向けサービスを支えています。ただ、このあとも多くの苦労があったとのこと。次回も鈴木氏と善明氏にHBaseの構築や運用にまつわるお話を伺います。
- サイバーエージェント公式エンジニアブログ
- URL:http://ameblo.jp/principia-ca
エンジニアの生の声を週替わりでお届け中!