Upgrade to Pro — share decks privately, control downloads, hide ads and more …

パフォーマンスとコスト改善のために法人データ分析基盤をBigQueryに移行した話

 パフォーマンスとコスト改善のために法人データ分析基盤をBigQueryに移行した話

イベントページ:
・TECH PLAY:https://techplay.jp/event/969003
・connpass:https://tech-street.connpass.com/event/342831/

Seiya Umemoto

January 30, 2025
Tweet

More Decks by Seiya Umemoto

Other Decks in Technology

Transcript

  1. 今後の課題・方針や各種技術・ツールへの言及等は、個人の見解や 知見のシェアを目的としており、組織を代表するものではありません。 自己紹介 名前:梅本 誠也 X(旧Twitter): @seiyasm18 業務: データエンジニア 法人データ基盤構築、運用

    ETLやデータカタログツール選定及び導入のPoC LLMアプリエンジニア 全社向けの生成AIチャットアプリ開発 社員の目標設定を支援する生成AIチャットアプリ開発 LLMOpsチームでのR&D活動 経歴 韓国5年間留学、フィリピン&アメリカ短期留学経験有り 学生時代の研究テーマ: 自動トレード、ラジコンカーの自動走行 趣味: 登山、ランニング、キングダム、Pivot、技術関連のオフ会 好きなプログラミング言語: Go, TypeScript, Python 好きなサービス: Google Cloud Run, Azure AI Foundry 4
  2. 今後の課題・方針や各種技術・ツールへの言及等は、個人の見解や 知見のシェアを目的としており、組織を代表するものではありません。 法人データ分析基盤の概要 7 • 分析環境/BI環境 • 全社向けの共通基盤。 • 専用のAWSアカウントを発行することで全社員がアクセスできる

    • 課題点 • 7000人規模の会社で共通管理していることもあり – コンプライアンスチェックに時間がかかる – 実際全てのデータソース(SFDC等)を基盤側に反映できているわけ ではない、、 目的に特化したデータ分析基盤を独自に作り、アジリティを確保したい AWS上に法人データ分析基盤を構築 • 今回は法人に関わるデータの分析基盤を独自に構築 ・ 人事向け等、他にも別プロジェクトで構築済みのものも存在
  3. 今後の課題・方針や各種技術・ツールへの言及等は、個人の見解や 知見のシェアを目的としており、組織を代表するものではありません。 全社基盤を見据えた法人データ分析基盤の構想 なぜ法人データ分析基盤が必要だったのか? ・背景 ・全社分析基盤に統合されていないデータが存在(例:未連携のSFDCデータ) ・組織横断分析の課題 ・全社分析基盤のデータのみでは分析に必要な情報が不十分 ・事業部ごとの独自データも考慮した基盤が必要 ・データ仮想化とBigQuery構築の背景

    ・データソース側の未整備により、プッシュダウンが効かずパフォーマンス劣化 ・データ仮想化の最適化が困難→活用しきれず ・データ仮想化サービスの利用停止を検討し、BigQuery中心の新基盤を構築 13 ・データメッシュとSSoTの考え方 ・SSoTの概念をデータメッシュに統合し、各ドメインで一貫性と正確性を維持 ・事業部側の各データソースはSSoTとして機能 ・今後全社的にはデータメッシュによる統合を目指す
  4. 今後の課題・方針や各種技術・ツールへの言及等は、個人の見解や 知見のシェアを目的としており、組織を代表するものではありません。 データ仮想化技術の導入 コンプライアンス観点 ・データを移動せずにリアルタイム統合が可能 ・各部署の独自DB(Salesforce, ERP, RDB, CRMなど)をそのまま活用できる ・SQLベースで統一されたデータアクセスを提供し、Power

    BI / TableauなどのBIツ ールとシームレスに連携可能 導入の背景と制約 ・全世界的に導入事例が多い ・当時、当該データ仮想化ツールがクラウドネイティブではなく、セルフホスティングの選択肢の みが提供されていた ・社内のコンプライアンス上も、外部SaaSよりも AWS共通基盤でのセルフホスティングが推奨 されていた AWSのEC2上に基盤を構築 14
  5. 今後の課題・方針や各種技術・ツールへの言及等は、個人の見解や 知見のシェアを目的としており、組織を代表するものではありません。 新たな法人データ基盤の構築先をどうするか 17 社内で活用実績のあるサービスを検討 DWHとしての移行先候補 ・BigQuery ・Snowflake ・Redshift ・Azure

    Synapse Analytics BigQueryを有力な選択肢として採用 ・フルマネージド、従量課金、自動スケーリングの要素に加え、隣接していたチームがDataplex & Looker & BigQueryを活用しており、知見を活かしながらスピード感を持って進められることがで きると判断。 ・部署内でもGoogle Cloud基盤でのアプリケーション構築の実績が多く、親和性が高いことが見 込まれる
  6. 今後の課題・方針や各種技術・ツールへの言及等は、個人の見解や 知見のシェアを目的としており、組織を代表するものではありません。 補足:なぜBigQueryなのか? 全社基盤という構想の上では、マルチクラウド環境に適したSnowflakeを選択する余地はあるが、部署内での他プロジェクトとの親和性 を考慮すると、Google Cloudと親和性の高いBigQueryを選定する形となった。 また現状はUSリージョンでしか使えないが、 BigQuery Omniによりクロスクラウドの分析が可能になるため、そちらの発展にも期待したい。 18

    項目 BigQuery Snowflake Redshift Azure Synapse スケーラビリティ 自動スケール 仮想ウェアハウス単位でスケー ル Redshift Serverlessで自 動スケール サーバーレス SQLプールで自 動スケール コストモデル 従量課金(使った分だけ) 従量課金(クレジット消費) Redshift Serverlessで従 量課金 サーバーレス SQLプールで従 量課金 運用の手軽さ フルマネージド フルマネージド Redshift Serverlessでフルマ ネージド サーバーレス SQLプールでフルマ ネージド Google Cloudとの親和性 Google Cloudネイティブサー ビス Google Cloudリージョンでの Snowflake利用が可能 AWSサービスとし てGoogle Cloudとの直接統合 は限定的 AzureサービスとしてGoogle Cloudとの直接統合は限定的 (他Google Cloud製品と も統合容易) 社内知見の有無 他チームが活用中 知見なし 他チームが活用中 知見なし
  7. 今後の課題・方針や各種技術・ツールへの言及等は、個人の見解や 知見のシェアを目的としており、組織を代表するものではありません。 フェーズ分け→受け入れ条件 ETL・データマネジメントツールの選定 ・Google CloudのETL&データマネジメント製品(Dataproc, Dataplex等)も候補として検討 ・最終的にTroccoを選定した主な理由 ・データマネジメントの使いやすさが優れていた ・データ転送とデータマネジメント機能の統合が可能だった

    移行フェーズと受け入れ条件 ・Ph1: データ仮想化で実施していた処理をETL+BigQueryで代替 ・受け入れ条件: データマネジメントチームの検証で、移行後のデータに差分がないことを確認 ・月次更新→日次更新が可能になることを保証 ・Ph2: データカタログの整備(今後の課題) 20 ただし、法人データ基盤構築後の運用面で課題が顕在化 →PoC段階では想定していなかった要件が増え、部分的にGoogle Cloudに切り出すことに (Cloud Run Jobs等)
  8. 今後の課題・方針や各種技術・ツールへの言及等は、個人の見解や 知見のシェアを目的としており、組織を代表するものではありません。 業務フローと現状のデータ仮想化基盤における機能の洗い出し Virtual private cloud (VPC) Data Virtualization BI環境

    pull (JDBC) push (CSV) AWS Cloud リアルタイムデータ取得 ファイルデータのリアルタイム参照 BI環境へのデータ連携 Private subnet Private subnet Private subnet 旧分析環境 21 ・Redshift(旧分析環境)上のデータをVPC内で JDBC経由でPullし、データを取得 ・EC2内で社内ファイルサーバをマウントし、デー タ仮想化基盤から参照 ・データマネジメントチームが直接アップロードするファイルあり ・他組織から定期的に共有されるファイルあり ・データマートをCSVとして社内BI環境へPushし、 BIツールと連携 pull (ファイル) ※1: 現在は新分析環境としてAzure Databricksへ移行済み
  9. 今後の課題・方針や各種技術・ツールへの言及等は、個人の見解や 知見のシェアを目的としており、組織を代表するものではありません。 洗い出した機能要件のフィジビリ検証 BI環境へのデータ連携 ・データマートをCSVとして社内BI環境へPushし、 BIツールと連携 1. 移行前(現状の問題点) リアルタイムデータ取得 ・Redshift(旧分析環境)上のデータをVPC内でJDBC

    経由でPullし、データを取得 ファイルデータのリアルタイム参照 ・EC2内で社内ファイルサーバをマウントし、 データ仮想化 基盤から参照 ・データマネジメントチームが直接アップロードするファイルあり ・他組織から定期的に共有されるファイルあり 2. 移行後(Google Cloudでの対応策) AWSのVPCからGoogle Cloudへ移行 ・移行により、AWSのVPC内でのデータ取得が困難に ・新たなデータ連携方式が必要 ファイルデータの連携方式をCloud Storageに変更 ・社内ルールによりCSV連携が必要 → CloudStorageにアップロード ・IAMによるアップロード許可を設定 ・元々ファイルサーバーにアップロードされていたデータを Cloud Storageに統合(合意済み) Cloud Storage → Eventarc → Cloud Workflows で処理 ・Cloud Run Jobsを活用し、確実にデータ転送 ・リアルタイムではないが、近い形で処理可能 (合意済み) プロキシ経由でBigQueryへアクセス ・VPC Service Controls(VPC SC)を利用し、 セキュリティを確保 22
  10. 今後の課題・方針や各種技術・ツールへの言及等は、個人の見解や 知見のシェアを目的としており、組織を代表するものではありません。 法人データ基盤構成図 Cloud Storag e Workflows 1. ファイルアップロード 2.

    トリガー実行 ファイル前処理ジョブ Cloud Run Jobs 3. Workflowsを実行 4. Cloud Run Jobsを起動 Eventarc 5. 前処理後のファイルをアップロード Eventarc 6. トリガー実行 Workflows 7. Workflowsを実行 8. データ転送を実行 (SDKを使っているが、 内部ではbq loadを実行) ファイル転送ジョブ Cloud Run Jobs 9. データセットのテーブル データを更新 分析 基盤 ユーザー 前処理が必要なファイルの場合は ファイル前処理をする 1. Excelファイル 2. Shift-JISのCSVファイル 3. カラムのマッピングが必要なファイル UTF-8のカラムマッ ピングがされたCSV BigQuery ここでデータ更新差分の チェック→slack通知ま で行っている 23
  11. 今後の課題・方針や各種技術・ツールへの言及等は、個人の見解や 知見のシェアを目的としており、組織を代表するものではありません。 補足:なぜCloud Run Jobsなのか? 24 前提:CSV連携をトリガーにBigQuery側へデータ転送する →DataprocやDataflowのような分散処理基盤は現状は必要ないと判断し、Cloud Run Jobsでミニマムに構築

    →ただ、今後要件次第で部分的に組み込む可能性はある Cloud Run Jobs Dataflow(Apache Beam) Dataproc(Spark) セットアップの容易さ コンテナ実行のみでOK(軽 量) Apache Beam パイプラインの定義 が必要 Spark/Hadoop クラスタのセッ トアップが必要 運用負荷 フルマネージド・ジョブ単発実行 (シンプル) ジョブ監視・パイプライン管理が必要 クラスタのスケーリングや管理が必 要 適したジョブ規模 小〜中規模のバッチ処理向け ストリーミング&大規模バッチ向け 大規模データの分散処理向け 処理の柔軟性 コンテナ内で自由にコードを記 述可能(言語制約なし) Apache Beam の制約あり(特殊 なAPIが必要) Sparkエンジンの制約あり スケーラビリティ 自動スケール(ジョブ単位で実 行) ストリーミングスケール可能 Spark クラスタで分散処理 コスト 実行中のみ従量課金(アイドルコ ストなし) ジョブワーカーの最低コスト発生 クラスタ維持コストがかかる Eventarc / Workflows との連携 親和性が高く統合しやすい (シンプルなバッチ処理向け) パイプライン管理が複雑 ワークフロー組み込みが難しい ユースケース 軽量・中規模のバッチ処理 (ETL, データ整形, マッピング) ストリーミングデータ処理(ログ分 析, IoT, Big Data) 大規模バッチ(ML, DWH 処理, 分散ETL)
  12. 今後の課題・方針や各種技術・ツールへの言及等は、個人の見解や 知見のシェアを目的としており、組織を代表するものではありません。 法人データ基盤全体構成図 SFDC 分析基盤 & 外部連携 Raw Data用 データセット

    BigQuery BIツール データカタログ データ活用層 加工済み データセット データ連携層 Cloud Run 必要に応じてカスタマイズ データレイクハウス データマート作成
  13. 今後の課題・方針や各種技術・ツールへの言及等は、個人の見解や 知見のシェアを目的としており、組織を代表するものではありません。 SQLのリファクタリング→データマートの構築 Resources exceeded during query execution: Not enough

    resources for query planning - too many subqueries or query is too complex 仮想データベース上ではビューで構築できていたものだが、 BigQuery上では中間テーブルで対処。 ※CREATE TEMP TABLE句での対処も可能だが、クエリ実行時の推 定バイト数の計算ができなくなるため、中間テーブルで対処する形とした。 27
  14. 今後の課題・方針や各種技術・ツールへの言及等は、個人の見解や 知見のシェアを目的としており、組織を代表するものではありません。 SQLのリファクタリング→データマートの構築 Cloud Run Jobs(32GB)のメモリ超過 データ転送時の差分検知をCloud Run Jobs上で行っていたが、 10GBを超えるCSVが一部含まれていることで発生

    暫定対応:ファイルサイズに上限を設けて、巨大なCSVに対しては差分検 知を行わないように修正 恒久対応:データ分析基盤運用側で連携ファイルのサイズに上限を設けて、 それを超える場合は分割してもらう対応を入れる。 30
  15. 今後の課題・方針や各種技術・ツールへの言及等は、個人の見解や 知見のシェアを目的としており、組織を代表するものではありません。 BIで可視化→データリネージ&データカタログの整備 31 Power BIを既存で利用しているため、BigQueryへ移行後もダッシュボード(データマート)の整 合性を確認しながら検証。 データリネージの可視化 ・現状、TROCCOを利用しているが、一部の転送フローとの統合に課題があった。 ・TROCCOは転送処理ベースのデータリネージ機能を提供しており、今回の移行フローでは追加の

    工夫が必要であった。 ・Cloud Storage経由の転送が増加する中、現行の運用と調整が求められた。 ・補完的にDataplexを併用し、データリネージの可視化を強化することを検討。 データカタログの最適化 ・データカタログは、これまでTROCCOを利用していたが、 より最適なデータ管理の形を模索している。 ・今後はDataplexを併用し、統合的なデータ管理を実施予定。
  16. 今後の課題・方針や各種技術・ツールへの言及等は、個人の見解や 知見のシェアを目的としており、組織を代表するものではありません。 補足:TROCCOの制約とデータ転送の課題 ・Cloud Storageを経由したCSV連携のユースケースが増加する中、 TROCCOの転送設定が手動管理となり、運用負荷が増大する。 ・今後の拡張性を考慮すると、運用面での課題が顕著になった。 ・TROCCOのマネージドデータ転送機能は、一括設定が可能だが、 Cloud Storageのようなストレージには非対応(2025/01/30時点)

    ・BigQuery Data Transfer Service も同様の制約があり、Cloud Storageへの柔軟な転送が難しい。 ・Cloud StorageでCSV転送時、フォルダ単位での転送設定は可能だが、フォルダ 配下のCSVが単一のBigQueryテーブルに紐づく制約がある。 ・法人データ分析基盤では、フォルダ配下の各ファイルを別々の BigQueryテーブ ルに紐づける運用をしたいため、データパイプラインの実装でカバーする形を取った。 32
  17. 今後の課題・方針や各種技術・ツールへの言及等は、個人の見解や 知見のシェアを目的としており、組織を代表するものではありません。 まとめ 【取り組んだこと】 ・当初はデータ仮想化を活用し、組織のフェーズに適した基盤を構築 ・しかし、データソース側の未整備により、プッシュダウンの最適化が困難 ・結果として、データ仮想化サービスの活用が難しくなり、BigQuery中心のデータ基盤へ再構築を決 断 ・既存のデータ仮想化がカバーしていた業務フローをGoogle Cloud上で再構築し、業務影響を最小

    化 ・Power BIでダッシュボードの整合性を検証し、再構築後の運用を確立 【今後の展望】 ・dbtやデータカタログツールを導入し、データ管理を強化 ・BigQueryのアップデート(BigQuery Omni等)を考慮し、柔軟に最適な構成を検討 ・データ仮想化技術の再検討: 組織フェーズに応じた最適なデータ活用を模索 ・データ分析基盤の運用体制整備: Terraform等を活用し、申請フローと運用管理を更に強化 41