entry-header-eye-catch.html
entry-title-container.html

entry-header-author-info.html
Article by

【後編】完全自社開発の広告システム、pixiv Adsを支える技術を大公開

ピクシブ株式会社は2022年11月24日、pixivに運用型配信広告が簡単に出稿できる「pixiv Ads」をリリースしました。pixiv Adsは完全自社開発のセルフサーブ型の運用型広告プラットフォームです。実現にあたっては実に二年以上の歳月かけて、数々の技術的挑戦を行ってきました。

本日はpixiv Adsの技術を支えるエンジニア4名から、特に大きな取り組みを中心に技術発表させていただきます。

なお今回は後編記事となりますので、先に前編記事(https://inside.pixiv.blog/2023/02/17/110000)をご覧ください。

pixiv Adsの技術的挑戦

大きな取り組みとしては4つ挙げられます。記事前編で取り組みのうちの2つを紹介させていただきましたので、後編は残り2つの詳細を、担当者からお話しさせていただきます。

3. ミドルウェア・サーバーモニタリング

takashi : デプロイやバッチ処理で使用しているミドルウェア、システムのモニタリングについて担当者のtakashiとtokiからご紹介します。

Kubernetes上にサービスをデプロイするためのCDツールとして、Argo CDを使用しています。アプリケーションリポジトリのmainブランチに変更が加わると、社内Gitlab CI上でDockerイメージのビルド、Kubernetesマニフェストリポジトリのイメージタグの更新タスクが実行されるようになっており、自動で本番環境のGKEにアプリケーションの更新デプロイが走るようになっています。

また、定期的な広告配信状態の同期や、Bigtableに格納されているユーザー属性データの更新等のバッチ処理も、GKE上で稼働しており、ワークフローエンジンとしてArgo Workflowsを採用しています。

toki : KubernetesノードにはDatadogのAgentがデプロイされており、各種サーバーのメトリクスはDatadogに収集され、ダッシュボードで可視化しモニタリングに活用しています。サーバーのメトリクスだけでなく、APM(Datadog Application Performance Monitoring)も有効化しており、広告配信サーバーや広告管理システムなどへのリクエストをトレーシングしています。pixiv Adsではサービスの信頼性を監視するためにSLOの導入をしています。リクエストのエラー率やレイテンシ分布などのAPMで収集されたデータをSLOのモニタリングで活用しています。

さらに、本番環境での配信サーバーやマイクロサービスのパフォーマンスを継続的に監視するために、Cloud Profilerを導入しています。APMやCloud Profilerで得られたリクエストのトレースやCPU使用率といった情報を、ボトルネック調査やパフォーマンス改善に活用しています。

また各種サービス内部で発生したエラーは、エラー監視・管理ツールであるSentryに転送しており、エラーのSlack通知による検知、スタックトレース等を含む詳細なエラーログによる原因調査などに役立てています。

4. 膨大なログ情報を利用したデータ利活用

mytk:こちらの取り組みについては、担当者mytkとucchi-からご紹介させていただきます。 まず最初にpixiv Adsのデータ基盤について紹介します。配信ログの取得にはCloud Loggingのシンク、DBのデータ取得にはDatastream for BigQueryを用いて、全てのデータをBigQueryへリアルタイムに流し込んでいます。どのサービスもサーバーレスでオートスケールするので、エンジニアはデータの加工や活用に集中できます。 閲覧やクリックといった生ログはそのままだと取り扱いづらいので、広告配信ログや配信サマリに加工してから活用します。ELTには、全社横断で整備されたAirflowを利用しています。pixiv Adsは、社内の他プロダクトと比べて、高いデータ品質(鮮度や精度)が要求されます。全社のデータ基盤チームと緊密に連携を取りながら、開発を進めています。

ucchi-:データ品質については、先日私が別途記事を執筆しておりますので、ご覧ください。 inside.pixiv.blog

広告プロダクトは、広告効果を高めるために、データをいかに利活用できるかがビジネスの鍵です。pixiv Adsでは、広告オークションの最適化や機械学習での利用、Lookerを用いた社内の意思決定支援など、様々な用途でデータを活用しています。

pixiv Adsでは、Lookerのダッシュボードをアプリケーションに埋め込むことで、クライアントが直接データを分析できるようにしています。Lookerのlinterの一つであるLAMSを入れることで、Looker経由で計算された数値の正確性を高めています。

pixiv Adsの展望

pixiv Adsは大量リクエストの高速処理やデータ集計精度などが求められ、そのために複数のサービスとGCPプロダクトを連携する構成にしています。それ自体が複雑なものであり、少人数で隅々までマネジメントするのは難しくなっていくでしょう。

今後は、サービス間エラーの可視化やサービス間通信の運用性強化といった視点が必要になってくるかもしれません。様々な要求に対する技術選択の自由とともに、その結果に対して長く責任を持てるよう、全体の複雑化にも向き合っていきたいところです。