【DeNA TechCon 2025】 Redshift Serverlessとdbtを用いた データ品質テストの高速化-

1.4K Views

February 05, 25

スライド概要

データ品質テスト(QC)は、データが期待通りであることを確認するプロセスです。誤ったデータは誤った判断や意思決定を引き起こすため、データ品質を担保する上で QC は非常に重要です。しかし、大規模なデータに対して QC を厳密に行う場合、多くの時間、コスト、および運用工数がかかる課題があります。これらは一般的にデータ量の増加と共に増大します。そこで、QC をスケーラブルにするため、システムのリプレイスを行いました。新システムでは、Amazon Redshift Serverless と dbt を主要な技術スタックとして採用しました。また、QC の結果を運用作業者に分かりやすく通知するため、dbt パイプラインの監視ツール「Elementary」を導入しました。本発表では、リプレイスの背景や技術選定の理由、そしてその結果として得られた成果について紹介します。

◆ チャンネル登録はこちら↓
https://www.youtube.com/c/denatech?sub_confirmation=1

◆ X(旧Twitter)
https://x.com/denaxtech

◆ DeNA Engineering
https://engineering.dena.com/

◆ DeNA Engineer Blog
https://engineering.dena.com/blog/

◆ DeNA × AI Day ‖ DeNA TechCon 2025 公式サイト
https://techcon2025.dena.dev/

profile-image

DeNA が社会の技術向上に貢献するため、業務で得た知見を積極的に外部に発信する、DeNA 公式のアカウントです。DeNA エンジニアの登壇資料をお届けします。

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

(ダウンロード不可)

関連スライド

各ページのテキスト
1.

Redshift Serverlessとdbtを⽤いた データ品質テストの⾼速化 DeSCヘルスケア製品開発統括部 データプラットフォーム開発部第三開発グループ 俵 1 海⼈ © DeNA Co., Ltd.

2.

⾃⼰紹介 俵 海⼈ 出⾝:広島 居住:名古屋 役割:データエンジニア 取り組んでいること:ヘルスケアデー タプラットフォームの改善 趣味:将棋 2 © DeNA Co., Ltd.

3.

はじめに ● 本発表のきっかけ ○ 先⽇DeNA ENGINEERINGに投稿 したブログ記事 ○ https://engineering.dena.com/b log/2024/08/data-quality-testin g-using-redshift-serverless-anddbt/ 3 © DeNA Co., Ltd.

4.

Redshift Serverlessとdbtを⽤いた データ品質テストの⾼速化 4 © DeNA Co., Ltd.

5.

データ品質テスト(QC) ● データ品質テスト ○ データが期待通りであることを確認するプロセス ○ データ品質を担保する上で⾮常に重要 ○ 以降はQC(Quality Checkの略)とよぶ ● QCの具体例 ○ データ項⽬が未定義でない(NOT NULL) ○ データ項⽬が⼀意である(UNIQUE) ○ データ項⽬が整数である ○ etc. 5 © DeNA Co., Ltd.

6.

データパイプラインにおけるQC ソース QC 変換 QC … QC 利活⽤ データパイプラインの概念図 ● データ変換の正しさを確認するためQCを複数回実施 ● 今回あるQC業務を改善した 6 © DeNA Co., Ltd.

7.

QCの運⽤業務フロー QCの運⽤業務フロー図 ● QCシステムを新システムに移⾏した 7 © DeNA Co., Ltd.

8.

システム移⾏の背景 8 © DeNA Co., Ltd.

9.

システム移⾏の背景① - 旧システムの構成 ● 旧システムはCSVをPython (Pandas)で読み込むモノリス構成 EC2インスタンス CSV Python 旧システムの構成 9 © DeNA Co., Ltd.

10.

システム移⾏の背景② - 旧システムの課題 ● 実⾏速度 ○ 約2.6TBのデータセットに対し170時間(7⽇)!! ■ データ取得から利活⽤のリードタイム増加→データ鮮度低下 ■ 再実⾏の負担が⼤きく、⻑いバッファの確保が必要 ● クラウドコスト ○ 巨⼤なスペックのEC2インスタンスに対し膨⼤な課⾦ ■ 処理実⾏時以外も課⾦ → コスト効率が低い ● 保守性 ○ 各QC項⽬がPythonで独⾃実装 ■ 保守の負荷が⾼い&⾮効率な処理が⾒られる 10 © DeNA Co., Ltd.

11.

システム移⾏の背景③ - 対応⽅針 対応⽅針の⽐較 ● 今後のデータ増加で課題が顕著化 ● 旧システム課題への対応⽅針 ○ 既存のプログラム改修(並列化) ○ 新システムへの移⾏ ● 両⽅針をチーム内で⽐較検討 ● 新システムのPoC結果も踏まえ、 システム移⾏のメリットが⼤きい → システム移⾏を決定 11 プログラム改修 システム移行 速度向上 ⚪ ◎ コスト削減 ✖ ◎ 保守性向上 △ ◎ © DeNA Co., Ltd.

12.

新システムの構成 12 © DeNA Co., Ltd.

13.

新システムの構成① - アーキテクチャ 1. QC対象のCSVをS3にアップロード 2. 1をトリガーにStep Functionsが起 動し、QCをオーケストレーション 3. S3上のCSVをRedshift Serverless にロード 4. dbtの実⾏コンテナが起動 (ECS on Fargate) 5. dbtによりQCを実⾏ 新システムの簡易構成図 13 © DeNA Co., Ltd.

14.

新システムの構成② - Redshift Serverless ● ● ● ● ● 14 AWSが提供するサーバーレスDWH(GCPのBQに相当) 2022年7⽉GAの⽐較的新しいサービス 超並列処理と列指向ストレージによる⾼いクエリ性能 RPUを増減することでデータ量に対してスケール サーバーレス ○ クエリ実⾏時のみ課⾦のためコスト効率が⾼い ○ クラスターやノードの設定‧管理が不要 © DeNA Co., Ltd.

15.

新システムの構成③ - dbt ● dbt(data build tool)はデータのモデリング(変換)やテスト、ド キュメント作成を⾏うOSSのツール ● SQLとJinjaテンプレートを組み合わせて上記を効率化 ● SQLを使うため学習コストが低い ● Redshiftなどの主要なDWHとネイティブに連携可能 15 © DeNA Co., Ltd.

16.

新システムの構成④ - dbt test version: 2 models: - name: orders columns: - name: order_id tests: - unique - not_null - name: status tests: - accepted_values: values: ['placed', 'shipped'] - name: customer_id tests: - relationships: to: ref('customers') field: id 16 ● dbt testはdbtプロジェクト内のリソースに 対してQCを実⾏する機能 ● not nullやuniqueなどの基本的なテストは テンプレート(generic test)が⽤意 → YAML(左記)の記述のみで実⾏可能 ● 複雑なテストもテンプレート を⾃作(custom generic test) することで実⾏可能 © DeNA Co., Ltd.

17.

新システムの構成⑤ - 技術選定の理由1 ● QCのフレームワークとして運⽤実績のあるdbt test ○ generic test利⽤により独⾃実装削減 → 保守性向上 ● 実⾏基盤は他システムとのデータ連携性を考慮しAWS ○ クエリ性能が⾼くdbtとの親和性も⾼いRedshift ■ コスト効率が⾼くクラスタ管理が不要なRedshift Serverless ● システム構成はAWSの担当者を含めて何度も検討 17 © DeNA Co., Ltd.

18.

新システムの構成⑥ - 技術選定の理由2 ● Redshift Serverlessとdbtを⽤いたPoCを実施 ● 旧システムの課題解決を確認 ○ 実⾏速度 ■ Redshift Serverlessの⾼いクエリ性能により⾼速化 ■ RPU増減によりデータ量に対して柔軟にスケール ○ クラウドコスト ■ Redshift Serverlessのクエリ実⾏時課⾦により コスト削減 システム移⾏に向けて順調と思われたが‧‧‧ 18 © DeNA Co., Ltd.

19.

QC結果の通知 19 © DeNA Co., Ltd.

20.

QC結果の通知① - dbt test結果の分かり⾟さ dbt testの結果出⼒ ● dbt testは結果をテキストで出⼒する(上記) ○ どのテーブル‧カラムに対して何のテストが失敗し ているか分かり⾟い → 運⽤作業者の負担増加 ● システムが効率化しても運⽤業務全体が⾮効率であれば 本末転倒 → 解決すべき重要な課題 20 © DeNA Co., Ltd.

21.

QC結果の通知② - Elementary ● Elementaryはdbtのデータパイプライン監視ツール ○ データの異常検知 ○ dbt test結果をHTML形式でレポーティング(可視化) ○ レポートのAWS S3送信機能 21 © DeNA Co., Ltd.

22.

QC結果の通知③ - Elementaryのレポート テーブル名 説明 22 カラム名 テスト名 結果詳細 © DeNA Co., Ltd.

23.

QC結果の通知④ - Elementaryによる運⽤効率化 ● レポートからQC結果の詳細を確認可能 ● レポートをS3に送信し、そのリンクをSlackで通知し運⽤効率化 23 QC失敗時のSlack通知 © DeNA Co., Ltd.

24.

システム移⾏の成果 ● 定量的な成果 ○ 実⾏速度の増加 ■ 2.6TBのデータに対し170時間→ 1.5時間(約100倍⾼速化) ○ クラウドコストの圧縮 ■ 約1/10に圧縮 ● 定性的な成果 ○ データ量の増加に対して柔軟にスケール ○ コード‧インフラ保守性の向上 24 © DeNA Co., Ltd.

25.

新システムを運⽤して得た学び ● サーバーレスアーキテクチャを採⽤ ○ 良かった点 ■ インスタンス管理が不要になり、システム運⽤コストが0に ■ システムが疎結合になり、各モジュールが変更しやすい ■ デプロイがTerraformとGitHub Actionsで完結し保守性向上 ○ 課題点 ■ 問題が発⽣した際の原因調査が複雑 ■ 予期しないクラウドコストの発⽣ ● サービスやコストの適切な監視‧制限が必要 25 © DeNA Co., Ltd.

26.

まとめと今後の展望 ● データ品質テスト(QC)はデータが期待通りであることを確認する プロセス ● 旧QCシステムは実⾏速度やクラウドコスト、保守性に課題があった ● 旧システムの課題を解決するため、新システムに移⾏した ○ Redshift Serverlessとdbtを採⽤した ○ ElementaryでQC結果を可視化した ○ 実⾏速度とコスト効率、運⽤‧保守性を向上できた ● 本取り組みで得た学びを⽣かして、 引き続きデータプラットフォームの改善に取り組む 26 © DeNA Co., Ltd.

27.

27 © DeNA Co., Ltd.