1.4K Views
March 21, 25
スライド概要
2025/03/14に開催されたオフライン勉強会「DeNA Data/ML Engineering Night」の発表スライドです。
イベント概要: https://dena.connpass.com/event/339744/
DeNA が社会の技術向上に貢献するため、業務で得た知見を積極的に外部に発信する、DeNA 公式のアカウントです。DeNA エンジニアの登壇資料をお届けします。
TechCon 2025 AfterEvents March 14, 2025 データ基盤の新規構築で取り組ん だテストピラミッドの理想と現実 株式会社ディー・エヌ・エー ソリューション本部データ統括部データ基盤部 濱田 識 © DeNA Co., Ltd. TechCon 2025 AfterEvents / DeNA Data/ML Engineering Night 1
(登壇者紹介) 濱田 識 ソリューション本部データ統括部データ基盤部 ゲームエンタメグループ データエンジニア ● SES 期 (2014/04~2018/03) ○ ● ● フリーランス・スタートアップ 期 (2019/03~2022/09) ○ 情報系システム、バックエンド・クラウド …etc ○ PdM・バックエンド/ML/データ/クラウド エンジニア 株式会社ディー・エヌ・エー (2022/09 ~) ○ © DeNA Co., Ltd. 情報系システムの開発・運用・保守 …etc ゲームエンタメのデータ基盤の開発・運用・保守 ● 趣味は 鍵盤・テニス・ボードゲーム ● ポケポケはコレクション勢 TechCon 2025 AfterEvents / DeNA Data/ML Engineering Night 2
目次 1 DeNA ゲームドメインのデータ基盤の特徴 2 データ基盤のテストピラミッドの定義(理想) 3 実際にどのように進んだか(現実) 4 どうしてこうなったのか © DeNA Co., Ltd. TechCon 2025 AfterEvents / DeNA Data/ML Engineering Night 3
DeNA ゲームドメインの データ基盤の特徴 © DeNA Co., Ltd. TechCon 2025 AfterEvents / DeNA Data/ML Engineering Night 4
リリース直後から即分析 ● ● ● © DeNA Co., Ltd. ゲーム自体の開発と並行して分析基盤の開発を進める ○ 機能追加などに伴う分析要件追加は順次対応 ログはゲームタイトルのエンジニアに依頼して実装頂き、データ基盤・分析 側で確認 ○ タイトルリリース時は新規ログをたくさん設計・確認しないといけない ので大変 ○ タイトルによっては 推薦用ログも仕込んでもらう ゲームタイトル側で実装頂いたログを元にデータパイプラインを開発 ○ スケジュールによっては、ダミーデータを用意してデータパイプライン を開発することも TechCon 2025 AfterEvents / DeNA Data/ML Engineering Night 5
そのほかの特徴 データの利用用途が多岐 ゲーム内 行動分析向け CS 向け © DeNA Co., Ltd. データ量がとにかく多い マーケティング向 け 他ドメインと比べ てデータ量は圧倒 的 BigQuery の コス ト削減の効果が高 い AI 向け 大量データが故 に BigQuery への データ取り込み に苦労すること も 日を追うごとの データパイプライ ンの処理時間増加 TechCon 2025 AfterEvents / DeNA Data/ML Engineering Night 6
データ基盤のテストピラミッド の定義(理想) © DeNA Co., Ltd. TechCon 2025 AfterEvents / DeNA Data/ML Engineering Night 7
今回お話するテストのスコープ DataQA DataPlatform データ提供元1 加工済み データ 生データ データ提供元2 DataPlatformQA DataPlatform データ提供元1 生データ データ提供元2 © DeNA Co., Ltd. 加工済み データ TechCon 2025 AfterEvents / DeNA Data/ML Engineering Night 8
今回お話するテストのスコープ DataQA DataPlatform データ提供元1 生データ データ提供元2 こちらの話をします 加工済み データ DataPlatformQA DataPlatform データ提供元1 生データ データ提供元2 © DeNA Co., Ltd. 加工済み データ TechCon 2025 AfterEvents / DeNA Data/ML Engineering Night 9
よくあるテストピラミッドの説明 System Test Test Cost ● ○ ● UI Test UI Test System Test ○ ● ● 複数のユニットを結合して一連の 処理の挙動を確認 Unit Test ○ ● Unit Test 本番相当の構成で挙動を確認 Integration Test ○ Integration Test 画面操作で挙動を確認 個々のユニットの挙動を独立して 確認 それぞれの数が粒度の細かい順に 積み上がっていると理想的 Test Amount © DeNA Co., Ltd. TechCon 2025 AfterEvents / DeNA Data/ML Engineering Night 10
よくあるデータ基盤の構成要素 ObjectStorage DataWarehouse BI Tool Source raw ware house mart Source Source Workflow Engine © DeNA Co., Ltd. TechCon 2025 AfterEvents / DeNA Data/ML Engineering Night 11
よくあるデータ基盤の構成要素 ObjectStorage DataWarehouse BI Tool Source raw ware house mart Source Source 赤マルをつけたそれぞれの処理は Unit Test として担保するで良さそう Workflow Engine © DeNA Co., Ltd. TechCon 2025 AfterEvents / DeNA Data/ML Engineering Night 12
よくあるデータ基盤の構成要素 ObjectStorage DataWarehouse BI Tool Source raw Source ware house mart 開発環境で Workflow Engine からの定期実行が通れば System Test が OK として良さそう Source Workflow Engine © DeNA Co., Ltd. TechCon 2025 AfterEvents / DeNA Data/ML Engineering Night 13
よくあるデータ基盤の構成要素 ObjectStorage DataWarehouse BI Tool Source raw Source ware house mart Integration Test の定義って 曖昧だよな... Source Workflow Engine © DeNA Co., Ltd. TechCon 2025 AfterEvents / DeNA Data/ML Engineering Night 14
アーキテクチャ Pythoh/dbt 処理 は docker image に纏めて Cloud Batch で実行 Airflow は Batch の処理を順番に キックするだけ Composer Artifact Registry BQ への取り 込み処理は Pythonで実装 データ加工は dbt で実装 Looker Batch 集計データ BigQuery Staging BigQuery Data source Cloud Storage, etc. python © DeNA Co., Ltd. Batch dbt TechCon 2025 AfterEvents / DeNA Data/ML Engineering Night 15
各テストの定義 ● ● ● © DeNA Co., Ltd. Unit Test(単体テスト) ○ dbt モデル 単体で動作を担保 ○ python のコードの entrypoint の実行が動作することを担保 ○ 実装担当者がローカルの実行環境で動作を担保 Integration Test(結合テスト) ○ ローカルの実行環境で関連した dbt モデルが一連の流れでの動作でする ことを担保 System Test(システムテスト) ○ クラウドの sandbox 環境で Airflow からの DAG 実行が動作することを 担保 TechCon 2025 AfterEvents / DeNA Data/ML Engineering Night 16
実際にどのように進んだか(現実) © DeNA Co., Ltd. TechCon 2025 AfterEvents / DeNA Data/ML Engineering Night 17
新規構築の時にやること 関係者と 要件を握ら なきゃ スケジュー ル引かな きゃ 仕様書を整 備しなきゃ 実装タスクを 分割してお願 いしなきゃ 単体・結合・ システムテス トしなきゃ © DeNA Co., Ltd. 環境構築し なきゃ 実装レ ビューしな きゃ 受入テスト しなきゃ TechCon 2025 AfterEvents / DeNA Data/ML Engineering Night 18
新規構築の時にやること 関係者と 要件を握ら なきゃ スケジュー ル引かな きゃ 環境構築し なきゃ いろんなやることがある中でテストも担保するのは大変 実装タスクを 実装レ 仕様書を整 分割してお願 ビューしな 備しなきゃ いしなきゃ きゃ 単体・結合・ システムテス トしなきゃ © DeNA Co., Ltd. 受入テスト しなきゃ TechCon 2025 AfterEvents / DeNA Data/ML Engineering Night 19
実装以降の品質担保 要件整理 仕様策定 環境構築 実装・Unit Test Integration Test System Test UserAcceptance Test © DeNA Co., Ltd. TechCon 2025 AfterEvents / DeNA Data/ML Engineering Night 20
実装以降の品質担保 要件整理 仕様策定 環境構築 実装・Unit Test Integration Test 実装者が単体レベルと 担当範囲の数個レベルの結合を担保 System Test UserAcceptance Test © DeNA Co., Ltd. TechCon 2025 AfterEvents / DeNA Data/ML Engineering Night 21
実装以降の品質担保 要件整理 仕様策定 環境構築 実装・Unit Test Integration Test System Test 複数の担当した実装を結合して担保 UserAcceptance Test © DeNA Co., Ltd. TechCon 2025 AfterEvents / DeNA Data/ML Engineering Night 22
実装以降の品質担保 要件整理 仕様策定 環境構築 実装・Unit Test クラウド環境で一連の流れの動作を担保 Integration Test System Test UserAcceptance Test © DeNA Co., Ltd. TechCon 2025 AfterEvents / DeNA Data/ML Engineering Night 23
実装以降の品質担保 一連のテストを実施しながら開発を進めれて 順調に思えた 要件整理 仕様策定 環境構築 実装・Unit Test Integration Test System Test UserAcceptance Test © DeNA Co., Ltd. TechCon 2025 AfterEvents / DeNA Data/ML Engineering Night 24
実装以降の品質担保 要件整理 仕様策定 環境構築 実装・Unit Test アナリスト、AI 開発者がデータを確認して OK であ Integration Test ることを担保 System Test UserAcceptance Test © DeNA Co., Ltd. TechCon 2025 AfterEvents / DeNA Data/ML Engineering Night 25
実装以降の品質担保 UAT で大量の修正依頼・ バグかも確認 要件整理 仕様策定 環境構築 バグ修正後の動作確認が IT, ST メインに 実装・Unit Test バグ対応・新規依頼などの対 応が溢れ出す Integration Test System Test テストピラミッド崩壊 UserAcceptance Test © DeNA Co., Ltd. TechCon 2025 AfterEvents / DeNA Data/ML Engineering Night 26
何が問題だったのか ● ● ● ● © DeNA Co., Ltd. UAT の修正・確認依頼の数が想定以上に多かった UT/IT/ST で潰せていたはずであろうバグが UAT で相当数出てきた ○ 行増殖による unique の喪失 ○ NULL が入る想定でないカラムへの NULL 値の混入 想定外のデータ混入の検知の起点が UAT 時のアナリストの確認頼りに ○ UAT で指摘を受けて調査すると、元データへの想定外データ混入が発覚 する流れが多数あった UT → IT → ST の順序での継続した品質担保が困難に ○ UAT に期間に入ると UT の継続的な実施がきなくなった ○ 「IT/ST レベルの動作確認 → 再 UAT」のサイクルになってしまっていた ○ デグレ確認は IT/ST で気合いでやっていた TechCon 2025 AfterEvents / DeNA Data/ML Engineering Night 27
どうしてこうなったのか © DeNA Co., Ltd. TechCon 2025 AfterEvents / DeNA Data/ML Engineering Night 28
原因分析 ● ● ● © DeNA Co., Ltd. UT/IT/ST は sandbox 環境のデータを用いて実施していたが、UAT は prod 環 境のデータを用いて実施していたため差分があった ○ UT/IT/ST 実施時は prod 環境が存在しなかったため sandbox 環境のデー タを利用するしかなかった ○ sandbox 環境でしか発生し得ない特有のデータが存在していた ○ sandbox 環境のデータは網羅的なデータではなかった sandbox/prod 環境の workflow で data test を定常的に動かす処理を仕込む時 間を取れなかった ○ data test をworkflow に仕込んで正常性確認を回せている状態であれば UAT の指摘以前に気づけたバグもたくさんあった UT は実装者とreviewer が気合いで担保しようとしてた ○ テストケースを網羅的に洗い出して実施するほどの工数は確保できてい なかった ○ dbt の unit test が適用できるバージョンを利用できていなかった TechCon 2025 AfterEvents / DeNA Data/ML Engineering Night 29
こうできたらよかった ● ● ● ● © DeNA Co., Ltd. 網羅的なデータ使って検証を実施できる UAT と そうでない UT/IT/ST の違い を認識し、UAT 工数を多めに積んでおく ○ 新規タイトル開発では十分に網羅的でないデータしかない状況でのデー タパイプライン開発が求められる可能性が高いため ダミーデータを利用した UT をコード化して残しておく ○ dbt unit test の利用 UAT の対応に追われても UT/IT/ST を継続して回せる状態を準備しておく ○ 開発環境へのデプロイ前の UT/IT/ST 実施フローの確立・CI 化 data test をworkflow に仕込み終わった状態で UAT に臨めるようにしておく ○ dbt data test の定常的な実行 TechCon 2025 AfterEvents / DeNA Data/ML Engineering Night 30
© DeNA Co., Ltd. TechCon 2025 AfterEvents / DeNA Data/ML Engineering Night 31
〜お詫び〜 本発表では都合により、具体的なゲームの タイトルに関する情報をお伝えできません 技術面の内容のみとさせて頂きます © DeNA Co., Ltd. TechCon 2025 AfterEvents / DeNA Data/ML Engineering Night 32
データの利用用途が多岐 ● ● ● ● © DeNA Co., Ltd. ゲーム内行動分析向け ○ ほとんどのデータがこちらを占める ○ 課金を含むゲーム内の行動や状態を分析 マーケティング向け ○ 広告の出稿データとコストデータを付き合わせて費用対効果を分析 AI 向け ○ 対戦 AI 向け 学習 用 データ ○ 推薦向け 学習・推論 用 データ CS 向け ○ 特定条件に該当するユーザーの抽出 TechCon 2025 AfterEvents / DeNA Data/ML Engineering Night 33
データ量がとにかく多い ● ● ● ● © DeNA Co., Ltd. DeNA 社内においても他ドメインと比べてデータ量は圧倒的 データ量が多いため、 BigQuery の コスト削減の効果が高い ○ ストレージコスト削減 ○ クエリコスト削減 大量データが故に BigQuery へのデータ取り込みに苦労することも ○ Spanner Data Boost 同時実行数上限 ○ BigQuery Streaming Inserts 1秒あたり挿入行数・容量上限 ○ 外部 API データ取得時のタイムアウト 日を追うごとのデータパイプラインの処理時間増加 TechCon 2025 AfterEvents / DeNA Data/ML Engineering Night 34
よくあるテストピラミッドの説明 ● UI Test ○ Test Cost ● UI Test Integration Test ○ ● Integration Test 複数のユニットを結合して一連の 処理の挙動を確認 Unit Test ○ ● 画面操作で挙動を確認 個々のユニットの挙動を独立して 確認 それぞれの数が粒度の細かい順に 積み上がっていると理想的 Unit Test Test Amount © DeNA Co., Ltd. TechCon 2025 AfterEvents / DeNA Data/ML Engineering Night 35
よくあるテストピラミッドの説明 ● UI Test ○ Test Cost ● UI Test Integration Test ○ ● Integration Test 複数のユニットを結合して一連の UI …? 処理の挙動を確認 Unit Test ○ ● 画面操作で挙動を確認 個々のユニットの挙動を独立して 確認 それぞれの数が粒度の細かい順に 積み上がっていると理想的 Unit Test Test Amount © DeNA Co., Ltd. TechCon 2025 AfterEvents / DeNA Data/ML Engineering Night 36
よくあるテストピラミッドの説明 ● UI Test ○ Test Cost ● UI Test Integration Test ○ Integration Test 画面操作で挙動を確認 複数のユニットを結合して一連の UI …? 処理の挙動を確認 ● Unit Test データ基盤に UI なんて無い ○ 個々のユニットの挙動を独立して 成果物はあくまでデータ 確認 ● それぞれの数が粒度の細かい順に 積み上がっていると理想的 Unit Test Test Amount © DeNA Co., Ltd. TechCon 2025 AfterEvents / DeNA Data/ML Engineering Night 37
アーキテクチャ Composer Artifact Registry Looker Batch 集計データ BigQuery Staging BigQuery Data source Cloud Storage, etc. python © DeNA Co., Ltd. Batch dbt TechCon 2025 AfterEvents / DeNA Data/ML Engineering Night 38
こうできたらよかった ● ● ● ● © DeNA Co., Ltd. 新規タイトル開発では sandbox 環境のデータでパイプラインを開発すること になるため、 UAT の工数を多めに積んでおく UAT の修正対応に追われても UT/IT/ST を回せる状態を準備しておく data test をworkflow に仕込んだ状態で UAT に望めるようにしておく UT の典型的なテストケースを実装者やレビュワーが参照できるようにしてお く TechCon 2025 AfterEvents / DeNA Data/ML Engineering Night 39