## プロジェクト経験概要
ある大手メッセージングプラットフォーム企業のデータマネジメントプラットフォーム(DMP)の開発・運用を担当。ピーク**5万RPS**の高トラフィック、**2000億行超**のデータ(**グローバル1億人以上**のユーザー情報含む)、**500台規模**のサーバーを扱う大規模システムの設計、開発、運用保守に従事しました。
主な実績として、**Java, Kafka, HBase, Redis, Spark, Scala, MySQL, Elasticsearch** 等を活用し、以下のプロジェクトを推進しました。
- **クロスプラットフォームデータ統合基盤の設計・開発:** 同社の広告配信プラットフォームと企業向けアカウントサービス等、従来分断されていたデータを統合し、プロダクト横断での高度なターゲティングを実現する基盤を構築(ID体系変換、Opt-out考慮、Sparkバッチ処理、Redisキャッシュ活用)。
- **リアルタイムユーザーセグメント蓄積基盤の開発:** メッセージング機能のタグ等のリアルタイムイベントを処理し、ユーザーセグメントを蓄積する汎用的なストリーミングパイプラインをKafka/Redisで構築。データ整合性を担保するSpark/HDFSを用いた大規模バッチ同期処理も実装。
- **Apple ATT(App Tracking Transparency)対応:** IDFAに依存しないプラットフォーム独自のユーザーIDベースのターゲティング機能を実装し、広告識別子制限の影響を最小化。Redisによる同意状況の高速判定、HBaseのスケールアウト、処理最適化を実施し、安定稼働を実現。
- **チームへの貢献:** システム構成図や処理内容のドキュメント化(Wiki整備等)を推進し、チーム全体のシステム理解度向上、コミュニケーション円滑化、新規参画者のオンボーディング効率化に貢献。設計資料作成文化の醸成にも寄与。
これらの経験を通じ、**Java**を中心としたバックエンド開発スキルに加え、**Kafka, HBase, Redis, Spark**等の技術を用いた**大規模分散データ処理基盤**の設計・構築・運用(**リアルタイム処理、バッチ処理、NoSQL DB活用**含む)に関する深い知見と経験、ならびに**技術的課題解決能力**を培いました。また、**システム可視化とドキュメンテーション**を通じたチーム開発力の向上にも貢献してきました。
## 開発: 同社の各プロダクトを横断的に活用できるクロスプラットフォーム機能
### 概要
当初、担当していたDMPは広告配信プラットフォーム向けのシステムでしたが、企業向けアカウントサービスをはじめとする複数のB2Bプロダクトをデータで繋ぐ「クロスプラットフォーム」構想の中核として、「プラットフォーム全体のDMP」へと機能を拡張・進化させるプロジェクトに携わりました。
### 課題
従来、広告配信プラットフォームと企業向けアカウントサービス等では、それぞれ異なる目的・ID体系でターゲティングデータが管理されており、データが分断されている状況でした。
クロスプラットフォーム構想の実現に向け、これらのデータを統合し、プロダクトを横断した一貫性のある高度なターゲティングを実現する必要がありました。
特に、数百億行規模のユーザーデータを、異なるID体系を変換しつつ、かつ配信停止(Opt-out)設定も考慮しながら毎日正確に統合処理を行う必要がありました。
### 取り組み・技術活用
上記課題に対し、主に以下の取り組みを行いました。
- **データ統合基盤の設計・実装:**
- 広告配信用とメッセージ配信用で異なるID体系で管理されていたユーザーセグメントデータを統合するための**データモデルを設計**しました。
- 数百億行規模のデータを毎日処理するため、**ID変換処理**と**Opt-out情報の反映**を考慮した**バッチ処理**を**Spark**等を用いて実装しました。ID変換処理の性能向上のため、変換テーブルを**Redis**にキャッシュとして保持する工夫を行いました。
- 性能・スケーラビリティ要求から**HBase**や**Redis**といったNoSQL DBを積極的に活用しました。
### 成果
本取り組みにより、従来はプロダクトごとに分断されていたターゲティングデータを統合し、広告配信とメッセージ配信などを連携させた、より高度で一貫性のあるターゲティングを実現する基盤を構築しました。これにより、同社の各プロダクトを横断したデータ活用戦略(クロスプラットフォーム構想)の推進に貢献しました。
## 開発: リアルタイムなユーザーセグメント蓄積基盤開発
### 概要
同社の企業向けアカウントサービスのメッセージング機能のタグを活用し、リアルタイムでユーザーセグメントを構築する汎用的な基盤を開発しました。
これにより、タグ情報に基づいた広告配信など、データ利活用の幅を広げることを目的としました。
### 課題
企業向けアカウントサービスのリアルタイムイベントタグ情報を広告配信に活用したいというニーズがありました。
このタグ情報はリアルタイム性が求められるため、即時にユーザーセグメントへ反映する必要がありました。
また、従来は類似のリアルタイム処理機能が個別のアプリケーションとして開発されており、同様の実装が繰り返され、コードが重複・乱立することが懸念されていました。
### 取り組み・技術活用
- **汎用的なストリーミング処理基盤の構築:**
- **Kafka** を用いて、様々なデータソースからのイベントをリアルタイムに処理し、ユーザーセグメントを蓄積するストリーミングパイプラインを構築しました。これにより、機能ごとに個別実装する非効率さを解消しました。
- ID変換処理には **Redis** を活用し、高速なデータルックアップを実現しました。
- **データ整合性を担保する定期同期処理の実装:**
- ストリーミング処理だけではデータ齟齬が発生し得るため、定期的に送信元システムと完全同期するバッチ処理も開発しました。
- 同期処理では、送信元システムの全データを **Object Storage** 経由で **HDFS** に配置し、**Scala** と **Spark (Spark SQL)** を用いてHBase上の既存データとの差分を効率的に計算・更新する仕組みを構築しました。Sparkの分散処理能力を活用することで、大規模データの比較・更新処理を高速化しました。
### 成果
リアルタイムなユーザーセグメント蓄積処理を汎用化する基盤を開発しました。これにより、類似機能を持つアプリケーションの乱立を防ぐことができました。実際に、この基盤はその後の複数の新規開発プロジェクトで再利用され、開発の効率化に貢献しました。
## 開発: Apple ATT(App Tracking Transparency)対応
### 概要
ATT(App Tracking Transparency)によるIDFA取得制限に対応するため、プラットフォーム独自のユーザーIDベースのターゲティング機能を実装し、それに伴うストレージのスケールアウトと処理の最適化を行いました。
### 課題
Apple社のATTポリシーにより、iOSアプリにおけるIDFA(広告識別子)の取得にはユーザーの明示的な同意が必要となりました。これにより、従来のIDFAベースのターゲティング広告の配信量が大幅に減少する可能性がありました。そこで、ユーザーの同意状況に応じてIDFAベースのターゲティングとプラットフォーム独自のユーザーIDベースのターゲティングを使い分ける必要が生じました。また、プラットフォーム独自のユーザーIDベースのトラッキング範囲を拡大することにより、既存のIDFAベースのユーザーセグメントをプラットフォーム独自のユーザーIDに変換して保持する必要があり、データ量の増大とそれに伴う処理負荷の増加が課題となりました。さらに、ATT対応を行うにあたり、既存の膨大な規模のシステム全体を正確に把握する必要がありました。
### 取り組み・技術活用
- **同意状況に応じた高速判定:** 同社のメッセージングアプリにおけるATTの同意結果を高速に参照するため、インメモリデータストアである**Redis**を採用し、同意状況を蓄積・活用する仕組みを構築しました。これにより、広告リクエストごとにユーザーの同意状況を低遅延で判定することが可能になりました。
- **プラットフォーム独自のユーザーIDベースのトラッキング拡大:** 従来のIDFAベースのトラッキングに加え、プラットフォーム独自のユーザーIDを用いたトラッキングの範囲を拡大しました。これにより、ATTによるIDFA取得制限の影響を最小限に抑え、ターゲティング可能なユーザー数を維持・拡大することを目指しました。
- **データ量の増大に対応した設計:** 従来のIDFAベースのユーザーセグメントをプラットフォーム独自のユーザーIDに変換して保持するため、最大で既存の2倍のデータ量を格納できる**HBase/Redis**のスケールアウト設計を実施しました。また、増大するデータ量に対応するため、データアクセス効率の最適化やクエリのパフォーマンス改善を行いました。
- **各種ターゲティングロジックの改修:** 既存の各種ターゲティングロジックにおいて、IDFAベースのターゲティングを実施してよいかの判定処理を追加しました。これにより、ユーザーの同意状況に応じて適切なターゲティング広告配信を実現しました。
- **システム可視化と知識の共有:** ATT対応を正確に進めるため、**ユーザーセグメント蓄積の方法別に特化したシステム構成図を網羅的に作成**しました。さらに、それぞれの処理内容を詳細な文章で書き下すことで、システムの全体像と各機能の動作を明確化しました。
### 成果
ATTポリシーへの対応を完了し、**障害なくサービスをリリース**することができました。プラットフォーム独自のユーザーIDベースのトラッキングを拡大したことで、ATTによるIDFA取得制限の影響を最小限に抑え、むしろ**トラッキングの精度向上**に貢献しました。また、**大規模データ処理基盤の安定稼働**を維持し、広告配信への影響を最小限に留めることができました。
加えて、システム構成図と処理内容を文章化したことで、ATT対応を正確に進められただけでなく、**企画担当者もシステムの動作を理解できるようになり、コミュニケーションが円滑化**しました。また、**新規開発者の参入障壁が低下**し、チーム全体の**知識レベルの底上げ**に繋がりました。この経験から、**設計資料を作成し共有することがチームの文化として根づき**、その後の開発においても同様の取り組みが継続されています。