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
バッチ処理の認知負荷を下げる国産ワークフローエンジン
Search
Yota Hamada
March 26, 2024
1
34
バッチ処理の認知負荷を下げる国産ワークフローエンジン
国産ワークフローエンジンDaguの紹介です。
リポジトリ:
https://github.com/dagu-dev/dagu
Yota Hamada
March 26, 2024
Tweet
Share
Featured
See All Featured
What’s in a name? Adding method to the madness
productmarketing
PRO
17
2.7k
5 minutes of I Can Smell Your CMS
philhawksworth
199
19k
RailsConf 2023
tenderlove
9
580
Keith and Marios Guide to Fast Websites
keithpitt
408
22k
Producing Creativity
orderedlist
PRO
338
39k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
82
45k
Typedesign – Prime Four
hannesfritz
36
2.1k
How To Stay Up To Date on Web Technology
chriscoyier
782
250k
Being A Developer After 40
akosma
67
580k
Optimising Largest Contentful Paint
csswizardry
13
2.4k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
23
1.7k
The Power of CSS Pseudo Elements
geoffreycrofte
62
5k
Transcript
バッチ処理の認知負荷を下げる 国産ワークフローエンジン Descarty株式会社
自己紹介 HN:yohamta (濱田洋太) X: @spaceshooting99 過去の経歴: • Go言語が好きなソフトウェア開発者 • ex:
みずほ証券 / 楽天 / JSOL / スタートアップなど • 現在は tacoms社 のプロダクト開発(フルスタック)に 従事しつつ、ワークフローエンジンを開発中
ワークフローエンジンとは ワークフローエンジンは業務の一連のタスクをソフトウェアで管理するもの 大きく分けて3種類のワークフローエンジンがある 1. ビジネスプロセスのフローを管理するワークフローエンジン a. 日本でワークフローシステムと呼ばれるソフトウェア 2. バッチ処理やデータ処理のフローを管理するワークフローエンジン a.
代表的なソフトウェア:Airflow (Airbnb)、原始的なものではMakefile b. ほかにも多くのソフトウェアが存在:DigDag、Daggerなど 3. マイクロサービス間のワークフローを管理するワークフローエンジン a. Temporal (Uber)、Flyte (Lyft) など
典型的なワークフローの例 例: 動画ファイルをS3からダウンロードして動画の変換を行う処理
バッチ処理でよくある問題 1. どんなバッチ処理の内容かコードを読まないと具体的に分からない 2. 一部の処理が失敗すると最初からやり直しになる 3. 大量のバッチがあり、処理Aと処理Bが暗黙的に依存している状態 4. どこを直せば、どこに影響があるのか分からない 5.
過去の実行時間の履歴やログが解像度高く見れていない 認知負荷の 増加
並列化の難しさ 1. プログラミング言語ごとに並列化のやり方が違う 2. ソースコードの読解難易度が上がる 認知負荷の 増加
ワークフローエンジンを導入するとどうなるか? 例: 動画ファイルをS3からダウンロードして変換を行う処理 → 処理内容が明確になる → 処理が並列化される → 依存関係が明確になる →
過去の実行記録が残る
並列化をワークフローエンジンの責務にする利点 1. 多重度を設定だけでコントロールできる 2. 失敗したときに、全体ではなく失敗したプロセスだけを再実行できる 3. バッチ処理の本体がシンプルになる
ワークフローエンジンを導入するメリット 1. バッチ処理の処理Aと処理Bの間の依存関係を可視化できる 2. 並列化をワークフローエンジンの責務にできる 3. 実行状況をリアルタイムで可視化できる、記録できる 4. Slack通知、メール通知、Webhookなどを簡単に設定できる 5.
必要な部分だけの再実行が簡単になる バッチ処理の開発、運用の認知負荷が下がり、 生産性が向上する
ワークフローエンジン(Airflow) 導入のハードル 1. 仕様の学習コスト a. 独自用語や癖のある仕様を理解する b. Pythonを書かないと行けない 2. データベースやサーバ、スケジューラー、ワーカーの運用コスト
a. マネージドの場合はクラウド費用が高い(Apache Managed Workflowsは月5万円以上) 3. ワークフローエンジンの導入コスト a. Pythonを書いてワークフローを定義するため手間がかかる b. 一旦導入するとロックインされる
いきなりAirflowはハードルが高い 1. 小規模のチームには荷が重い 2. まずは小さく始めたい
国産ワークフローエンジンDagu(ダグー)の紹介
Daguの特徴 1. オープンソース 2. バイナリを置くだけで管理画面のUIとスケジューラが動かせる 3. シンプルなYAMLだけでワークフローを定義できる 4. ファイルシステムを利用するためデータベース不要
Daguの機能 1. 必要最小限の機能 2. シンプルさ 3. 自由度
Daguのユースケース 1. 依存関係が複雑なバッチ処理 2. 定形オペレーションのRunbookや管理ツール 3. 生成AIのワークフロー(データ取得、API呼び出し、加工) 4. B2Bサービスにおける顧客向けツール 5.
システム間、企業間のデータ連携処理(EDI)
大規模な動画変換処理にDaguを利用している例 例:ECS、EFSを利用し、大規模なメディア変換処理を実行
ドキュメント 1. オープンソースのリポジトリ(dagu-dev/dagu) https://github.com/dagu-dev/dagu 2. ドキュメント https://dagu.readthedocs.io/en/latest/
デモ
まとめ 1. ワークフローエンジンはバッチ処理の認知負荷を下げ、生産性を上げる 2. 軽量ワークフローエンジンDaguのご紹介 a. オープンソース b. データベースがいらないから簡単に導入できる c.
ノーコードだから既存のコードをそのまま使える
皆さんのプロジェクトの話を 聞かせてください!