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

5兆レコードを超える DMMデータ基盤の開発と運用のリアル

Avatar for Kei Kei
July 03, 2025
3

5兆レコードを超える DMMデータ基盤の開発と運用のリアル

Avatar for Kei

Kei

July 03, 2025
Tweet

Transcript

  1. Vertex AI Dataflow Pub/Sub Composer BigQuery Datastream Looker Dataplex Cloud

    Build Cloud Storage Cloud Functions データ 基盤を支える主な技術
  2. 人物 役割 内容 Airflow の管理人 Airflow をクラウド上で安定運用してくれる 指揮者 何をどの順で動かすか決める Embulk

    のエンジン Embulk をクラウド上で実行する環境 作業員 データを取り出して運ぶ データ パイプラインの主要登場人物
  3. CloudBuild のステップ構成 1. 踏み台サーバ IP を取得するた めにトークン取得 2. 踏み台サーバ IP

    取得 3. SSHトンネルで、MySQL 接続 4. Embulk を実行 MySQL → BigQuery データ取り込み steps: - name: gcr.io/cloud-builders/gcloud script: |- gcloud auth print-identity-token \ --impersonate-service-account="***@***.gserviceaccount.com" \ > /workspace/token.txt; - name: 'docker.pkg.dev/★/★/embulk-container' script: |- token=$(cat /workspace/token.txt); ip_address=$(~/get_ec2_ip_address.sh ${token}); echo "${SSH_PRIVATE_KEY}" > /workspace/private.key; chmod 600 /workspace/private.key; ssh -i /workspace/private.key -p 10022 \ -o StrictHostKeyChecking=no \ -o ServerAliveInterval=60 \ -o TCPKeepAlive=yes \ -f -N -4 \ -L 3306:${MYSQL_DB_HOST}:${MYSQL_DB_PORT:-3306} \ ec2-user@${ip_address}; embulk run ${EMBULK_CONF:-~/configs/in_mysql_out_bq.yml.liquid}; ※一部簡略化しています cloudbuild.yaml
  4. 事業部 DB とのデータ パイプラインの実装例(各 DB との設定) dags/entities に DB 種別ごとにディレクトリ

    データセット毎に yaml を用意。 yaml には、データを取り込む設定を記述。
  5. データマートのパイプライン(バッチ更新) BigQuery (Scheduled Query) A.sql A.json データマート開発者 1. SQL とスケジュールのファイル作成

    2. ブランチを作って、push push/pull_request 時の挙動 1. sqlfulff コマンドで、lint を実行。 2. gcloud コマンドで、dry run を実行 本番ブランチにマージ時の挙動 1. terraform apply で、BigQuery のリソースを作成 REPLACE または MERGE などのクエリが、 スケジュール実行される。
  6. 開発組織の体制 検索基盤 チーム 4 名 ML 基盤 チーム 5 名

    データ マネージメント グループ 高橋 慶 (Manager) データ基盤開発部 藤井 亮太 (部長) アクティベーション チーム 4 名 インテグレーション チーム 4 名 カスタマーデータ プラットフォーム グループ (兼)藤井 亮太 データ アプリケーション グループ 伊藤 明大 (Manager) アナリティクス チーム 3 名 アーキテクト チーム 4 名 開発統括本部 大久保 寛 (本部長)
  7. データ基盤開発組織のカルチャー 透明性 検査 適応 やさしさ • Slack で作業ログ • GitHub

    Issue で管理 • サーベイツール • 定期的にふりかえり • 労力と効果の軸で判断 • 効果なかったら辞める • 技術マウント取らない • 困っている人を助ける