DOORS DX

ベストなDXへの入り口が
見つかるメディア

Rtoaster insight+ のジョブ機能リアーキテクトに関する検証

公開日
2024.07.17
更新日
2024.07.17
Rtoaster insight+のジョブ機能リアーキテクトに関する検証<エンジニアブログ>

XaaSユニット プロダクトエンジニアリング所属の岡です。
ブレインパッドは、企業のデータ活用・DXやデジタルマーケティングを支援するデータビジネス・プラットフォーム「Rtoaster(アールトースター)」を開発・提供しています。

Rtoaster insight+* では、データを抽出・加工するためのジョブ機能(以降ジョブ)を提供しています。
ジョブを実行している裏側のアーキテクチャは、Rtoaster insight+ のジョブ機能の開発初期から大きく変わっていません。
開発初期は主にコスト面を重視していたため、現在の開発・運用の点で最適化されてない部分があります。
また、開発当時からGoogle Cloudのサービスがいくつかリリースされていることもあり、以前よりもアーキテクチャの選択肢が増えました。

このような課題背景から、現在のアーキテクチャをリアーキテクトするための検証をしたので、その事例について紹介します。

*Rtoasterは、お客様ひとり一人にパーソナライズした顧客体験を実現するため、「action+」「insight+」の機能を備えています。
Rtoaster indight+ は、多種多様な顧客データを一元管理し、顧客を軸としたデータ統合ができるCDP(カスタマーデータプラットフォーム)です。
Rtoaster 概念図

Rtoaster insight+ のジョブについて

ジョブの入出力に外部ストレージを指定することで、Rtoaster insight+(BigQuery)へのファイルの入力およびRtoaster insight+(BigQuery)に格納したデータのファイル出力を行うことができます。
また、Rtoaster insight+(BigQuery)に取り込み済みのデータに対して任意のクエリで別のデータを抽出することも可能です。
外部ストレージは、S3、GCS、SFTPに対応しています。対応しているファイル形式は、入力元はCSV、出力先はJSONとCSVです。稼働状況としては、1日に数千個のジョブが実行されています。

Rtoaster insight+ のジョブ機能
図1 Rtoaster insight+ のジョブ機能

現行アーキテクチャと問題点

現行アーキテクチャ

ジョブの現行アーキテクチャは以下のようになっています。図2のアーキテクチャは簡略化されたものであり、実際のアーキテクチャは図の構成より多少複雑になっています。

Rtoaster insight+ ジョブ機能 現行アーキテクチャの簡略図
図2 現行アーキテクチャの簡略図

図の通り、ジョブのアーキテクチャは大きく分けると構成が2つになります。

構成1と構成2の主な違いはジョブの実行環境です。構成1ではApp Engine、構成2ではCompute Engine(以降GCE)をそれぞれ使用しています。
App Engineでは入力がクエリ、出力がBigQueryテーブルであるジョブの実行環境で、それ以外のGCSやS3、SFTPが入出力に指定されているジョブはGCE上で実行されます。また、GCE上で動作するジョブは、弊社が開発しているOSSであるcliboa*を利用しています。

*【参考】cliboa(GItHub)

問題点の洗い出し

新しいアーキテクチャを考えるために、現行アーキテクチャの問題点がどこにあるかを過去の障害記録を元に調査しました。
調査の結果、構成1より構成2の部分で障害が多いことが判明しました。いくつかある障害の中でも、GCEインスタンスの立ち上げに失敗するケースの割合が多く、失敗する理由としては以下のようなものがありました。

  • ゾーンのリソース枯渇
  • GCEメタデータサーバとの一時的な接続エラー

これらの問題は一時的なエラーであるものの、根本的に解決することは難しいです。また、エラーのリカバリーは弊社のSREチームに一部手動対応していただいていることもあり、運用コストも問題となります。


リアーキテクト検証

方針

リアーキテクトする上で特に重要視するものとして以下がありました。

  1. 現行アーキテクチャの障害ポイントが解消できる
  2. 運用コストが下がる
  3. ワークフロー機能に対応することができる

3つ目のワークフロー機能に関しては、Rtoaster insight+ ではジョブを複数繋げて実行できる「ワークフロー」という機能を提供しており、この機能にも対応できる実装・アーキテクチャでなければならないという前提がありました。

アーキテクチャ候補

現行の仕様や先に述べた問題点、リアーキテクトする上での重要ポイントなどを踏まえ、2つのアーキテクチャを考えました。
どちらのアーキテクチャでも現行アーキテクチャの問題点をある程度解消できると思われますが、実装・コスト面のメリットから最終的に候補2のアーキテクチャを検証段階では採用しました。

候補1. Dataflowのストリーミングを用いた構成

1つ目はDataflowのストリーミングを用いた構成です。
Dataflowはバッチやストリーミングデータ処理を実行できるマネージドサービスです。Cloud SQLから実行対象のジョブ情報を取得し、Pub/Subにメッセージを送信してDataflow上で処理を実行します。
マネージドサービスを利用することで現行アーキテクチャの問題点はある程度解消される見込みですが、こちらのアーキテクチャだとジョブの状態管理が難しく、ワークフローの実装が複雑になるため不採用になりました。

Dataflowを用いたアーキテクチャ
図3 Dataflowを用いたアーキテクチャ

候補2. Cloud Run Jobs を用いた構成

2つ目はCloud Run Jobsを用いた構成です。
Cloud Run Jobsは特定のタスクを実行し、完了したら終了する短期間の処理を実行するためのサーバレスプラットフォームです。
こちらの構成では、Cloud Run Jobsでジョブを実行し、App Engineでジョブの状態を管理します。このような構成にすることで、ワークフローの実装も候補1より簡単になります。
また実装面のメリットとして、既存のcliboaを用いたコードをほぼそのまま利用することが可能になります。インフラコスト面に関しても、現行アーキテクチャと同程度のスペックでほぼ変わらない結果となりました。

まとめ

これらの取り組みから現行アーキテクチャの問題点を明確にし、それを解消するアーキテクチャを考案し実装しました。
新しいアーキテクチャは、調査や実験の段階では現行アーキテクチャの問題点を解消すると思われますが、本番環境と同等の検証まで行うことはできていません。本番環境でも問題なく動かすことができるように引き続き検証を進めていきたいと思います。


本記事でご紹介した
製品・サービス
  • Rtoaster
    Rtoaster(アールトースター)
    Rtoasterは、「insight+」「action+」の2つの機能により、企業のマーケティング活動をデータドリブンに効率化し、成果創出を実現するトータルソリューションです。
このページをシェアする

株式会社ブレインパッドについて

2004年の創業以来、「データ活用の促進を通じて持続可能な未来をつくる」をミッションに掲げ、データの可能性をまっすぐに信じてきたブレインパッドは、データ活用を核としたDX実践経験により、あらゆる社会課題や業界、企業の課題解決に貢献してきました。 そのため、「DXの核心はデータ活用」にあり、日々蓄積されるデータをうまく活用し、データドリブン経営に舵を切ることであると私達は考えています。

メールマガジン

Mail Magazine