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.6k
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
42
暗黙知を共有するプラットフォーム 「健常者エミュレータ事例集の取り組み」
sora32127
2
170
スマートに「関連する記事」を表示する仕組みを作る:OpenAI Embedding API + Supabase + pgvectorを利用した類似度検索の実装
sora32127
3
190
暗黙知を集積するプラットフォーム : 「健常者エミュレータ事例集」の取り組み
sora32127
1
1.5k
データパイプラインを作って改良する はじめてのデータ/アナリティクスエンジニアリング
sora32127
6
500
データ基盤移行のリアル:スタートアップにおけるデータ分析基盤移行の実態
sora32127
3
1.8k
Featured
See All Featured
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
169
50k
How to Ace a Technical Interview
jacobian
276
23k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
27
4.2k
Code Reviewing Like a Champion
maltzj
520
39k
Practical Orchestrator
shlominoach
186
10k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
26
2.1k
How to train your dragon (web standard)
notwaldorf
88
5.7k
Being A Developer After 40
akosma
86
590k
Designing for Performance
lara
604
68k
Imperfection Machines: The Place of Print at Facebook
scottboms
264
13k
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.2k
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を⼊れる前に、選択肢の幅を広げてほしい ◦ ツール⼀つ慎重に選ぶだけで避けられるペインもある