DMP(Data Management Platform)開発を担当した際の所感

投稿者: | 2021年4月28日

こんにちは。
GMOアドマーケティングの@zakisanbaimanです。
この度弊社のDMPであるMinervaのバックエンドを兼任することになり、その際の所感をまとめておきます。

DMP(Data Management Platform)とは

一言でいうと「インターネットユーザをセグメント化し、管理できるプラットフォーム」です。
ここで言うセグメントとは「車好き」や「ジャニーズ好き」、「30代」などの属性のことであり、それらをユーザ1人1人のCookieに付与してインターネット広告のターゲティングに役立てることを目的としています。

自身のアドテク開発歴

2017年夏にGMOアドマーケティングにジョインし、現在(2021.04)までアドネットワークであるAkaNeのバックエンドを担当。
AkaNeの主な採用技術として、Java、Apache、サーブレット、GCPが挙げられます。

担当着任時の所感

AkaNeに3年以上携わっていたので、その視点からMinerva開発について思うところを書きます。

1. AkaNeと同じところ

クラウド: GCP
言語: Java11
プログラム: サーブレット

両者を作る上でのアプリケーション的な技術選定は同じです。
バックエンドの言語はJava11、クラウドはGCPで開発しています。

AkaNeはアドネットワークなので広告配信サーバが必要となり、リクエスト数に応じてサーバを増減させています。
MinervaはDMPのため、タグが貼られているページからビューごとにリクエストが飛んでくるため、こちらも同様にサーバ台数の柔軟性が強く求められる点が共通しています。

2. AkaNeと違うところ

とはいえ、ローンチされた時期がAkaNeは2009年でMinervaは2019年と10年異なることもあり、技術はより時代に沿って効率的なものを選定しています。
特にインフラ周りの設計が大きく異なっています。

2-1. クラウドネイティブ

AkaNeは2020年に全サーバのクラウド化が完了しましたが、元がオンプレのため構成がオンプレ時代の名残があります。
Minervaは開発スタート時からクラウドで開発しているため、全ての機能がGKEや、Datastore、Cloud SQLなどのGCPサービスを利用しています。

2-2. Kubernetes

AkaNeのバックエンド(広告配信サーバ)はGCEを用いており、スケールも容易にできるようになっています。
対してMinervaのバックエンドはGKEで構築されています。
GCEとGKE、どちらもオートスケールやオートヒーリングなどできることは一見似ているのですが、GKE(Kubernetes)にはpodという、VMインスタンス(GCE)より粒度の小さい概念があります。
podを上手く配置することで、GCE単体より効率よくリソースを管理できるメリットがあります。

2-3. データアクセスの仕組み

AkaNeではActiveMQを用いてDBの変更を広告配信サーバに通知し、受信したサーバがDBを参照しに行くという設計になっていました。
MinervaではHazelcastというデータ共有のOSSを用いており、APIサーバが直接DBにアクセスすることはしていません。
DBにアクセスする主体をキャッシュサーバにまとめることで不要な通信やサーバ間のデータ不整合を防いでいます。

着任時に大変だったこと

DatastoreやCloud SQLはあまりサービスを意識しなくても開発に着手できましたが、GKEの理解には時間がかかったと思います。
あとはMinervaの開発メンバーが少ないこともあり、開発体制があまり整っていなかったことも苦戦ポイントでした。
当初は少人数で開発していたこともあってか、開発環境が集団開発向きになっていないため、今後改善していきたいです。

まとめ

大変なこともありますが、新しいサービスを触ることは学びが多いので今回Minervaに携われてよかったなと思います。
ここで得た知見をAkaNeや他サービスにも還元していきたいと考えています。

最後まで読んでいただきありがとうございました。

■エンジニア採用ページ ~福利厚生や各種制度のご案内はこちら~
https://note.gmo-ap.jp/n/n02cbeb6edb0d

■noteページ ~ブログや採用、イベント情報を公開中!~
https://note.gmo-ap.jp/