AdRoll は、100 以上の国に 10,000 以上のアクティブな広告主を有するリターゲティングのグローバルリーダーです。同社は、ビジターのブラウジング行動に基づいて広告キャンペーンをパーソナライズする、プラットフォームを超えて広範囲をカバー可能なディスプレイのソースとツールを有しています。2007 年に設立され、カリフォルニア州サンフランシスコを拠点として、Salesforce、Tableau、Alex and Ani、Rickshaw Bags、Hipmunk などのブランドの広告を扱っています。

AdRoll は AWS を使用して 1 日 500 億の広告インプレッションを提供 (3:16)

adroll-thumb

広告のリターゲティングは、サイトのビジターを顧客に変えることを目的としています。リターゲティングは世界中のオンラインビジネスの収入を押し上げており、AdRoll は業界をリードする企業のひとつとして、2012 年には 15,000 パーセントの成長を実現しました。しかし、広告を効果的に提供するため、AdRoll は即座にキャパシティーを増加させられる柔軟性、リアルタイムの入札を勝ち取るための高速なレスポンス、さらにシステムを入札にすばやく対応させる自動化を必要としています。

「高い性能はもちろんですが、それ以上のものが必要です」と CTO のValentino Volonghi 氏は言います。「柔軟性が必要です。複数のデータセンターとコンピュータをカバーしながらスケーリングできるソフトウェア、使いながら最適化することができるソフトウェアを必要としているのです。オペレーションをクラウドに移行する以外に、方法はありませんでした。」

AdRoll がリアルタイム入札インフラストラクチャを展開するに当たっては、4 つのリージョンにまたがるすべてのユーザーのために、数億ユーザーの規模で 1 秒間あたり数万の書き込みデータについて、データを同期する必要がありました。これだけのデータをリアルタイムで書き込むという圧倒されるようなタスクに加え、入札システムにはそれぞれの入札リクエストにつき 100 ミリ秒以下という上限があるため、AdRoll は読み取り性能にも強力な保証を必要としていました。

AdRoll は Amazon Simple Storage Service (Amazon S3) から使用をスタートしました。AWS 環境を整えて運用するまでにかかった時間は約 2 週間で、AdRoll は今では 1.5 PB のデータを Amazon S3 に保存しています。間もなく、AdRoll は AWS が単にストレージとして役立つだけではないことに気付き、システムをさらに AWS クラウドへと移行し始めました。現在、AdRoll のサイトの中核は 30 の Amazon Elastic Compute Cloud (Amazon EC2) インスタンスです。追加のインスタンスは、Amazon EC2 のスポットインスタンスを含めると 200 から 1000 の数になり、キャパシティーの変化を可能にしています。「このビジネスで重要なのは自動化です」と Volonghi 氏は言います。「インスタンスのうちどれか 1 つに障害が発生しても、自動的に交換され、人間の手を煩わせることなく動作し続けます。」

ストレージとコンピューティングのソリューションにとどまらず、AdRoll ではレイテンシー 100 ミリ秒という要件を満たす高性能なデータベースソリューションも必要としていました。複数の代替案を評価した後、低レイテンシー、スループット保証、スピーディーなスケーリング能力を考えて、同社は DynamoDB を選択しました。

DynamoDB は NoSQL データベースサービスで、スループットが保証され、数ミリ秒のレイテンシーを実現しています。完全マネージド型サービスである DynamoDB は、3 方向への自動レプリケーションや、API と使いやすいマネジメントコンソールによる、スループットとストレージのシームレスなスケーリングを実現しています。

DynamoDB のテーブルはプライマリキー(ハッシュ、またはハッシュ&範囲)と属性によって構成されています。シームレスなデザインであるということは、それぞれのデータ項目に異なる数の属性が存在する可能性があるということです。複数のデータ型(文字列、数値、バイナリデータ、およびセット)により、データモデルの内容がより豊かになります。

AdRoll のテーブルは、Cookie をハッシュキー、プロフィール ID を範囲キー、タイムスタンプを属性として使用するよう設計されました。

ハッシュキー 範囲キー 属性
Cookie(ユーザー ID) プロフィール タイムスタンプ
"1234" "Segment1" "1378237387”
"1234" "Segment2" "1378237417"

AdRoll では、すべてのテーブルにハッシュ&範囲プライマリキーを使います。「ハッシュ&範囲キーによって、ハッシュキーが同じであっても、異なっていても、単独の API である BatchWriteItem を使って複数の項目を変更できます」と Volonghi 氏は語ります。「読み取りオペレーションの結果を、考えられる最小のペイロードまで凝縮することで、データを効率的にクエリすることも可能になります。これによって、ストレージとスループットのコストを節減できました。」

DynamoDB を最大限に活用するため、AdRoll では同社オリジナルの DynamoDB クライアントを開発しました。「何百台ものコンピュータで、DynamoDB のクエリに使用しています。Erlang インフラストラクチャによって、安定した低レイテンシーで動作しています」と Volonghi 氏は言います。「私たちはただ書き込み、読み書きのスループットを測定し、メリットを享受しているだけで、細かいところにまで入り込む必要はありません。」AdRoll チームは、キャパシティーの低下やシステムのダウンを知るために、書き込みスループットの低レベルと高レベルの両方にアラートを設定することを推奨しています。

Amazon DynamoDB を Apache Storm と併せて使うことで、AdRoll はデータセットを 50 ミリ秒未満で世界中にレプリケートでき、コストを低く保ったまま、入札と顧客への広告提供の両方に高速な応答時間を提供しています。

AdRoll はまた、AWS の持つスケーラビリティのメリットも享受しています。「AWS によって Facebook、Google、Yahoo、その他ヘビーなアクセス数を稼ぐサイトからのトラフィックを扱うことができています。1 日に 500 億のインプレッションを提供できるのはそのおかげです」と Volonghi 氏は語ります。「費用対高価も優れていて、Amazon DynamoDB での作業時間よりおやつを食べる時間のほうが長いくらいです。」

AWS を使うことで、AdRoll にとって新規顧客の追加が容易になりました。新規顧客が加わったとき、AdRoll のコンピュータは追加されるトラフィックすべてに対応できなければなりません。通常、従来のオンプレミスインフラストラクチャでは、新しい顧客の追加は、新規コンピュータ購入の承認プロセスを実施し、Hadoop クラスターに追加し、追加ストレージを調達するといった作業を意味していました。これは最大 90 日もかかる作業です。「AWS では、そのような心配がまったく不要です」と Volonghi 氏は言います。「キャパシティーの限界に近づいているなら、いくつか新しいインスタンスを自動スケーリングすれば、それで完了です。」

同社では、物理的な位置にかかわらず、新しいエクスチェンジを加えることですばやくビジネスを成立させることができています。「トラフィックのエクスチェンジが世界のどこであっても、AWS には必ずその近くのリージョンがあります。新しいエクスチェンジが加わると、すぐにそのメリットを活用できます」と Volonghi 氏は語ります。「スイッチを入れるだけで、トラフィックを受け入れるコンピュータのある新しいデータセンターが開設されるという簡単さです。それから、入札を始めるんです。簡単ですよ。」

Volonghi 氏は、AdRoll が自社ビジネス構築のため必要としていたスケーラビリティとキャパシティーを実現した AWS に信頼を寄せています。「当社のビジネスが急速に成長していたとき、AWS を使っていたことで、アルゴリズムのスケーリングと最適化が行え、余分なキャパシティーも不要になりました。AWS のおかげで時間とお金を節約できています。規模を拡大するために大きなデータセンターを作ることも、運用担当者を増やすことも、コンピュータを調達する必要もありません。」

DynamoDB について詳しくは、Amazon DynamoDB の詳細ページを参照してください。http://aws.amazon.com/dynamodb/