Datastreamの導入背景と活用事例
WED株式会社 / thimi0412
EM / データエンジニア / 従業員規模: 51名〜100名 / エンジニア組織: 11名〜50名
ツールの利用規模 | ツールの利用開始時期 | 事業形態 |
---|---|---|
10名以下 | 2023年9月 | B to C |
ツールの利用規模 | 10名以下 |
---|---|
ツールの利用開始時期 | 2023年9月 |
事業形態 | B to C |
アーキテクチャ
アーキテクチャの意図・工夫
- AlloyDBを起点とし、BigQueryに集約する構成
- DatastreamとAlloyDBの接続に関してはprivate connenctionを使用してセキュアに接続
- ユーザーの個人情報(電話番号など)も含まれているのでデータマスキングを使用して閲覧できる権限を絞っている
導入の背景・解決したかった問題
導入背景
ツール導入前の課題
当社が開発・運営するレシート買取アプリONEは、分析基盤としてBigQueryを使用しており、2023年9月にDB(AlloyDB)移行プロジェクトがあり、そのタイミングでDatastreamを導入しました。
課題としては以下の通り
- DBの移行となり既存のBigQueryへのデータ転送を使えなくなること
- 自前のGKEにAirflow + Digdagの環境を作成していて管理が大変になってきている
- アプリケーション側のDBのschemaの変更にBigQuery側の対応が追いつけない
どのような状態を目指していたか
- なるべくGCPのフルマネージドなサービスを使用して管理や運用を簡潔にしたい
- アプリケーション側のDBのschemaの変更に対応できる
上記のような状態を目指しており、会社のや事業が成長するに比例して、新規プロダクトや新機能に使われる新しいテーブルやカラムを連携できるようにしたいと思っていました。
導入の成果
- BigQueryへのデータ転送が簡素化され運用が楽になった
- ServerSideの開発によるスキーマの変更に対応できるようになりData Engineerの対応が無くなった
- ほぼリアルタイム分析を行えるようになった
- BigQueryにデータが同期されるのでCloudComposer等によるETL処理との親和性が上がった
導入時の苦労・悩み
パーティションの設定ができない
DatastreamをAlloyDBとBigQueryの接続を完了し、データがBigQueryに連携されるようになりました。連携が開始すると連携元のテーブルと同様の名前で各テーブルが作成されます。 しかし、大規模なテーブルになるとテーブルにパーティションの設定を行いクエリのコストを抑えることを行いますが、作成されるテーブルにパーティションの設定を行うことができません。
こちらで各種検証を行い、BigQueryのテーブルが作成されたらそれをパーティションテーブルにするスクリプトを作成して、各テーブルに対してその処理を実行していきました。
データが多いとバックフィルに時間がかかる
Datastreamはデータソース元のDBにあるテーブルにinsert, update, deleteのイベントが発生するとそのイベントをもとにBigQueryに同期される仕組みになっています。しかし、これだと過去のデータが同期されないという問題があり、これを解決するためにバックフィルという過去のデータを連携する機能があります。
当時(2023/09)はレシート買取枚数が9億枚を超えておりそれに関連したテーブルをバックフィル機能を使用して過去分を全て連携しようとしたと1ヶ月ほどかかってしましました。データの転送の順番も設定できない(2018年から転送 or 直近1年を先に送るなど)ので実際のデータの集計等の業務を行うのに1ヶ月ラグが発生してしましました。
詳しくはWED Engineering Blogに記載されています。
導入に向けた社内への説明
上長・チームへの説明
以下の理由等を踏まえて共有。
- 既存のBigQueryへのデータ転送が負債になってきており、スキーマ変更等の連携漏れによる転送の失敗や運用やメンテナンスがコストになっている
- Datastreamフルマネージドなサービスなので運用が簡素化され誰でも運用が行える
- ほぼリアルタイムな分析を行える
活用方法
- エンジニアによる本番、staging環境のデータの確認
- OPS/UC(ユーザーケア)チームによるユーザー情報やポイント獲得履歴の確認
- リアルタイムに近い分析によるキャンペーン等の監視
よく使う機能
- Metabase(BIツール)を使用した分析やデータの閲覧
ツールの良い点
- アプリケーションで使用しているDBのデータをBigQueryに転送できる
- スキーマの変更に対応してBigQuery側もスキーマが変更される
ツールの課題点
- パーティションテーブルの設定ができない
- 大量データでのバックフィルに時間がかかる
- DBとの接続などのリソース作成に学習コストがかかる
ツールを検討されている方へ
今回は既存のサービスに対してDatastreamを導入しましたが、新しくサービスを立ち上げたり、データ量が少ないタイミングで使用や移行するのはとてもいいと感じました。 アーキテクチャ的にもシンプルに作れるところや、DBのスキーマの変更に柔軟に対応できるところを私は強くお勧めしたいです。
今後の展望
弊社ではDBとしてAlloyDBを使用しましたが、それ以外のDBも対応しています。パーティションやコネクションの設定などには課題がありますが、同じGCPのサービスなので今後の親和性の向上に期待しています。
WED株式会社 / thimi0412
EM / データエンジニア / 従業員規模: 51名〜100名 / エンジニア組織: 11名〜50名
よく見られているレビュー
WED株式会社 / thimi0412
EM / データエンジニア / 従業員規模: 51名〜100名 / エンジニア組織: 11名〜50名
レビューしているツール
目次
- アーキテクチャ
- 導入の背景・解決したかった問題
- 活用方法