Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
Dagu | オンプレ向けワークフローエンジン(WebUI 同梱)
Yota Hamada
May 20, 2022
Technology
1
360
Dagu | オンプレ向けワークフローエンジン(WebUI 同梱)
Yota Hamada
May 20, 2022
Tweet
Share
Other Decks in Technology
See All in Technology
グローバルチームことはじめ / Bootstrapping a global team
tasshi
1
650
ユーザーテストガイドライン VERSION 2.0
kouzoukaikaku
0
810
WebLogic Server for OCI 概要
oracle4engineer
PRO
3
860
re:Invent2022 前後の Amazon EventBridge のアップデートを踏まえつつ、情シスの仕事をより楽しくしたい話。 / EventBridge for Information Systems Department
_kensh
2
390
ChatGPT for Hacking
anugrahsr
0
3.7k
日経電子版だけじゃない! 日経の新規Webメディアの開発 - NIKKEI Tech Talk #3
sztm
0
150
230125 古いタブレットの活用 かーでぃさん
comucal
PRO
0
15k
Dev Containers ことはじめ - 失敗から学ぶ開発環境運用法
streamwest1629
0
310
あつめたデータをどう扱うか
skrb
1
120
20230121_データ分析系コミュニティ_サテライト企画
doradora09
0
520
AI Builderについて
miyakemito
0
850
金属加工屋の営業マンがSTマイクロで・・・
usashirou
0
150
Featured
See All Featured
Principles of Awesome APIs and How to Build Them.
keavy
117
15k
How GitHub (no longer) Works
holman
298
140k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
24
4.5k
JazzCon 2018 Closing Keynote - Leadership for the Reluctant Leader
reverentgeek
175
9.1k
Typedesign – Prime Four
hannesfritz
34
1.5k
5 minutes of I Can Smell Your CMS
philhawksworth
198
18k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
349
27k
Thoughts on Productivity
jonyablonski
49
2.7k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
13
1.1k
Fantastic passwords and where to find them - at NoRuKo
philnash
32
1.8k
The Illustrated Children's Guide to Kubernetes
chrisshort
22
42k
StorybookのUI Testing Handbookを読んだ
zakiyama
8
3.2k
Transcript
Dagu の紹介 2022-05-19
自己紹介 名前: 濱田 所属: みずほ証券株式会社
紹介するソフトウェア Dagu (ダグー) YAML で定義された DAG を実行するワークフローエンジンです Web UI が同梱されており、バイナリ単体で動作します
オープンソース GitHub リポジトリ: https://github.com/yohamta/dagu
Built-in Web UI
ワークフローエンジンの開発に至った背景 現在関わっているシステム トレーダーが使用する業務システムのデータ処理パイプライン 取引やポジションに関するデータ等を 色々な社内システムや DB から収集 常に大量のバッチ が動いている
理想的なデータパイプラインの管理状況 i. タスクの依存関係が明確 ii. 何らかの問題が起きたときにすぐに対処できる iii. それぞれの処理内容が分かりやすい
現実の状況 サーバ 1 台につき数百種類のタスクが全て crontab に登録されている 発生している課題 i. タスク間の依存関係が不明 何か起きると毎回、数十万行のコードを
grep 調査 ii. 属人化 仕様やリカバリ方法が特定の個人に依存 iii. マニュアル作業 ログ調査のために SSH でログイン 個人への依存と、本質的ではない部分での認知的、作業的負荷が大きい
どうすれば改善できる? → ワークフローエンジンを導入しよう
ワークフローエンジンとは? 複数のタスクの依存関係を DAG (有向非巡回グラフ) として表現する DAG の依存関係に従って 自動的に適切な順序で タスクを実行できる 既存の
OSS Airflow、Prefect など
なぜ Airflow を使わないのか Airflow とは Airbnb が開発した OSSで、もっともメジャー Python コードで
DAG を定義する 導入しなかった理由 1. 複雑性 → 既存のシェルスクリプトと Perl のコードが合わせて数十万行ある → さらに Python コードを追加すると、より複雑化する恐れが大きい 2. 学習コスト → Airflow の構成や仕様の学習コストが比較的高い 3. 運用コスト → デーモンや DB の冗長化など考えると人手的に厳しい
インターネットで色々調べた結果・・ オンプレで気軽に導入できる WF エンジンがない → もっと気軽に使える ソフトウェアを作ることにした
Dagu と Airflow との違い 1. YAML で DAG を定義するため、コードを書く必要がない 2.
Web UI が同梱されており、バイナリ単体で動作する → DB や デーモンの設定が必要ないので、気軽に使える
単純なワークフロー定義の例 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
デモ
開発の展望(こうなると良さそう) ビジネスサイドのユーザーが YAML を書いて、処理を組み合わせて自 分でパイプラインを作れるようにする
まとめ Dagu は簡単で使いやすい WF エンジンを目指しています 特徴 1. YAML で DAG
を定義できる 2. Web UI も含めて、バイナリ単体で動作する 3. DBMS が不要
まだ開発途上のため、ご興味がありましたら、お気軽に Issue, PR を投げていただけると大変嬉しいです