こんにちは。SpinAppチームでリードエンジニアをしている鈴木省吾(@munaita_)です。今日はオプトが提供するアプリマーケティング用のログ分析基盤であるSpinAppのサービスと技術を簡単に紹介します。
SpinAppとは
アプリマーケティングのためのDMPです。AdjustやAppsflyer、Tuneといった広告SDKが入っているアプリであればすぐにご利用いただけます。アプリをグロースさせたいマーケティング担当者様のデータの課題を解決することを目指してサービス作りをおこなっています。詳しくはこちらのLPも御覧ください。
SpinAppのトラフィック
SpinAppのログのトラフィックの特徴としては、アプリのプッシュ通知が行われたときにスパイクが発生することです。このスパイクを捌き切れるログ収集システムを構築する必要があります。
- ピーク時のqps: 約3000qps
- 1ヶ月のログの量: 約1000GB
急増しているリクエスト例
アーキテクチャ
ログ収集
各クライアントのアプリから飛んでくるログを貯めるためのシステムです。DWHはBigQueryを使っています。
ログをBigQueryに入れるまでの流れ
- 1: GAEでログを受け取り、バリデーション後、TaskQueueに詰める
- 2: TaskQueueに溜まったログをGAEが1分に1回Cloud Storageにアップロード
- 3: 5分に1回dataflowが起動し、CloudStorageのファイルをBigQueryにインサート
この構成のメリット
フロントのGAEはGOで実装されており、高速にスケールアウトすることが可能で、スパイクにも対応できます。 また、Dataflowでアプリ毎にテーブルを分けて、日付毎のPartitionTableとしてインサートしています。これにより、クエリのコストを下げることが可能になっています。
管理画面/集計
クライアントがマーケティングに活用できるデータ集計や加工を行います。また、管理画面を通して集計の依頼や、マーケティング施策の設定ができます。
集計/管理画面で使われている技術
管理画面はGoogle Compute Engine + CloudSQL上に、Ruby on Rails + React のSPAが動いています。 集計に関しては、基本RailsのRakeタスクで行われており、一部の複雑なワークフローはAirflowで管理されてます。
なぜGCPか?
SpinAppはAWS構成からGCP構成に移行した経緯があります。サービス開始当初よりもトラフィックが増え、AWSのインフラ費用が上がってきたことや、集計が間に合わなくなったことからGCPへの移行が検討されました。この経緯の詳細については、別の資料があるのでそちらを御覧ください。
SpinAppの管理画面の役割
広告代理店として、複数のお客様に使っていただけるような分析基盤にするため様々な要求を満たす必要があります。
その役割を担っているのがSpinAppの管理画面です。昨今、DWHにBIツールを連携させて分析するケースが多くなっています。SpinAppではBIツールで実現できない権限管理や、オプトからのデータ提供を管理画面で実現しています。具体例として、権限ロール機能、カスタムレポート機能とルールコンバージョン機能を紹介します。
権限ロール機能
管理画面上で詳細な権限のロールを作成し、各ユーザーに付与することができます。権限ロールでは、どのデータに対して編集/閲覧権限があるかを設定できます。
アプリ用の権限ロールの作成画面
カスタムレポート機能
システム管理者用の管理画面からSQLを登録し、その結果をクライアントが取得できる機能です。この機能により、複雑な条件によって抽出されたデータの提供が可能になりました。さらに、有効なデータ活用法オプトがクライアントに提案/提供できるようになりました。
システム管理者がSQLを登録する画面
クライアントがレポートを取得する画面
詳細記事: オプト提供のアプリデータマネジメントツール 「Spin App(スピンアップ)」が、カスタムレポート機能を実装
ルールコンバージョン機能
独自ルールのコンバージョンを作成し、メディアへのイベント発火させることが可能です。 カスタムレポート同様、システム管理画面でSQLを定義したものをイベント発火させることができるので、複雑な条件にも対応できます。
ルールコンバージョンの設定画面
詳細記事: オプト提供のアプリデータマネジメントツール「Spin App」が、ルールコンバージョン機能をリリース
課題
SpinAppではお客様にさらに便利にご利用いただくために日々開発しております。現在取り組んでいる大きな課題は、
- Webとアプリを横断したマーケティング分析を提供できるようにする
- 分析したデータをよりグラフィカルな形でお客様に提供できるようにする
などがあります。
現在、SpinAppでは一緒に開発する仲間を募集しております。ご応募お待ちしております。