そんな中、モーションビートが提供する「AdStir」(アドステア)は、特にスマートフォン向けに特化した広告配信サービスとして注目を集めているものの一つである。AdStirは、アドサーバ機能、複数のアドネットワークを一元管理して広告配信の最適化を行うイールドオプティマイゼーション(SSP)機能を持ち、近年特に関心が高いリアルタイム入札(RTB)にも対応したサービスとなっている。
スマートフォンユーザーの急激な増加に伴う多様な広告配信ニーズの増大により、その基盤となるシステムに対しては高い信頼性と可用性、そして高速性が求められている。AdStirでは、どのような技術と体制によって、その要求に応えているのだろうか。モーションビート、メディアプラットフォーム事業部でAdStirの開発に携わる、メディアプラットフォーム事業部の落合省治氏とfukata氏に話を聞いた。
LVSをベースにnginxとLuaをフル活用
AdStirは、主に広告配信の周辺を担当するアドサーバ、汎用APIサーバ、リアルタイム入札システム(RTB)用サーバと、AdStir自体の管理やログデータの集計を行うシステムから構成される。広告配信関連のサーバは、LVS(Linux Virtual Server)ソリューションをベースとしたクラスタリングが行われており、高性能と高可用性を確保している。具体的なサーバ数については非公開だが、このシステムにより1日あたり1億以上のトランザクションを処理しているという。
処理の高速化が命題となるアドサーバ、APIサーバ、RTBサーバにおいて重要な構成要素となっているのは、膨大なクライアント数を高速に処理できるhttpdとして近年日本でも注目を集めている「nginx」、同じく高速な実行が特徴となっているスクリプト言語フレームワークである「Lua」、さらにmemcachedとなっている。
AdStirでは、高速な処理を実現するにあたって、当初はC言語によるnginxのモジュール開発を行っていたという。現在では、APIサーバを筆頭にLuaへの移行が進んでいるが、その理由の一つとしては落合氏は「メンテナンスコスト」を挙げた。
「当初は、スピードを最優先してC言語での開発を行っていました。しかし、規模が大きくなるに従い、C言語での開発やメンテナンスができる開発者の確保に、かなりのコストがかかる状況になってきました。そこで、代替になる言語を探す中でLuaを見つけたのです。C言語のホストに組み込まれることを前提に設計されているため、スクリプト言語でありながら、動作はかなり高速です。一方で、記述のルールはRubyなどに近く、規約自体は非常に簡単で学習コストは非常に低いと感じました」(落合氏)
落合氏はLuaを評価する中で、その高速性と、C言語と比較した場合の開発生産性の高さを高く評価した。実際に、Luaの採用により、コーディングの時間はC言語と比較して「約3分の1」に削減されたという。落合氏は「メンテナンスコストと速度の両立を考えるのであれば、Luaは非常に良い選択肢だと思います。現在はソーシャルゲーム配信などの分野で多く使われているようですが、もっと多くの用途に使われてもいいのではないかと感じています」と話す。
スピードが命のRTBは非同期処理に工夫
AdStirの特徴の一つであるRTBは、広告の1インプレッションに対して出稿側がリアルタイムの「入札」を行うことを実現する仕組みである。もちろんここでも、リアルタイム性の高い、高速な処理が求められる。
「リアルタイム性を高めようとすれば、当然のことながらキャッシュの仕組みはほぼ役に立たなくなります」というfukata氏は、「AdStirのRTB Exchangeでは、非同期の処理をうまく利用することで、キャッシュのみに依存せずにオーバーヘッドをため込まない仕組みを用意しています」と話す。
「RTBで最も処理待ちが長くなるのは、複数のDSPとの通信を行う部分。この待ち時間に非同期で必要な処理を行うことによって、全体の速度が遅くならないよう工夫をしています。処理自体はNode.jsやPerlなども使って書いていますね」(fukata氏)
近年のRTBに対するニーズの高まりを受け、RTB Exchangeへのアクセス数はうなぎ上りの状態だ。時には「アクセス数が1日で2倍になったこともある」という。こうした状況にも、システム側の工夫と高度な並列化で対応を続けている。今後は、さらなるアクセス増と高速化のニーズに応えていくため、メッセージの圧縮技術にも注目をしているという。
「最終的には、DSPとやり取りするメッセージの転送量の増大が問題になってくるため、JSONの圧縮技術などには非常に注目しています。RTBでは処理速度が重視されるため、あまり圧縮や展開にリソースを使うような技術は適していません。処理の速さと圧縮率のバランスを考えながら、DSP側と一緒に作業に取り組むことで、さらなるリアルタイム化を目指していきたいと思っています」(fukata氏)