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
250
Dagu | オンプレ向けワークフローエンジン(WebUI 同梱)
Yota Hamada
May 20, 2022
Tweet
Share
Other Decks in Technology
See All in Technology
oakのミドルウェアを書くときの技のらしきもの
toranoana
0
120
ROS再入門-はじめてのSLAM-
miura55
0
400
UIKitのアップデート #WWDC22
akatsuki174
4
310
要約 "Add Live Text interaction to your app"
ushisantoasobu
0
140
複数のスクラムチームをサポートするエンジニアリングマネジメントの話
okeicalm
0
1.1k
Target SDK Versionを上げない Notification runtime permission対応
napplecomputer
0
130
マネージャーからみたスクラムと自己管理化
shibe23
0
1k
サイボウズの アジャイル・クオリティ / Agile Quality at Cybozu
cybozuinsideout
PRO
4
2.3k
ソフトウェアライセンス 2022 / Software License 2022
cybozuinsideout
PRO
1
1.1k
Scrum Fest Osaka 2022 フルリモート下でのチームビルディング
moritamasami
2
1.1k
アーキテクチャを明文化して開発に臨んだ話
akihiyo76
0
270
Istio入門
nutslove
15
5k
Featured
See All Featured
Navigating Team Friction
lara
175
11k
Why Our Code Smells
bkeepers
PRO
324
55k
Typedesign – Prime Four
hannesfritz
33
1.4k
Fashionably flexible responsive web design (full day workshop)
malarkey
396
62k
Build The Right Thing And Hit Your Dates
maggiecrowley
19
1.2k
Why You Should Never Use an ORM
jnunemaker
PRO
47
7.6k
BBQ
matthewcrist
74
7.9k
A Modern Web Designer's Workflow
chriscoyier
689
180k
Automating Front-end Workflow
addyosmani
1351
200k
Atom: Resistance is Futile
akmur
255
20k
Testing 201, or: Great Expectations
jmmastey
21
5.4k
It's Worth the Effort
3n
172
25k
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 を投げていただけると大変嬉しいです