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

Dagu | オンプレ向けワークフローエンジン(WebUI 同梱)

Dagu | オンプレ向けワークフローエンジン(WebUI 同梱)

2a80a0a6f834a75cc418ef59175ecbb0?s=128

Yota Hamada

May 20, 2022
Tweet

Other Decks in Technology

Transcript

  1. Dagu の紹介 2022-05-19

  2. 自己紹介 名前: 濱田 所属: みずほ証券株式会社

  3. 紹介するソフトウェア Dagu (ダグー) YAML で定義された DAG を実行するワークフローエンジンです Web UI が同梱されており、バイナリ単体で動作します

    オープンソース GitHub リポジトリ: https://github.com/yohamta/dagu
  4. Built-in Web UI

  5. ワークフローエンジンの開発に至った背景 現在関わっているシステム トレーダーが使用する業務システムのデータ処理パイプライン 取引やポジションに関するデータ等を 色々な社内システムや DB から収集 常に大量のバッチ が動いている

  6. 理想的なデータパイプラインの管理状況 i. タスクの依存関係が明確 ii. 何らかの問題が起きたときにすぐに対処できる iii. それぞれの処理内容が分かりやすい

  7. 現実の状況 サーバ 1 台につき数百種類のタスクが全て crontab に登録されている 発生している課題 i. タスク間の依存関係が不明 何か起きると毎回、数十万行のコードを

    grep 調査 ii. 属人化 仕様やリカバリ方法が特定の個人に依存 iii. マニュアル作業 ログ調査のために SSH でログイン 個人への依存と、本質的ではない部分での認知的、作業的負荷が大きい
  8. どうすれば改善できる? → ワークフローエンジンを導入しよう

  9. ワークフローエンジンとは? 複数のタスクの依存関係を DAG (有向非巡回グラフ) として表現する DAG の依存関係に従って 自動的に適切な順序で タスクを実行できる 既存の

    OSS Airflow、Prefect など
  10. なぜ Airflow を使わないのか Airflow とは Airbnb が開発した OSSで、もっともメジャー Python コードで

    DAG を定義する 導入しなかった理由 1. 複雑性 → 既存のシェルスクリプトと Perl のコードが合わせて数十万行ある → さらに Python コードを追加すると、より複雑化する恐れが大きい 2. 学習コスト → Airflow の構成や仕様の学習コストが比較的高い 3. 運用コスト → デーモンや DB の冗長化など考えると人手的に厳しい
  11. インターネットで色々調べた結果・・ オンプレで気軽に導入できる WF エンジンがない → もっと気軽に使える ソフトウェアを作ることにした

  12. Dagu と Airflow との違い 1. YAML で DAG を定義するため、コードを書く必要がない 2.

    Web UI が同梱されており、バイナリ単体で動作する → DB や デーモンの設定が必要ないので、気軽に使える
  13. 単純なワークフロー定義の例 name: create and run sql steps: - name: step

    1 description: SQL の作成 command: "bash" script: | echo "select * from table;" > select.sql - name: step 2 description: SQL の実行 command: "psql -U username -d myDataBase -a -f psql select.sql" depends: - step 1
  14. デモ

  15. 開発の展望(こうなると良さそう) ビジネスサイドのユーザーが YAML を書いて、処理を組み合わせて自 分でパイプラインを作れるようにする

  16. まとめ Dagu は簡単で使いやすい WF エンジンを目指しています 特徴 1. YAML で DAG

    を定義できる 2. Web UI も含めて、バイナリ単体で動作する 3. DBMS が不要
  17. まだ開発途上のため、ご興味がありましたら、お気軽に Issue, PR を投げていただけると大変嬉しいです