Header Bidding導入

この記事は GMOアドマーケティング Advent Calendar 2020 15日目の記事です。

GMOアドマーケティング GMOSSP開発担当の@KazuakiMです。

先日、プレスをだしましたHeader BiddingのPrebid対応についてシステム面からご紹介していきたいと思います。

Header Biddingとは

そもそもHeader Biddingとはどういったものかと申しますと、
媒体社の運営するサイトでアドサーバへ広告リクエストするよりも前に、
複数の広告配信事業社(SSP、アドエクスチェンジ)に広告リクエストを行う事で、
高単価な広告配信が実現可能となる仕組みとなります。

なぜ高単価なのに広告配信事業社は配信したがるのか

Header Biddingに参入していない場合、アドテク業界ではよくある構成として、
まず媒体社がGoogle社のアドサーバ「Google Ad Manager」(以下、GAM)に広告リクエストを行い、
そこで広告在庫がなかった場合に初めてGMOSSPに広告リクエストがくる事となります。
その場合にもGMOSSPに必ずくるとは限らず、他社様のSSPなどと競合し一定割合でGMOSSPに広告リクエストがくるというのが実情です。
そのためGAMの広告在庫とマッチしたユーザ様はGMOSSPが広告配信する機会を得る事が非常に厳しいという問題があります。

こうした状況を打開するため、Header Biddingに参入する事で公平なオークションに参加し、
GMOSSPとマッチするユーザ様に対してアプローチできるようになります。

では、GMOSSPがHeader BiddingのPrebidに参入する際の開発体制をご紹介します。

体制

GMOSSPのアプリ開発メンバは5人います、アプリ開発メンバの他にインフラを見ている部隊がいます。
そんな中、GMOSSPの開発は継続しながらHeader Bidding参入したいという要望があがってきました。
世情を考えますと至って普通の流れかと思います。

そこでGMOSSPのアプリ開発メンバからフロント、バックエンド、終盤のヘルプと2-3人体制で開発に取り組む事にしました。
フロントエンドはarasaki-yukiさんが対応し、大きな問題もなく取り込まれました。


バックエンドは主に私が対応しましたので、
その際の苦労話などを加えつつ、ご紹介致します。

リファクタリング

GMOSSPは長年運営されてきていますが、
既存の処理にまったく新しい配信ケースが追加される事を想定したコードとなっていませんでした。
そこから長いリファクタリング生活が始まるのですが、
Header BiddingのPrebidは幸い、in/outが決まっている事から粛々と開発を進めつつ、
GMOSSPとロジックを共通化する部分を随時共通化していきました。

こちらが最初の移行時ですね、設計などは2019年から練ってはいましたが、形になってきたのは、
年明けとなります。

ここら辺でHeader BiddingのPrebidリリースは一段落した形になるかと思います。
その間、GMOSSPの開発をしながらではありましたが、粛々と移行&開発を行っていました。

集計・レポート

LJSON形式でログ出力する事とし、そのログを多少精査はしますが、
ほぼそのままBigQueryに転送し、BigQueryを参照して集計するロジックに変更する事で、
ログ転送時間の短縮など各種GMOSSPで課題だったものを先行事例として解決しました。

初導入

自社で運営しているめるもにて導入検証を行い、
広告が問題なく表示され、正常に計測できているかを確認できたときには一安心した思い出があります。
いまではPCにも対応し、めるもをはじめいくつかの媒体様に導入頂いております。

実配信開始

めるもでの検証が問題なく終わった後は、
PrebidへのPRなどを行い、ほどなくして実配信が始まりました。

まとめ

いかがでしたでしょうか。
GMOSSPでは今後もGMOSSPとHeader Biddingの2本柱を中心に事業を更にスケールしていきたいと考えています。
より高負荷をさばけるような仕組みに興味がありましたら、ご連絡お待ちしています。

明日は、nodatakaさんによる「JavaのText Blocksに慣れる」です。
引き続き、GMOアドマーケティング Advent Calendar 2020 をお楽しみください!
■エンジニア採用ページ ~福利厚生や各種制度のご案内はこちら~
https://www.gmo-ap.jp/engineer/
■noteページ ~ブログや採用、イベント情報を公開中!~
https://note.gmo-ap.jp/