スマートフォン広告×テクノロジー最前線

第2回 稼働率100%のインフラを支える技術

この記事を読むのに必要な時間:およそ 1.5 分

CyberZが提供する広告効果測定ツール「Force Operation X」は国内・海外合わせて現在150社を超える広告会社とシステム連携しています。ワンタグ・ワンSDKという形でF.O.Xで一元的に計測した広告成果情報を各広告会社にリアルタイムに通知することで,広告会社は成果を把握することができ,場合によってはそのデータを基に広告主への請求額を決定しています。

図1 F.O.Xのシステム連携図

図1 F.O.Xのシステム連携図

したがって,F.O.Xが停止することは,F.O.Xを導入している広告主だけではなく,連携している各広告会社にも迷惑をかけることになるため,たとえメンテナンス中であっても計測およびシステム連携している広告会社への成果通知は一切止めない仕組みの導入が必須となりました。その仕組みをリリースしたのがちょうど1年前なのですが,それ以降は障害・メンテナンス含めて全くシステムを停止させておらず,稼働率100%の無停止運用を実現しています。

アプリケーションとRDBMSの分離

当初はRDBMSとしてMySQLを使い,システムを構築していました。しかし,負荷の高いバッチ処理中に大量のリクエストがあると,計測処理が遅延してしまうという問題がしばしば発生していました。また,バージョンが上がるごとに徐々に改善しているとはいえ,MySQLはテーブルの定義変更でテーブルロックを取ることがあります。このようにMySQLに計測処理が依存していることで,機能追加やメンテナンス作業に大きな制限が生じている状態でした。

現在のF.O.Xでは計測処理がRDBMSに依存しない仕組みとすることで,たとえMySQLに障害が発生しダウンしたとしても計測処理に影響のない作りになっています。そこで検討したのが,KVS系のNoSQLでした。

無停止システムにおけるKVS選定の5つのポイント

KVS選定においては次のポイントが重要となりました。

  1. 高速であること。
  2. 負荷分散の仕組みを持っていること。
  3. 冗長構成を取ることができること。
  4. データの永続性があること。
  5. メモリサイズに依存せずデータを保持できること。

特に5点目のデータ容量の上限がメモリサイズに依存しないという点が重要でした。広告効果測定とは,どの広告を経由してユーザを獲得したかという基本的な計測に加え,広告を経由して獲得したユーザが最終的にどれだけサービスを使っているかというLTV(ライフ・タイム・バリュー)を測ることですので,過去の成果情報を全て保持している必要があります。たとえば,課金額をLTVの指標とする場合には,ユーザに対して課金が発生するたびに過去の成果情報と照合する処理が行われるわけです。

多くのアプリケーションやサイトにF.O.Xの採用が進み,保持すべき成果情報も飛躍的に増大している状況でしたので,メモリサイズという比較的到達の早い容量が上限となることは,回避すべきリスクでした。

さらに,F.O.Xではアクセス解析データを広告流入元でレポートできる機能があります。アクセス解析ではアプリケーションの起動や画面遷移といったアクセスログを過去の広告成果とリアルタイムに照合するため,RDBMSでは計測が間に合わず,問い合わせの高速化が課題でした。

多くのKVSはキャッシュという位置付けで処理の高速性をうたう一方,データベースサイズの上限がメモリサイズに当たっていました。そうした中,上記5点を全て満たすことができたものがkumofsでした。

KVSとしてのkumofsの特長

kumofsは,分散型KVSとして複数のノードにデータのレプリカを持つことで負荷分散と冗長性を兼ね備えています。ノードをクラスタに追加していくことで,データ分散と再配置が自動で行われます。更にどのノードに接続しても全てのデータにアクセスできる特性を持っており,高い耐障害性があります。

データストアには内部的にTokyo Cabinetを利用しており,データの永続性が保障されています。性能面に関してはmemcachedのような純粋なキャッシュKVSと比較すれば,ディスクI/Oの発生がオーバーヘッドとなりますが,弊社検証ではMySQLと比較してkumofsでは50倍程度のスループット向上が見込める結果が出たため,全く問題ないと判断しました。

図2 kumofsのアーキテクチャ

図2 kumofsのアーキテクチャ

また,memcachedプロトコルと互換性があり,当時F.O.Xではmemcachedも利用していたことから,インターフェイスを変更することなくkumofsへ移行できることも開発の短縮という面で大きなメリットでした。

現在のF.O.Xではkumofsでリアルタイムな処理を全て完結させ高速にレスポンスを返す一方で,非同期で計測データをMySQLへと同期させ,集計やレポーティング処理を行っています。

Redisの採用

最後に今後のインフラ構成についてお話します。kumofsの機能的特長は申し分なく,またこれまで全くと言っていいほどトラブルを起こしていないためこのまま使い続けていきたいところです。しかしながら,一点だけ運用上リスクと感じていることがあります。それはkumofsの開発が停止しているということです。

そのため,kumofsが今後何らかのトラブルが発生しても問題が起きないよう,KVSプロダクト自体の冗長化を検討しており,現在はRedisの検証を行っています。基本的には全く同じデータをkumofsとRedisの両方に書いていき,kumofsの製品トラブルに備えようと考えています。

最新のスマホアドテク情報を発信中!CyberZのFacebookページはこちら。
URL:https://www.facebook.com/CyberZ.inc

著者プロフィール

中村智武(なかむらともたけ)

2012年7月,株式会社CyberZ入社。スマートフォン広告効果測定ツール「Force Operation X」(F.O.X)のプロダクトマネージャーを務める。国内・海外におけるスマートフォンメディアとの計測連携や計測技術の開発を指揮する。2002年から8年間,日本オラクルにてデータベースエンジニアとして大規模環境におけるデータ分析システムを担当。2010年,フロンティアNEXT株式会社のCTOに就任。スマートフォンアプリ開発事業に従事し,多数のサービスをリリース。

コメント

  • 直々にコメントいただきありがとうございます。

    古橋様

    本記事を執筆した中村です。
    開発者の方から直接コメントいただき、誠に光栄です。
    使っているからこその感想ですが、kumofsはとても素晴らしいプロダクトだと思います。
    オリジナル開発停止しているのが本当に残念です。

    おっしゃる通り、オープンソースだからこそ、このテクノロジーを引き継いでいきたいです。

    Commented : #2  中村智武 (2013/06/27, 17:30)

  • kumofsの開発継続を

    kumofsの作者です。解説ありがとうございます。よもやこれほどまで大規模に利用していただいているとは思いもよらず、大変光栄です。
    残念ながら、オリジナルの開発者による開発は停止しています。しかしながら、そこはオープンソースソフトウェアです。
    ぜひforkし、プロジェクトを乗っ取り、開発を継続してください。
    個人的には、ミドルウェア製品の開発は、エンジニアリングとしてかなり面白いテーマだと思っています。

    Commented : #1  古橋貞之 (2013/06/26, 15:46)

コメントの記入