バイセル Tech Blog

バイセル Tech Blogは株式会社BuySell Technologiesのエンジニア達が知見・発見を共有する技術ブログです。

バイセル Tech Blog

バイセルのデータ基盤構築の道のりを伝えたい  - SQLで必要なデータを自由に活用できる環境を目指して -

はじめに

こちらは バイセルテクノロジーズ Advent Calendar 2023 の 22 日目の記事です。 前日の記事は大木さんの 「Google Analytics 4活用方法見直し:システムの主要クリックイベントが半自動で収集できるようになるまで」でした。

こんにちは! 株式会社バイセルテクノロジーズ(以下、バイセル)のテクノロジー戦略本部データサイエンス部の高谷です。 データアナリストチームで、主にデータ基盤の構築・運用やビジネスサイドのデータ活用促進をサポートしています。

バイセルでは、社内プロダクトや利用している外部サービスのデータを自由に活用できることを目指し、データ基盤を構築しています。

まだ理想像を実現する最中ではありますが、ここまで構築してきた経緯と実際の課題、解決策をざっくりアウトラインでお伝えします。

バイセルのデータ基盤「Pocket」について

バイセルのデータ基盤は「バイセルに関わるデータをすべてため込むポケットのようなデータ基盤となる」という意味を込めて Pocket という名前がつけられています。

技術スタックはBigQuery(Google Cloud Platform)を利用しています。

Pocket構築前の課題

Pocketが構築される以前も意欲的にデータ活用が行われていました。(例:データを基にした新施策の実施や既存業務の改善など)

しかし、統合的なデータ基盤が存在しなかったため、社内プロダクトのデータは主にRDBからBIツールを通して提供されていました。 そのため、以下の課題が発生していました。

①データを自由に参照できる環境がない

BIツールでは、データ部門がデータマートを作成し提供していました。 データマートという形なのですべての利用者が求める形になっていませんでした。

その結果、

  • 何が必要なデータかビジネスサイドで判断できない
    • 自社データの性質の理解が進まず意思決定に必要なデータが何か判断できない状態にありました
  • 何が必要なデータか?を判断するためにあたりを付けてデータ抽出の依頼が殺到
    • もっとデータを活用したい!という意思に応えられていませんでした

データ部門も人数が限られているため業務が逼迫し、データ提供までに時間がかかってしまっていました。

②安定したデータ活用環境が存在しない

データ活用環境として提供していたBIツールでは、データ容量がオーバーし不安定な稼働が続いていました。

また、BIツールのデータソースはプロダクトのRDBを直接参照していました。

各プロダクトのRDBでは、データマートを作成できる十分なスペック構成が備わっておらず(データマートを作製するシステムではないため当たり前ですが)、利用により負荷をかけている状況でした。

物理的な課題ももちろんですが、「データ活用したい」という意思を妨げるような課題が多く発生してることが、会社として望ましくない状況だったと思います。

課題の解消のためにトライしたこと

上記に挙げた課題の解消を進めるべく、データ基盤Pocketの構築が進められました。

構築を進める上でのテーマは以下の3点です。

各プロダクトのデータや利用している外部サービスのデータをすべてPocketに集める

利用者ごとに必要となるデータは様々なので、一部のデータだけがあれば十分ということはありません。 多くの利用者に最大限データを活用してもらうために、すべてのデータをPocketに集める必要があります。

全社的に自由にデータを参照・分析できる環境を用意する

データ活用の際には、スピード感を持って意思決定を進めていくことが必要となります。 そのため、

  • 自由に = SQLを利用してデータを抽出(個人・秘匿情報は除く)
  • 分析 = 速報値を持った迅速な意思決定や傾向分析における施策決定

これらを実現できる環境構築を進めることとなりました。

担保されたデータの提供

データ活用には分析のほかに集計 (各自の業績やお金に関わるものの集計)も含まれます。 分析はある程度の欠損や遅延があっても大枠の分析結果には影響を及ぼさないですが、集計に利用するデータは正確な情報であることが前提となります。

そのため正確性に欠けるデータが提供されてしまうと、「検証していないデータは集計では利用しない」など利用に制限が生じ、データ活用の意思を妨げてしまいます。

そのような状況とならないように遅延や欠損がないデータであることを担保する仕組みが必要となりました。

Pocketの構築について

Pocketの構築フェーズを大きく3つに分解し、それぞれのフェーズでトライしたことや課題をお伝えします

  • 超初期
  • 分析基盤構築期
  • 統合基盤構築期 ← イマココ

超初期

社内プロダクトのデータをPocketに集める

ここでいうデータを集めるとは各プロダクトのRDBのテーブルコピーをPocketに作成することを指します。

データを集める中で既存BIツールの一部データソースをPocketに変更しました。 BIツールのデータマート作成処理がPocketに変更され、プロダクトのDBへの負荷が軽減し運用コストが削減されました。

課題

Pocketにデータが集まり始めましたが、自由にデータが参照できる環境は提供できていませんでした。 そのような環境を構築するための、セキュリティリスクや権限管理などの検討がまだ進められていなかったためです。

そのため、依然としてデータ抽出の依頼数が多い状態は変わっていませんでした。

分析基盤構築期

ニアリアルタイムなデータ収集

社内プロダクトのデータを集めると同時に、迅速な意思決定のためにニアリアルタイムなデータを参照できる分析基盤の構築が進められました。

ニアリアルタイムという点からCDC(Change Data Capture)を採用し、CDCで取得したデータを変換→各プロダクトのテーブルと同じ形でテーブル関数でデータが参照できる形としています。

またここで、ほぼすべてのプロダクトとのデータパイプラインが構築されました。 技術的な課題で未接続のプロダクトもあるものの、ビジネスサイドが日常的に利用するデータを優先的に接続し、Pocketのデータを日常的な分析に利用することが可能となりました。

全社的に自由にデータを参照・分析できる環境の用意

個人情報の閲覧や、グループ会社間のデータ参照関係などを整理し、権限設定することで適切なデータを自由に参照できる環境が構築されました。

※ここで以前の記事でご紹介した、セキュリティ的なリスクや自由なデータ参照を妨げない設計を検討しています!

tech.buysell-technologies.com

自由にデータを参照・分析できる環境が用意できたことにより ①データを自由に参照できる環境がない という課題が一気に解決方向へ進みました。

データをSQLで取得→可視化して分析するというサイクルが利用者自身で完結するため、データ部門とのやり取りや待ちもなくなりスピード感はかなり上がったといえます。 実際に、データ抽出やBIツールの改善要望の問い合わせが月10件程度から1~2件へ減少し、利用者自身で解決できていると考えられます。

また環境構築と同時に、SQLの利用をサポートする取り込みも行いました。

  • SQLの基本的な資料を作成し展開
  • SQLに関するもくもく会を開催
  • SQLの不明点などを質問するためのSlackチャンネル解説

これらの取り組みは今現在も続いています。

課題

自身でデータ抽出できるようになったことで派生した課題や、運用における課題が発生しました。

  • プロダクトのデータがそのまま分析に利用されている
    • 買取・販売は日々流動的に行われるため、締めの概念が存在せず、どのタイミングでデータが正しい状態になっているのかが分からない
  • 集計利用を推奨できない
    • データを検証して担保するという仕組みが含まれておらず、欠損や連携の遅延が発生する可能性があるため、集計利用を推奨できない
  • ビジネスサイドのSQLへの抵抗感
    • サポートは行ってるものの、プログラミング言語というイメージが強くハードルが中々下げきれない

そのほかにも技術負債や権限管理のような運用上の課題が発生していました。

分析基盤を公開したことによってPocketの利用者は400名を超え、ますます活用が進んでいますが、このように利用者が増えたからこその課題も見えてきました。こうした課題を解消し、Pocketをよりよくしていくために次フェーズへ進もうとしています。

統合基盤構築期

役割に捉われないデータ活用環境の構築、安定稼働

先にも記載したまさに イマココ です。 分析基盤から、集計も可能な統合基盤へとなるために以下の仕組みを実装・検討しています。

  • 連携されたデータの検証
    • 欠損や遅延が起きてないことを担保しているデータを構築する
    • CDC連携は速報値や傾向分析用、検証済みデータは集計用、といった具合に利用方法ごとに必要な機能を兼ね備えたデータ基盤を整備する
  • 社内プロダクト以外のデータの連携の仕組みの構築
    • ETLを利用し外部サービスやビジネスサイドが持っているローカルなデータを連携、Pocketのデータの幅を広げSSOTを目指す
  • 運用の安定化
    • 既存BIツールの廃止
    • 技術負債の解消、運用の体系化

またこれらの取り組みの他に、引き続きSQL教育やデータ活用のナレッジ共有も平行して実施しています。

統合基盤があり正しく活用できる状態を整えることで、データ活用がより迅速かつ正確に行えるようになることを目指しています。

まとめ

バイセルのデータ基盤であるPocket構築の経緯について3つのフェーズに分けてお伝えしました。 理想に向けて構築途中ではありますが、最初に挙げたような課題は徐々に改善できていると実感しています。

データ基盤を構築していて、同じような課題を抱えている方に伝わったら嬉しいです。

今後もバイセルのデータ活用促進に貢献できる基盤構築と運用を邁進します!!

最後にBuySell Technologiesでデータサイエンティストを募集しています。興味がある方はぜひご応募ください!

herp.careers

明日のバイセルテクノロジーズ Advent Calendar 2023 は岡島さんの「チームが「ワクワク」するために、PMの私が優先度判断で大事にした5つのポイント」です、そちらもぜひ併せて読んでみてください!