Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Workflow engine with go
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Tsuji Daishiro
January 25, 2020
Technology
2k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Workflow engine with go
Tsuji Daishiro
January 25, 2020
More Decks by Tsuji Daishiro
See All by Tsuji Daishiro
Starting static analysis with Go
tutuz
0
2.2k
実務で役立つTCPクライアントの作り方
tutuz
6
5.4k
What's new Context in Go1.14
tutuz
2
1.7k
Workflow engine with go #2
tutuz
0
1.3k
Nginx cache pitfalls
tutuz
0
300
Check inline expansion with Go
tutuz
0
3.2k
Parallel-Simulated-Annealing
tutuz
3
5.3k
Other Decks in Technology
See All in Technology
Claude Code on Bedrock で統制をかける小ネタ集/claude-code-bedrock-governance-tips
emiki
1
13k
OneLakeをデータソースにした AI Search(Foundry IQ)の ライフサイクル管理
ryuseiiida
0
130
AIエージェント時代、Kaggleにどう取り組むか
takanao
1
340
You Have Agency(サンキュー、Ruby)
snoozer05
PRO
3
460
書き手が人でもAIでも正しくなる道、SREを埋め込んだDeveloper Platform / tech drivers day8
chmikata
4
800
1週間、Opus封印でお願いします
kintotechdev
0
340
AWSDirectConnectの構築の進め方を整理してみた
masa_my
1
200
Filter What the LLM Reads: RAG Governance with AgentCore Gateway
yakumo
1
120
DevelopersIO2026 -バックアップは“消されないこと”が9割-
yoshida0129
0
430
デザインレビューは自動化できるのか?─ Flutter × Figma で UI 品質保証を考える
techiro
1
320
AIで選択肢が広がった組織設計の理想と現実
konifar
15
6.6k
[FECONF-2026] 신대륙을 향한 카카오페이증권 프론트엔드 항해기 (이주승)
l1ghthouse
0
250
Featured
See All Featured
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
68
59k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
580
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
740
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
2
410
Scaling GitHub
holman
464
140k
Building Applications with DynamoDB
mza
96
7.3k
Heart Work Chapter 1 - Part 1
lfama
PRO
10
37k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.5k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
650
How to Talk to Developers About Accessibility
jct
2
590
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
860
Transcript
ワークフローエンジンをGoで作る 2020/01/25 Umeda.go 2020 Winter 辻大志郎 @d_tutuz
None
Who are you? • 辻 大志郎(つじ だいしろう) @d_tutuz 渋谷区役所(~2014/9) Future
Architect(2014/10~) • 所属 Technology Innovation Group 競技プログラミング部
ワークフローエンジンとは 以下のようなことを実施するソフトウェア • 定期的なタスクの実行 • タスク間の依存関係を定義でき、順序関係を制御してタスクを実行 • タスクの実行状況/結果を管理
データ分析基盤などでよく用いられる • 定型業務の自動化 ◦ 大量のデータの収集 ◦ データの加工 ◦ データの集計
用語の定義(タスクとフロー) • タスク:処理の単位 • フロー:タスクの集合 タスク フロー データソース データレイク データマート
タスク タスク
既存のワークフローエンジン • たくさんある ◦ airflow ◦ argo ◦ rundeck ◦
cadence ◦ azkaban ◦ JP1 ◦ … • 十分に高機能&汎用的だが、扱いにくかったり... • ワークフローは業務と密に結合することが多い • シンプルなワークフローエンジンを作ってみたかった
Flowerを作った • フロー(Flow)を扱うソフトウェア(er)ということでFlower https://github.com/d-tsuji/flower
アーキテクチャ • Register(タスクの実行登録) • Watcher(タスクの実行監視/制御) • Worker(タスクの実行)
Flowerの特徴 • タスク管理 ◦ タスクの順序をマスタで一括管理 ◦ パラメータなどの埋め込みが可能 ◦ タスクを構成する処理はComponentとしてGoで実装 •
リカバリ/リラン ◦ エラー時にどのタスクでエラーになったかわかる仕組みを提供 ◦ テーブルのレコード更新でリランが可能 • 重複実行制御 • 流量制御
タスクの定義方法 • AirflowではPythonファイルとして処理と実行順序を記述 • タスクはGoのソースで、実行順序はマスタで管理できるようにしたかった タスク定義例 タスク例 タスク定義マスタ
タスク実行管理/制御 • タスクは管理テーブルで永続化 ◦ タスクのロスト、重複実行の制御は最重要な要素の一つ ◦ RDBMSが一番扱いやすい タスク管理テーブル exec_status 0:実行待ち
1:実行中 3:完了
重複実行制御 • 実行待ちタスクの行ロックを取得してから実行中に更新 • 実行中にステータスを更新して、workerにタスクをput • 同時に実行待ちタスクが参照されて二重にタスクが実行されることを防止 次に実行するタスクはこ のレコード 完了
実行待
流量制御 • 「実行中+実行待ちのタスク≦同時実行数」の場合はworkerにputしない 完了 実行中 実行中 実行待 実行待 例)同時実行数が2の場合 同時実行数を超えるので
zzzzzのフローのタスクは実行しない
落ち葉拾い • タスク監視のポーリング ◦ キュー(SQSとか)をはさめばイベント通知にできる • スケジューラ • 管理コンソール ◦
ほしいけど作っていない