こんにちは。
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/