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 #2
Search
Tsuji Daishiro
February 07, 2020
Technology
1.3k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Workflow engine with go #2
Tsuji Daishiro
February 07, 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
tutuz
0
2k
Nginx cache pitfalls
tutuz
0
300
Check inline expansion with Go
tutuz
0
3.2k
Parallel-Simulated-Annealing
tutuz
3
5.2k
Other Decks in Technology
See All in Technology
AI時代のAPI開発を加速する品質ガードレール / API Quality Guardrails in the AI Era
yokawasa
0
160
無理せず続ける、子育てエンジニアの学び
codmoninc
PRO
0
250
継続的なAIコスト最適化
bgpat
1
180
AI時代に必要な脅威モデリング― 変化の速度に負けない理解とリスク判断
masakane55
4
1.1k
転んだ話が背中を預ける理由になる / A_story_about_falling_down_gives_you_a_reason_to_watch_each_other_s_backs.pdf
pauli
3
320
事業活動を AI Ready にする攻めと守りのデータエンジニアリング / data-engineering-for-ai-ready-business
pei0804
3
1.6k
自主式軟體工廠
philipz
0
230
Meet AgentCore Identity Consent Portal
hironobuiga
3
190
スキルを作る、その前に!複数人で使われるスキルを 作るためのプロセス
junkifurukawa
2
340
使いこなすために知っておきたい Azure SRE Agent アンチパターン
torumakabe
2
400
インバスケット試験対策アプリを 作って見えたAIエージェント構築 ナレッジ2選
shichijoyuhi
1
130
SDDの運用にめげずに向き合った話
sansantech
PRO
1
130
Featured
See All Featured
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
510
Site-Speed That Sticks
csswizardry
13
1.5k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.8k
How to make the Groovebox
asonas
2
2.5k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
203
76k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
8.1k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.7k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.9k
Designing for humans not robots
tammielis
254
26k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.4k
Transcript
Goでワークフローエンジンを作る 2020/2/7(Fri) golang.tokyo #29 Future Architect Tsuji Daishiro
Who are you? 辻 大志郎(つじ だいしろう) @d_tutuz 渋谷区役所(~2014/9) Future Architect(2014/10~)
✓ 所属 Technology Innovation Group 競技プログラミング部 2
None
Goの標準コードリーディング会やってます ✓ 社内で標準コードリーディング会やってます ✓ 全12回で、3回まで開催済 ✓ 以下のパッケージ ✓ io ✓
errors ✓ hash/maphash ✓ context ✓ flag ✓ path ✓ testing ✓ iotest ✓ sort ✓ net/http 1 (client) ✓ net/http 2 (server) ✓ database/sql 4
ワークフローエンジンとは? ✓ 以下のようなことを実施するソフトウェア • 定期的なタスクの実行 • タスク間の依存関係を定義でき、順序関係を制御してタスクを実行 • タスクの実行状況/結果を管理 ✓
定型業務の自動化 5
タスクとフロー ✓ タスク:処理の単位 ✓ フロー:タスクの集合 6 タスク フロー タスク タスク
既存のワークフローエンジン 7 ✓ OSSにいろんなワークフローエンジンはある ✓ Apache Airflow ✓ Argo ✓
Rundeck … ✓ 高機能かつ自由度が高いので便利 ✓ 業務のニーズに合わないことも… ✓ タスクをGoで実装できなかったり…
None
Flowerを作った 9 ✓ フロー(Flow)を扱うソフトウェア(er)ということでFlower ✓ 以下を目指して作った ✓ タスクの管理が容易 ✓ タスクをGoで実装可能
✓ https://github.com/d-tsuji/flower
アーキテクチャ 10 ✓ Register(タスクの実行登録) ✓ Watcher(タスクの実行監視/制御) ✓ Worker(タスクの実行)
Flowerの特徴 11 ✓ タスク管理 ✓ タスクの順序をマスタで一括管理 ✓ パラメータなどの埋め込みが可能 ✓ タスクを構成する処理はComponentとしてGoで実装
✓ Exactly Once ✓ リカバリ/リラン ✓ エラー時にどのタスクでエラーになったかわかる仕組みを提供 ✓ テーブルのレコード更新でリランが可能 ✓ 並列実行 ✓ 流量制御
タスクの定義方法 12 ✓ タスクはGoのソースで、実行順序はマスタで管理できるようにしたかった ✓ ただRDSの常時起動はお高く、エコではないので、要検討。組み込みのデータベースを使うなどはある
タスク実行管理/制御 13 ✓ タスクは管理テーブルで永続化 ✓ タスクのロスト、重複実行の制御は最重要な要素の一つ ✓ RDBMSが一番扱いやすい タスク管理テーブル exec_status
0:実行待ち 1:実行中 3:完了
落ち葉拾い 14 ✓ タスク監視のポーリング ✓ キュー(SQSとか)をはさめばイベント通知にできる ✓ イベント or ポーリングをモードとして選択できると良さそう
✓ 内蔵スケジューラ ✓ 管理コンソール ✓ ほしいけどかつ必要だけど、未作成 ✓ GUIによるワークフロー開発 ✓ 任意のDAGのサポート
楽しいワークフローエンジンライフを!