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

dbtをDagster Cloudでオーケストレーションする

contradiction29
March 05, 2024
1k

dbtをDagster Cloudでオーケストレーションする

2024-03-05 @Data Engineering Study #23 Data orchestration 特集

contradiction29

March 05, 2024
Tweet

Transcript

  1. dbtのオーケストレーション⽅法はいろいろ • ⼿動 • GitHub Actions • Airflow • Prefect

    • Step Functions 他いろいろ... フェーズや制約事項により最適解は異なるが dbtの⼒をフルに活かしたいなら「Dagster Cloud」がオススメ → 今回はその話をしたい
  2. 今⽇話すこと 1. dbtをオーケストレーションする技術の選定ポイント 2. Dagster Cloudでdbtを運⽤するメリット 3. Dagsterが向いていない場合 「dbtをオーケストレーションしたいけど、そういえばDagster Cloudなんてあっ

    たな...」と思ってくれれば幸いです ※Dagsterに関する説明、および「オーケストレーションとは何か」に関する説明は前のLTにあるので割愛します
  3. dbtオーケストレーションの技術選定のポイント • 相互運⽤性 • Speed To Market • Team Size

    and Capabilities • 運⽤のしやすさ dbtをオーケストレーションする技術を選定するポイントは主に5つ。 データ利活⽤のフェーズや技術的制約により適切な技術選定は変わる。「ご利⽤は計画的に」 dbt特有→ • モデルごとにオーケストレーションできること dbt特有ではない→
  4. 技術選定のポイント : モデル単位のオーケストレーション 初期構築段階を超えれば、モデル単位のオーケストレーションがしたくなる モデル単位のオーケストレーション ⼤雑把なオーケストレーション • シンプルな「dbt run」しかできない •

    実装⼿順(例):GitHub Actions, EC2, ECS, Cloud Run ,.. • ⼿軽に導⼊できるため、初期構築段階なら使い道がある • 実⾏したいモデルを指定して「dbt run」することができる • 実装⽅法: ◦ dbt run —select model_nameを繰り返す ◦ オーケストレーションツールの組み込みインテ グレーション機能を使う
  5. 技術選定のポイント : モデル単位のオーケストレーション 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) • ⻑所 ◦ オーケストレーションツールの機能を最⼤ 限⽣かせる ◦ 実装がスマート • 短所 ◦ 使うツールが限られる
  6. 技術選定のポイント:相互運⽤性、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から抜粋したもの+運⽤のしやすさ
  7. • モデルごとにオーケストレーションできること ◦ Dagsterの組み込み機能で可能 • 相互運⽤性 ◦ dbtとの相性抜群 • Speed

    To Market ◦ 素早い開発フローの構築が可能(後述) • Team Size and Capabilities ◦ ⼀度学習すれば扱い⾃体は難しくない • 運⽤のしやすさ ◦ 運⽤負荷は低め(後述) → すべての観点でちょうどよかったのがDagster Cloudだった
  8. サーバーレスな環境構築が可能 • Dagsterのデプロイ⽅法は以下のオプションから選べる(※) : ◦ ⾃前のインフラ ◦ ハイブリッド ◦ サーバーレス

    • サーバーレス環境 ◦ インフラの保守‧運⽤のコストを浮かせる ◦ 浮いた労⼒をデータによる価値創出に向ける ◦ スタートアップの⼀⼈データエンジニア体制にちょうど良い ◦ そもそもサーバーレスじゃない環境でペイする組織ってどのくらいあるんだろう • Airflowのマネージドサービスでもサーバーレス環境は提供可能 ◦ AWSのManaged Service for Apache Airflow (MWAA) ◦ GCPのCloud Composer、Astronomerなど ◦ サーバーレスはDagster Cloud特有のメリットではない ※ https://docs.dagster.io/deployment
  9. 強⼒な開発者体験:ローカル開発とブランチデプロイ環境構築 • dagsterは開発者体験を重視する点でほかのオーケストレーション ツールとは違う • ローカルでの開発性 ◦ コードを書きながらローカルで動作検証をすることが可能 ◦ ジョブの開発がやりやすい

    ◦ Airflowでもできるがdagsterの⽅が軽い • ブランチデプロイ機能 ◦ プルリクエストを提出したら、そのPRのコードの内容を反映したクラウド環 境が作られ、テスト実⾏が可能な機能 ◦ ユースケース: ▪ パッケージの依存関係を検証したい ▪ クラウド上の権限管理をテストしたい ▪ 可能な限り本番環境に近い環境で動作確認したい • ローカルでの開発環境とクラウド上でのテスト環境を組み合わせ れば、シンプルな開発フローを実現でき、フィードバックループ を素早く回すことが可能になる ↑実際の開発フロー
  10. UIがイケてる(実物は後で⾒せます) • モダンで⾒やすい、サクサク動くUIを提供 ◦ dbtのモデルごとに、下流モデルや上流モデルをさっと閲覧できる ◦ その画⾯からモデルの再実⾏が可能 ◦ 変数(vars)を受け渡すことも可能 •

    dbt-nativeなobservability機能も提供している ◦ 処理実⾏時間がかかっているモデルなどが容易に特定可能なUI ◦ 2024年3⽉時点ではExperimental Futureになっている
  11. Dagsterが向いていない場合 • 組織のPython習熟度が低い場合 ◦ 導⼊社数が少ないため、現段階(2024年)での導⼊はある程度チャレンジングになる ◦ 実装がうまくいかない時、Pythonのライブラリを読み解いてなんとかするような場⾯が結構ある (体験談) ◦ 「データ分析でPython触ってました!」くらいのPython習熟度だと厳しいかも

    • 学習に時間を割けない場合 ◦ Dagsterは独⾃概念のフルコースで、Airflowに慣れている⼈でも学習には⼀定時間がかかる ◦ 学習の難易度が⾼いため、ある程度根を⼊れて学習する必要がある ◦ 素早く価値を出したい & 組織内にDagsterの経験者がいない場合は別のツールを選んだ⽅がいいかも ◦ 学習コストの⾼さは公式もわかっているようで、学習コンテンツはしっかり⽤意してある ▪ Dagster University ▪ ↑通しでやると⼤体わかる
  12. おわりに • Dagsterに興味が出た⽅へ ◦ 初⼿はDagster Universityをやるのがお勧め ◦ あるに越したことはないが、Dagsterを使いこなすのにAirflowなどの経験は必須ではない • Dagsterをぜひ使ってほしい!

    ◦ まだ⽇本では利⽤者数が少ない ◦ ドコドコ広めたい • Airflow以外のオーケストレーションツールの選択肢があることを知ってほしい ◦ 何も考えずAirflowを⼊れる前に、選択肢の幅を広げてほしい ◦ ツール⼀つ慎重に選ぶだけで避けられるペインもある