狠狠撸

狠狠撸Share a Scribd company logo
Amazon SWF を用いた
タスク実行機構の模索
!
@rf0444
Amazon SWF とは
Amazon Simple Work?ow Service
タスク実行用のキューと、現在の
タスクの状態管理を提供
実行完了したタスクの状態ログを
一定期間保管
SQSとの比較
SQS SWF
提供してくれる
もの
メッセージキュー
一連の処理の流れ
(ワークフロー)の管理
順序 保証しない ワークフロー内で保証
キューからの
削除
指定時間だけ不可視
その間に手動で削除
取得の際に削除される
実行保証 少なくとも1つ ただ1つ
信頼性保証
キューに入れたメッセージが
勝手に消えない
ワークフローが途中で
勝手に消えない
ワークフロー
バックアップ開始
例:?バックアップ
バックアップ完成待ち 復元確認
ワークフロー
例:?バックアップ
“バックアップ” 実行が
投入されました
ワークフロー
例:?バックアップ
「さて、何しましょう?」
ワークフロー
例:?バックアップ
「まだ何もしていないので、
次は ”バックアップ開始” タスクを
してください」
イベントログ
1
”バックアップ” 実行が
投入されました
Decider
ワークフロー
バックアップ開始
例:?バックアップ
「”バックアップ開始”タスク
を実行してください」
ワークフロー
バックアップ開始
例:?バックアップ
Worker
「あいよ」
ワークフロー
バックアップ開始
例:?バックアップ
Worker
「てことでよろしく」
なんとかサーバ
「あいよ」
ワークフロー
バックアップ開始
例:?バックアップ
Worker「”バックアップ開始”タスク
終わったよ」
ワークフロー
例:?バックアップ
「さて、次は何しましょう?」
バックアップ開始
ワークフロー
例:?バックアップ
バックアップ開始
「”バックアップ開始” タスクまで
終わっているので、
次は “バックアップ完成待ち”タスクを
してください」
イベントログ
1
”バックアップ” 実行が
投入されました
2
“バックアップ開始”タスク
が終了しました
Decider
ワークフロー
バックアップ開始
例:?バックアップ
「”バックアップ完成待ち”タスク
を実行してください」
バックアップ完成待ち
ワークフロー
バックアップ開始
例:?バックアップ
バックアップ完成待ち
Worker
「あいよ」
ワークフロー
バックアップ開始
例:?バックアップ
バックアップ完成待ち
Worker
なんとかサーバ
「まだだよ」
「バックアップ終わった?」
ワークフロー
バックアップ開始
例:?バックアップ
バックアップ完成待ち
Worker
「少し待つか」
ワークフロー
バックアップ開始
例:?バックアップ
バックアップ完成待ち
Worker
1時間後…
ワークフロー
バックアップ開始
例:?バックアップ
バックアップ完成待ち
Worker
なんとかサーバ
「終わったよ」
「バックアップ終わった?」
ワークフロー
バックアップ開始
例:?バックアップ
バックアップ完成待ち
Worker
「”バックアップ完成待ち”タスク
終わったよ」
ワークフロー
例:?バックアップ
「さて、次は何しましょう?」
バックアップ開始 バックアップ完成待ち
ワークフロー
例:?バックアップ
バックアップ開始 バックアップ完成待ち
(中略)
ワークフロー
例:?バックアップ
「さて、次は何しましょう?」
バックアップ開始 復元確認バックアップ完成待ち
ワークフロー
例:?バックアップ
バックアップ開始 復元確認バックアップ完成待ち
Decider
イベントログ
1
”バックアップ” 実行が
投入されました
2
“バックアップ開始”
タスクが終了しました
3
“バックアップ完成待ち”
タスクが終了しました
4
“復元確認”
タスクが終了しました
「全てのタスクが
終了しているので、
“バックアップ” 実行は
これで終了です」
ワークフロー
バックアップ開始
例:?バックアップ
バックアップ完成待ち 復元確認
ワークフロー
バックアップ開始
例:?バックアップ
バックアップ完成待ち 復元確認
イベントログ
1
”バックアップ” 実行が
投入されました
2
“バックアップ開始”
タスクが終了しました
3
“バックアップ完成待ち”
タスクが終了しました
4
“復元確認”
タスクが終了しました
5
”バックアップ” 実行が
終了しました
Decider の実装
Decider
SWF
DecisionTask List
ActivityTask List
SWF
Decider の実装
DeciderDecisionTask List
PollForDecisionTask
DecisionTask List に要素があれば、
先頭1件を取ってくる。
なければ、最大1分間繋ぎ続けて
要素が入ってくるのを待つ。
待っても入ってこなければ、
taskToken (後述)が空の
DecisionTask を返す。
ActivityTask List
SWF
Decider
Decider の実装
PollForDecisionTask
DecisionTask List
ActivityTask List
SWF
Decider
Decider の実装
PollForDecisionTask
DecisionTask:
taskToken:
この DecisionTask の識別子
events:
イベントログ
DecisionTask List
ActivityTask List
SWF
Decider
Decider の実装
DecisionTask List
taskToken:
取得した DecisionTask の識別子
decisions:
判断のリスト。普通1つ
RespondDecisionTaskCompleted
判断 (一部)
ScheduleActivityTask 次のタスクを登録
CompleteWork?owExecution この実行を終了(成功)
FailWork?owExecution この実行を終了(失敗)
CancelWork?owExecution この実行を終了(キャンセル)
ActivityTask List
SWF
Decider
Decider の実装
DecisionTask List
taskToken:
取得した DecisionTask の識別子
decisions:
判断のリスト。普通1つ
RespondDecisionTaskCompleted
判断 (一部)
ScheduleActivityTask 次のタスクを登録
CompleteWork?owExecution この実行を終了(成功)
FailWork?owExecution この実行を終了(失敗)
CancelWork?owExecution この実行を終了(キャンセル)
ActivityTask List
SWF
Worker の実装
Worker
DecisionTask List
ActivityTask List
PollForActivityTask
ActivityTask List に要素があれば、
先頭1件を取ってくる。
なければ、最大1分間繋ぎ続けて
要素が入ってくるのを待つ。
待っても入ってこなければ、
taskToken が空の ActivityTask を返す。
SWF
Worker の実装
Worker
DecisionTask List
ActivityTask List
PollForActivityTask
ActivityTask:
taskToken:
この ActivityTask の識別子
activityType:
実行種別
input:
ActivityTask 登録時の入力(あれば)
SWF
Worker の実装
Worker
DecisionTask List
ActivityTask List
RespondActivityTaskCompleted:
タスクが正常に終了
!
RespondActivityTaskFailed:
タスクの実行に失敗
!
RespondActivityTaskCanceled:
タスクの実行がキャンセルされた
内部実装
SWF
Task List
Decider/Worker
固定 Actor
SWF
Task List
Decider/Worker
poll
respond
poll
respond
poll
respond
work
work
work
固定 Actor
固定数の作業者を用意し、作業者内
でタスクの取得/実行/返信を行う
一度に大量にタスクが投入された
場合、作業者数が少ないと完了に
時間がかかる
無制限 Actor
SWF
Task List
Decider/Worker
poll
無制限 Actor
SWF
Task List
Decider/Worker
work
delegate
無制限 Actor
SWF
Task List
Decider/Worker
poll
work
無制限 Actor
SWF
Task List
Decider/Worker
work
delegate
work
無制限 Actor
SWF
Task List
Decider/Worker
work
work
.
.
.
無制限 Actor
SWF
Task List
Decider/Worker
work
work
.
.
.
respond
無制限 Actor
SWF
Task List
Decider/Worker
work
.
.
.
無制限 Actor
とれるだけ取ってきて、その度に作
業者を作る
一度に大量にタスクが投入された
場合、作業者でリソースを食い尽
くす
制限付き Actor
SWF
Task List
Decider/Worker
poll
(limit = 2)
work
work
制限付き Actor
SWF
Task List
Decider/Worker
work
work
(limit = 2)
enqueue
制限付き Actor
SWF
Task List
Decider/Worker
work
work
(limit = 2)
poll
制限付き Actor
SWF
Task List
Decider/Worker
work
work
(limit = 2)
enqueue
制限付き Actor
SWF
Task List
Decider/Worker
work
(limit = 2)
enqueue
制限付き Actor
SWF
Task List
Decider/Worker
work
(limit = 2)
dequeue
work
delegate
制限付き Actor
とれるだけ取ってくるが、作業者が
一杯なら一旦貯めておく
SWF と内部キューの二重管理
沢山貯まっているときに死ぬとや
ばい
取得制限付き Actor
SWF
Task List
Decider/Worker
(limit = 2)
work
work
取得制限付き Actor
SWF
Task List
Decider/Worker
(limit = 2)
work
取得制限付き Actor
SWF
Task List
Decider/Worker
(limit = 2)
work
poll
取得制限付き Actor
SWF
Task List
Decider/Worker
(limit = 2)
work
work
delegate
取得制限付き Actor
作業者が一杯なら、タスクを取って
こない
作業者の作業が終わったら、タス
クを取ってくる
Ad

Recommended

EC2 Systems Managerはいいぞ
EC2 Systems Managerはいいぞ
koki abe
?
Systems manager 入門 ops jaws
Systems manager 入門 ops jaws
真乙 九龍
?
AWS Systems manager 入門
AWS Systems manager 入門
Serverworks Co.,Ltd.
?
Systems manager ハンズオン ops jaw
Systems manager ハンズオン ops jaw
真乙 九龍
?
础奥厂による奥颈苍诲辞飞蝉クラサバ环境构筑ハンズオン资料
础奥厂による奥颈苍诲辞飞蝉クラサバ环境构筑ハンズオン资料
Yoshinori Yamanouchi
?
JAWSUG初心者向けトラック 【Deploy&Ops】
JAWSUG初心者向けトラック 【Deploy&Ops】
Yukihiko SAWANOBORI
?
[沖縄]Amimoto ハンス?オン
[沖縄]Amimoto ハンス?オン
Hiromichi Koga
?
[福井]Amimoto ハンス?オン
[福井]Amimoto ハンス?オン
Hiromichi Koga
?
もっと気軽に颁濒辞耻诲贵辞谤尘补迟颈辞苍
もっと気軽に颁濒辞耻诲贵辞谤尘补迟颈辞苍
Satoshi Nakada
?
20150326 よくわかる AWS OpsWorks
20150326 よくわかる AWS OpsWorks
Tetsuya Chiba
?
颁顿笔(キャンペーンサイト编)
颁顿笔(キャンペーンサイト编)
Hiroyasu Suzuki
?
Windows Server 2016 Essentials TP4の強化ポイントと PowerShellの使いどころ
Windows Server 2016 Essentials TP4の強化ポイントと PowerShellの使いどころ
Satoru Nasu
?
re:Growth 2018 Tokyo:Amazon FSx for Windows File Server はみんなが夢見たファイルサーバーなのか
re:Growth 2018 Tokyo:Amazon FSx for Windows File Server はみんなが夢見たファイルサーバーなのか
Nobuhiro Nakayama
?
AWS Elastic Beanstalk 詳細 -ほぼ週刊AWSマイスターシリーズ第9回-
AWS Elastic Beanstalk 詳細 -ほぼ週刊AWSマイスターシリーズ第9回-
SORACOM, INC
?
失败事例で学ぶ负荷试験
失败事例で学ぶ负荷试験
樽八 仲川
?
Ops worksに今後期待するところ
Ops worksに今後期待するところ
Fumihiko Shiroyama
?
础飞蝉向け监视ソリューション比较
础飞蝉向け监视ソリューション比较
Naoya Hashimoto
?
Aws elastic beanstalk-handson-summit2012
Aws elastic beanstalk-handson-summit2012
Akio Katayama
?
AWS Elastic BeanstalkとAWS Lambdaのご紹介
AWS Elastic BeanstalkとAWS Lambdaのご紹介
Akio Katayama
?
AWSマイスターシリーズReloaded(AWS Beanstalk)
AWSマイスターシリーズReloaded(AWS Beanstalk)
Akio Katayama
?
FRP in Practice
FRP in Practice
rf0444
?
Start FRP
Start FRP
rf0444
?
PFDS 11.2.2
PFDS 11.2.2
rf0444
?
PFDS 10.1.2
PFDS 10.1.2
rf0444
?
PFDS 9.3.2
PFDS 9.3.2
rf0444
?
PFDS 9.3.1
PFDS 9.3.1
rf0444
?
PFDS 8.4.1
PFDS 8.4.1
rf0444
?

More Related Content

What's hot (13)

[福井]Amimoto ハンス?オン
[福井]Amimoto ハンス?オン
Hiromichi Koga
?
もっと気軽に颁濒辞耻诲贵辞谤尘补迟颈辞苍
もっと気軽に颁濒辞耻诲贵辞谤尘补迟颈辞苍
Satoshi Nakada
?
20150326 よくわかる AWS OpsWorks
20150326 よくわかる AWS OpsWorks
Tetsuya Chiba
?
颁顿笔(キャンペーンサイト编)
颁顿笔(キャンペーンサイト编)
Hiroyasu Suzuki
?
Windows Server 2016 Essentials TP4の強化ポイントと PowerShellの使いどころ
Windows Server 2016 Essentials TP4の強化ポイントと PowerShellの使いどころ
Satoru Nasu
?
re:Growth 2018 Tokyo:Amazon FSx for Windows File Server はみんなが夢見たファイルサーバーなのか
re:Growth 2018 Tokyo:Amazon FSx for Windows File Server はみんなが夢見たファイルサーバーなのか
Nobuhiro Nakayama
?
AWS Elastic Beanstalk 詳細 -ほぼ週刊AWSマイスターシリーズ第9回-
AWS Elastic Beanstalk 詳細 -ほぼ週刊AWSマイスターシリーズ第9回-
SORACOM, INC
?
失败事例で学ぶ负荷试験
失败事例で学ぶ负荷试験
樽八 仲川
?
Ops worksに今後期待するところ
Ops worksに今後期待するところ
Fumihiko Shiroyama
?
础飞蝉向け监视ソリューション比较
础飞蝉向け监视ソリューション比较
Naoya Hashimoto
?
Aws elastic beanstalk-handson-summit2012
Aws elastic beanstalk-handson-summit2012
Akio Katayama
?
AWS Elastic BeanstalkとAWS Lambdaのご紹介
AWS Elastic BeanstalkとAWS Lambdaのご紹介
Akio Katayama
?
AWSマイスターシリーズReloaded(AWS Beanstalk)
AWSマイスターシリーズReloaded(AWS Beanstalk)
Akio Katayama
?
[福井]Amimoto ハンス?オン
[福井]Amimoto ハンス?オン
Hiromichi Koga
?
もっと気軽に颁濒辞耻诲贵辞谤尘补迟颈辞苍
もっと気軽に颁濒辞耻诲贵辞谤尘补迟颈辞苍
Satoshi Nakada
?
20150326 よくわかる AWS OpsWorks
20150326 よくわかる AWS OpsWorks
Tetsuya Chiba
?
颁顿笔(キャンペーンサイト编)
颁顿笔(キャンペーンサイト编)
Hiroyasu Suzuki
?
Windows Server 2016 Essentials TP4の強化ポイントと PowerShellの使いどころ
Windows Server 2016 Essentials TP4の強化ポイントと PowerShellの使いどころ
Satoru Nasu
?
re:Growth 2018 Tokyo:Amazon FSx for Windows File Server はみんなが夢見たファイルサーバーなのか
re:Growth 2018 Tokyo:Amazon FSx for Windows File Server はみんなが夢見たファイルサーバーなのか
Nobuhiro Nakayama
?
AWS Elastic Beanstalk 詳細 -ほぼ週刊AWSマイスターシリーズ第9回-
AWS Elastic Beanstalk 詳細 -ほぼ週刊AWSマイスターシリーズ第9回-
SORACOM, INC
?
失败事例で学ぶ负荷试験
失败事例で学ぶ负荷试験
樽八 仲川
?
Ops worksに今後期待するところ
Ops worksに今後期待するところ
Fumihiko Shiroyama
?
础飞蝉向け监视ソリューション比较
础飞蝉向け监视ソリューション比较
Naoya Hashimoto
?
Aws elastic beanstalk-handson-summit2012
Aws elastic beanstalk-handson-summit2012
Akio Katayama
?
AWS Elastic BeanstalkとAWS Lambdaのご紹介
AWS Elastic BeanstalkとAWS Lambdaのご紹介
Akio Katayama
?
AWSマイスターシリーズReloaded(AWS Beanstalk)
AWSマイスターシリーズReloaded(AWS Beanstalk)
Akio Katayama
?

More from rf0444 (11)

FRP in Practice
FRP in Practice
rf0444
?
Start FRP
Start FRP
rf0444
?
PFDS 11.2.2
PFDS 11.2.2
rf0444
?
PFDS 10.1.2
PFDS 10.1.2
rf0444
?
PFDS 9.3.2
PFDS 9.3.2
rf0444
?
PFDS 9.3.1
PFDS 9.3.1
rf0444
?
PFDS 8.4.1
PFDS 8.4.1
rf0444
?
Haskellday rf
Haskellday rf
rf0444
?
PFDS 6.4.3
PFDS 6.4.3
rf0444
?
FRP in Practice
FRP in Practice
rf0444
?
Start FRP
Start FRP
rf0444
?
PFDS 11.2.2
PFDS 11.2.2
rf0444
?
PFDS 10.1.2
PFDS 10.1.2
rf0444
?
PFDS 9.3.2
PFDS 9.3.2
rf0444
?
PFDS 9.3.1
PFDS 9.3.1
rf0444
?
PFDS 8.4.1
PFDS 8.4.1
rf0444
?
Haskellday rf
Haskellday rf
rf0444
?
PFDS 6.4.3
PFDS 6.4.3
rf0444
?
Ad

SWF