Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
dbtをDagster Cloudでオーケストレーションする
Search
contradiction29
March 05, 2024
3
1.8k
dbtをDagster Cloudでオーケストレーションする
2024-03-05 @Data Engineering Study #23 Data orchestration 特集
contradiction29
March 05, 2024
Tweet
Share
More Decks by contradiction29
See All by contradiction29
個人開発でもプロダクトマネジメントしたい!
sora32127
1
65
暗黙知を共有するプラットフォーム 「健常者エミュレータ事例集の取り組み」
sora32127
2
190
スマートに「関連する記事」を表示する仕組みを作る:OpenAI Embedding API + Supabase + pgvectorを利用した類似度検索の実装
sora32127
3
230
暗黙知を集積するプラットフォーム : 「健常者エミュレータ事例集」の取り組み
sora32127
1
1.6k
データパイプラインを作って改良する はじめてのデータ/アナリティクスエンジニアリング
sora32127
6
520
データ基盤移行のリアル:スタートアップにおけるデータ分析基盤移行の実態
sora32127
3
1.9k
Featured
See All Featured
Building Flexible Design Systems
yeseniaperezcruz
328
38k
The Cost Of JavaScript in 2023
addyosmani
47
7.3k
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.3k
GraphQLとの向き合い方2022年版
quramy
44
13k
The Pragmatic Product Professional
lauravandoore
32
6.4k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Building Adaptive Systems
keathley
39
2.4k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
59k
Learning to Love Humans: Emotional Interface Design
aarron
274
40k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
6
230
Building Your Own Lightsaber
phodgson
104
6.2k
VelocityConf: Rendering Performance Case Studies
addyosmani
327
24k
Transcript
dbtをDagster Cloudでオーケストレーションする 2024-03-05 Data Engineering Study #23 Data orchestration 特集
越境(@contraidiction29)
素晴らしく便利なdbt
dbtの実⾏管理どうしよう? せっかくならdbtの⼒をフルに活かせるものにしたい
dbtのオーケストレーション⽅法はいろいろ • ⼿動 • GitHub Actions • Airflow • Prefect
• Step Functions 他いろいろ... フェーズや制約事項により最適解は異なるが dbtの⼒をフルに活かしたいなら「Dagster Cloud」がオススメ → 今回はその話をしたい
今⽇話すこと 1. dbtをオーケストレーションする技術の選定ポイント 2. Dagster Cloudでdbtを運⽤するメリット 3. Dagsterが向いていない場合 「dbtをオーケストレーションしたいけど、そういえばDagster Cloudなんてあっ
たな...」と思ってくれれば幸いです ※Dagsterに関する説明、および「オーケストレーションとは何か」に関する説明は前のLTにあるので割愛します
⾃⼰紹介 • 普段のお仕事 ◦ アドテク系のスタートアップ企業に所属 ◦ データエンジニアなど、データに関することを⼤体 何でもやるお仕事をしています • Snowflake‧dbt‧dagsterあたりが好き
• 「健常者エミュレータ事例集」の管理⼈ ◦ ↑ググると出てくるので調べてみてね 越境 @contradiction29
今⽇話すこと 1. dbtをオーケストレーションする技術の選定ポイント 2. Dagster Cloudでdbtを運⽤するメリット 3. Dagsterが向いていない場合
dbtオーケストレーションの技術選定のポイント • 相互運⽤性 • Speed To Market • Team Size
and Capabilities • 運⽤のしやすさ dbtをオーケストレーションする技術を選定するポイントは主に5つ。 データ利活⽤のフェーズや技術的制約により適切な技術選定は変わる。「ご利⽤は計画的に」 dbt特有→ • モデルごとにオーケストレーションできること dbt特有ではない→
技術選定のポイント : モデル単位のオーケストレーション 初期構築段階を超えれば、モデル単位のオーケストレーションがしたくなる モデル単位のオーケストレーション ⼤雑把なオーケストレーション • シンプルな「dbt run」しかできない •
実装⼿順(例):GitHub Actions, EC2, ECS, Cloud Run ,.. • ⼿軽に導⼊できるため、初期構築段階なら使い道がある • 実⾏したいモデルを指定して「dbt run」することができる • 実装⽅法: ◦ dbt run —select model_nameを繰り返す ◦ オーケストレーションツールの組み込みインテ グレーション機能を使う
技術選定のポイント : モデル単位のオーケストレーション dbt run - - model_nameを使わずにモデル単位でオーケストレーションする⽅法は多くない スマートに実装できるが、選べる技術は限られる dbt
run - - model_nameを使わない dbt run - - model_name • 実装 ◦ AirflowのBashoperatorや類するものを使 い、モデルごとにdbt run ‒select model_nameを実⾏ ▪ 参考 • ⻑所 ◦ 使い慣れているツールに直接組み込める • 短所 ◦ 実装が重くなりがち ◦ 動作も重くなる • 実装 ◦ 各ツールごとに持つdbtとの統合機能を使う ◦ Dagster, dbt Cloud, Cosmos(Airflow) • ⻑所 ◦ オーケストレーションツールの機能を最⼤ 限⽣かせる ◦ 実装がスマート • 短所 ◦ 使うツールが限られる
技術選定のポイント:相互運⽤性、Speed to Market、Team Size and Capabilities、運⽤のしやすさ 観点 相互運⽤性 Speed to
Market Team Size and Capabilities 運⽤のしやすさ 意味 データ基盤内部で 利⽤している他の技 術との相性 フィードバックルー プを回す速さ そのテクノロジーっ て本当に今のチー ムで扱えるの? 異常状態から正常 状態に戻すまでの スピード 観点 ‧Transformation の段階で利⽤してい るツールとの相性 ‧DWHとの相性 ‧利⽤しているクラ ウドとの相性 ‧開発フローのシ ンプルさ ‧開発者体験 ‧オーケストレー ションツールは開 発者体験に対する 影響が⼤きい ‧ツールを利⽤す るメンバーの習熟 度‧学習意欲 ‧メンバーが割く ことができる労⼒ ‧異常発⽣の検知 ⽅法 ‧異常終了した箇 所の部分復旧 ↑読んで実践するだけで防げる悲劇 がある。3/27に⽇本語版も出る! 『データエンジニアリングの基礎 ―データプロジェクトで失敗しない ために』(邦題) ※Joe Reis, Matt Housley (2022), Fundamentals of Data Engineering, Chapter 4 : Choosing Technologies Across the Data Engineering Lifecycleから抜粋したもの+運⽤のしやすさ
• モデルごとにオーケストレーションできること ◦ Dagsterの組み込み機能で可能 • 相互運⽤性 ◦ dbtとの相性抜群 • Speed
To Market ◦ 素早い開発フローの構築が可能(後述) • Team Size and Capabilities ◦ ⼀度学習すれば扱い⾃体は難しくない • 運⽤のしやすさ ◦ 運⽤負荷は低め(後述) → すべての観点でちょうどよかったのがDagster Cloudだった
今⽇話すこと 1. dbtをオーケストレーションする技術の選定ポイント 2. Dagster Cloudでdbtを運⽤するメリット 3. Dagsterが向いていない場合
Dagster Cloudでdbtを運⽤するメリット 1. サーバーレスな環境構築が可能 2. Pythonで書けるならなんでもできる柔軟さ 3. 強⼒な開発者体験←導⼊の決め⼿ 4. イケてるUI
サーバーレスな環境構築が可能 • Dagsterのデプロイ⽅法は以下のオプションから選べる(※) : ◦ ⾃前のインフラ ◦ ハイブリッド ◦ サーバーレス
• サーバーレス環境 ◦ インフラの保守‧運⽤のコストを浮かせる ◦ 浮いた労⼒をデータによる価値創出に向ける ◦ スタートアップの⼀⼈データエンジニア体制にちょうど良い ◦ そもそもサーバーレスじゃない環境でペイする組織ってどのくらいあるんだろう • Airflowのマネージドサービスでもサーバーレス環境は提供可能 ◦ AWSのManaged Service for Apache Airflow (MWAA) ◦ GCPのCloud Composer、Astronomerなど ◦ サーバーレスはDagster Cloud特有のメリットではない ※ https://docs.dagster.io/deployment
Pythonコードで書ければなんでもできる柔軟さがある • Pythonのdef⽂の中で定義できるなら⼤体何でもで きる ◦ うまく動作するのかどうか検証することが必要になる ◦ 後述のブランチデプロイ機能を利⽤すれば容易な検証が可能 ◦ 少ない道具で多くのユースケースに対応できる
• Dagster特有のメリットではない ◦ Airflow, Prefectなどほかのツールでも実現可能 ↑dbt source freshnessを実⾏して結果をSlackに出⼒する例
強⼒な開発者体験:ローカル開発とブランチデプロイ環境構築 • dagsterは開発者体験を重視する点でほかのオーケストレーション ツールとは違う • ローカルでの開発性 ◦ コードを書きながらローカルで動作検証をすることが可能 ◦ ジョブの開発がやりやすい
◦ Airflowでもできるがdagsterの⽅が軽い • ブランチデプロイ機能 ◦ プルリクエストを提出したら、そのPRのコードの内容を反映したクラウド環 境が作られ、テスト実⾏が可能な機能 ◦ ユースケース: ▪ パッケージの依存関係を検証したい ▪ クラウド上の権限管理をテストしたい ▪ 可能な限り本番環境に近い環境で動作確認したい • ローカルでの開発環境とクラウド上でのテスト環境を組み合わせ れば、シンプルな開発フローを実現でき、フィードバックループ を素早く回すことが可能になる ↑実際の開発フロー
UIがイケてる(実物は後で⾒せます) • モダンで⾒やすい、サクサク動くUIを提供 ◦ dbtのモデルごとに、下流モデルや上流モデルをさっと閲覧できる ◦ その画⾯からモデルの再実⾏が可能 ◦ 変数(vars)を受け渡すことも可能 •
dbt-nativeなobservability機能も提供している ◦ 処理実⾏時間がかかっているモデルなどが容易に特定可能なUI ◦ 2024年3⽉時点ではExperimental Futureになっている
任意のモデルの上流‧下流モデルが全部⾒える
変数を受け取るモデルの場合、任意の期間を指定してモデルを実⾏することが可能(Backfill)
observability機能も提供:モデルごとに実⾏時間監視やエラーチェックもできる
今⽇話すこと 1. dbtをオーケストレーションする技術の選定ポイント 2. Dagster Cloudでdbtを運⽤するメリット 3. Dagsterが向いていない場合
Dagsterが向いていない場合 • 組織のPython習熟度が低い場合 ◦ 導⼊社数が少ないため、現段階(2024年)での導⼊はある程度チャレンジングになる ◦ 実装がうまくいかない時、Pythonのライブラリを読み解いてなんとかするような場⾯が結構ある (体験談) ◦ 「データ分析でPython触ってました!」くらいのPython習熟度だと厳しいかも
• 学習に時間を割けない場合 ◦ Dagsterは独⾃概念のフルコースで、Airflowに慣れている⼈でも学習には⼀定時間がかかる ◦ 学習の難易度が⾼いため、ある程度根を⼊れて学習する必要がある ◦ 素早く価値を出したい & 組織内にDagsterの経験者がいない場合は別のツールを選んだ⽅がいいかも ◦ 学習コストの⾼さは公式もわかっているようで、学習コンテンツはしっかり⽤意してある ▪ Dagster University ▪ ↑通しでやると⼤体わかる
おわりに • Dagsterに興味が出た⽅へ ◦ 初⼿はDagster Universityをやるのがお勧め ◦ あるに越したことはないが、Dagsterを使いこなすのにAirflowなどの経験は必須ではない • Dagsterをぜひ使ってほしい!
◦ まだ⽇本では利⽤者数が少ない ◦ ドコドコ広めたい • Airflow以外のオーケストレーションツールの選択肢があることを知ってほしい ◦ 何も考えずAirflowを⼊れる前に、選択肢の幅を広げてほしい ◦ ツール⼀つ慎重に選ぶだけで避けられるペインもある