読者です 読者をやめる 読者になる 読者になる

オールアバウトTech Blog

株式会社オールアバウトのエンジニアブログです。

レガシーな広告配信システムをリプレイスした話

広告

こんにちは。オールアバウトの@naga1460です。

オールアバウトの代表的なメディアである「All About」の広告配信システムは、 ここ1年で大きく変わりました。

All About初期からのレガシーシステムをどうリプレイスしたのか、紹介したいと思います。

All Aboutの主な広告

まず前提知識として、All Aboutで扱っている代表的な広告を簡単に説明します。

※ここに挙げたもの以外の種類もありますが、今回は割愛します。

純広告

All About内の特定のページの特定の枠に配信する広告です。

リンク先は基本的には広告主様(以下クライアントと表記)のサイトとなります。

ネットワーク広告

こちらに関しては説明不要かと思います。

All Aboutでは、純広告が配信されていないページにネットワーク広告を配信しています。

タイアップ広告 + 誘導広告

タイアップ広告は、商品・サービスの情報を取り上げた記事風広告です。

All About内の他のページからタイアップ広告ページへ誘導する広告の配信も同時に行います。

※誘導広告用の枠と、純広告・ネットワーク広告用の枠は全く別の配置となっています。

All About初期の広告配信システム

初期システム構成図

f:id:allabout-techblog:20160725190501p:plain

初期システム概要

All About初期の頃は、図のように旧自社製アドサーバーが全ての広告を配信していました。

このアドサーバーはつい1年程前まで現役で使い続けていたのですが、 15年以上前に設計、構築されたシステムということもあり、問題点を多く抱えていました。

広告配信の所要時間が膨大

広告の配信開始日に、純広告、タイアップ広告 + 誘導広告全てを一斉にオンプレファイルサーバーへアップロードしていたため、 1回の配信に1時間以上かかることも少なくありませんでした。

クリエイティブの履歴管理が手作業

旧アドサーバーでは、クリエイティブの差し替えは行えるのですが、 いつどのクリエイティブを配信していたのか、といった履歴がシステム上で管理されていませんでした。

よって、入稿者が手作業でフォルダ管理する運用となっていました。

拡張性ゼロ

ASPという言語でフレームワークも使わずに構築されていたので、システムの拡張性はほぼありませんでした。

その他にも...

  • プレビュー環境と本番環境に差があり、正確なプレビューが不可能。
  • 仕様をきちんと把握している人がおらず、障害対応の難易度が高い。
  • 15年以上をかけて継ぎ接ぎなシステムとなってしまっている。
  • 不要となっている機能も多い。

等、挙げるとキリが無いのでこのあたりで止めておきます。

現在の広告配信システム

現システム構成図

f:id:allabout-techblog:20160725181050p:plain

現システム概要

流石に初期のシステムをこのまま使い続けるには限界がある、ということで、ここ1年程かけてアドサーバー全面リプレイスを決行しました。

現在は上記の図のような構成となっています。

初期システムから大きく変わった点としては、今まではアドサーバー1つで全ての広告配信を行っていたところを、

  • 純広告:DFP*1を利用して配信。
  • タイアップ広告 + 誘導広告:専用に新規構築したアドサーバーで配信。

というようにシステムを切り分けたところです。

それぞれのシステムについて詳細を説明していきます。

DFP(純広告 / ネットワーク広告)

純広告の配信システムとして、DFPを導入しました。

また、今まではフロントアプリ側に実装していたネットワーク広告配信処理もDFP側で巻き取ることとなりました。

DFPを導入した理由は、

  • フルスクラッチ開発よりもコストが低い。
  • 想定IMPがDFPの無料範囲内に収まる。
  • Googleのプラットフォームを使うことによるネットワーク広告収益最大化を狙う。

等です。

実際、DFP導入によりネットワーク広告収益増加の恩恵を受けられているため、当初の思惑通りとなっています。

(実際には、自社製案件管理システムとDFPの間に自社製連携用アプリがあるのですが、今回は説明を簡単にするため省略しています)

新自社製アドサーバー(タイアップ広告 + 誘導広告)

タイアップ広告 + 誘導広告の配信システムは、純広告側とは違い全てフルスクラッチで構築しました。

こちら側にDFPやその他既存のアドサーバーを導入せずフルスクラッチとした理由は、

  • タイアップ広告 + 誘導広告のIMPを合わせるとDFPの無料範囲を超えてしまう。
  • タイアップ広告と誘導広告はセットで管理したい。
  • 独自の配信ロジックを使いたい。

等です。

新規構築したアドサーバーには大きく分けて2つの機能があります。

  1. タイアップ広告の入稿・公開
  2. 誘導広告の入稿・配信

実際には、誘導広告の配信部分は単体の配信システムとして切り出されており、 機械学習を使ってタイアップ広告への誘導を最適化しています。

具体的には、誘導広告のクリエイティブの実績CTR等を元にクリエイティブと配信先ページの相性を判別し、クリエイティブと相性の良いページに絞って配信、といったロジックになっています。

このあたりは次回以降の記事で詳しく紹介したいと思います。

新自社製アドサーバーでは今までの問題点の解決、最適化を下記の通り実現しました。

広告配信の所要時間が従来の20%以下に

広告クリエイティブを入稿の時点でS3*2にアップすることにより、 配信開始日の一斉アップロードが無くなり、配信の所要時間が従来の20%以下となりました。

(純広告の配信をDFP側に切り分けていることも、高速化の要因の一つとなっています)

クリエイティブの履歴管理が可能

新システムではクリエイティブにバージョンの概念を導入し、 いつ、どのクリエイティブを配信したのかをシステム上で管理可能となりました。

これにより、入稿者が手作業でファイル管理をする必要が無くなりました。

拡張性が高い

拡張性を考慮し、PHPのモダンフレームワーク(Laravel 5)を採用して構築しました。

おかげで新アドサーバーのリリース以降、レガシーな旧システムではやりにくかった拡張が、次々と行えるようになりました。

リプレイスしてみて

15年以上使っていた広告配信システムのリプレイスは非常に大変でした。

初期システムの仕様をきちんと把握している人がいない中で仕様調査や関係者へのヒアリングを進め、 新システムへの要望と突き合わせた上で必要な機能、不要な機能を洗い出していきました。

また、システム構成図にあるような社内システムとの連携も要件として含まれており、 単なる新規構築よりも難易度の高い案件でした。

結果として、レガシーシステム群の中で広告配信システム部分のみ切り離す形となりました。

ただ、オールアバウトでは全体としてレガシーシステムをリプレイスする方向で動いており、今回の広告配信システムはその一環でもありました。

このリプレイスを通して、1つ1つ地道にレガシーシステムを改善していき、新しい施策に対応できるようなシステムにしておくことが、 メディアの成長において重要であると実感しました。

*1:Googleが提供するアドサーバー。

*2:Amazon Web Servicesが提供するオンラインストレージサービス。