SlideShare a Scribd company logo
Amazon SWF を用いた
タスク実行機構の模索
!
@rf0444
Amazon SWF とは
Amazon Simple Workflow 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 次のタスクを登録
CompleteWorkflowExecution この実行を終了(成功)
FailWorkflowExecution この実行を終了(失敗)
CancelWorkflowExecution この実行を終了(キャンセル)
ActivityTask List
SWF
Decider
Decider の実装
DecisionTask List
taskToken:
取得した DecisionTask の識別子
decisions:
判断のリスト。普通1つ
RespondDecisionTaskCompleted
判断 (一部)
ScheduleActivityTask 次のタスクを登録
CompleteWorkflowExecution この実行を終了(成功)
FailWorkflowExecution この実行を終了(失敗)
CancelWorkflowExecution この実行を終了(キャンセル)
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
作業者が一杯なら、タスクを取って
こない
作業者の作業が終わったら、タス
クを取ってくる

More Related Content

PPTX
EC2 Systems Managerはいいぞ
PDF
Systems manager 入門 ops jaws
PDF
AWS Systems manager 入門
PDF
Systems manager ハンズオン ops jaw
PDF
AWS as code_and_test
PDF
AWSによるWindowsクラサバ環境構築ハンズオン資料
PDF
JAWSUG初心者向けトラック 【Deploy&Ops】
PDF
[沖縄]Amimoto ハンズオン
EC2 Systems Managerはいいぞ
Systems manager 入門 ops jaws
AWS Systems manager 入門
Systems manager ハンズオン ops jaw
AWS as code_and_test
AWSによるWindowsクラサバ環境構築ハンズオン資料
JAWSUG初心者向けトラック 【Deploy&Ops】
[沖縄]Amimoto ハンズオン

What's hot (12)

PDF
[福井]Amimoto ハンズオン
PDF
もっと気軽にCloudFormation
PPTX
20150326 よくわかる AWS OpsWorks
PDF
CDP(キャンペーンサイト編)
PPTX
Windows Server 2016 Essentials TP4の強化ポイントと PowerShellの使いどころ
PDF
re:Growth 2018 Tokyo:Amazon FSx for Windows File Server はみんなが夢見たファイルサーバーなのか
PDF
AWS Elastic Beanstalk 詳細 -ほぼ週刊AWSマイスターシリーズ第9回-
PDF
失敗事例で学ぶ負荷試験
PPTX
Aws向け監視ソリューション比較
PDF
Aws elastic beanstalk-handson-summit2012
PPTX
AWS Elastic BeanstalkとAWS Lambdaのご紹介
PDF
AWSマイスターシリーズReloaded(AWS Beanstalk)
[福井]Amimoto ハンズオン
もっと気軽にCloudFormation
20150326 よくわかる AWS OpsWorks
CDP(キャンペーンサイト編)
Windows Server 2016 Essentials TP4の強化ポイントと PowerShellの使いどころ
re:Growth 2018 Tokyo:Amazon FSx for Windows File Server はみんなが夢見たファイルサーバーなのか
AWS Elastic Beanstalk 詳細 -ほぼ週刊AWSマイスターシリーズ第9回-
失敗事例で学ぶ負荷試験
Aws向け監視ソリューション比較
Aws elastic beanstalk-handson-summit2012
AWS Elastic BeanstalkとAWS Lambdaのご紹介
AWSマイスターシリーズReloaded(AWS Beanstalk)
Ad

Similar to SWF (19)

PDF
[JAWS-UG 三都物語 2014] 三都物語でAmazon SWFと握手!
PDF
[AWSマイスターシリーズ]Amazon Simple Workflow Service (SWF)
PDF
JAWSUG Kansai Simple Workflow Service (SWF)
PPTX
Amazon SimpleWorkflowのご紹介
PDF
Amazon Simple Workflow Service (SWF)
PDF
20170726 black belt_stepfunctions
PDF
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
PDF
Eight meets AWS
PDF
Amazon SNS+SQSによる Fanoutシナリオの話
PDF
AWS All Stars ~Lightning Talks x 13~
PDF
AWS Black Belt Techシリーズ AWS Data Pipeline
PPTX
StackStorm Workflowの設計
PPTX
Containers + EC2 Spot: AWS Batch による大規模バッチ処理でのスポットインスタンス活用
PDF
AWS Black Belt Online Seminar 2017 AWS re:Invent 2017速報
PDF
スタートアップでのAWS(Amazon Web Services)活用事例
PDF
[AWS Summit 2012] クラウドデザインパターン#5 CDP バッチ処理編
PPTX
[SA-3-1] The anti pattern (ジ・アンチパターン)
PPTX
Clrh 20121215
PDF
Asakusa バッチの運用を支える技術
[JAWS-UG 三都物語 2014] 三都物語でAmazon SWFと握手!
[AWSマイスターシリーズ]Amazon Simple Workflow Service (SWF)
JAWSUG Kansai Simple Workflow Service (SWF)
Amazon SimpleWorkflowのご紹介
Amazon Simple Workflow Service (SWF)
20170726 black belt_stepfunctions
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
Eight meets AWS
Amazon SNS+SQSによる Fanoutシナリオの話
AWS All Stars ~Lightning Talks x 13~
AWS Black Belt Techシリーズ AWS Data Pipeline
StackStorm Workflowの設計
Containers + EC2 Spot: AWS Batch による大規模バッチ処理でのスポットインスタンス活用
AWS Black Belt Online Seminar 2017 AWS re:Invent 2017速報
スタートアップでのAWS(Amazon Web Services)活用事例
[AWS Summit 2012] クラウドデザインパターン#5 CDP バッチ処理編
[SA-3-1] The anti pattern (ジ・アンチパターン)
Clrh 20121215
Asakusa バッチの運用を支える技術
Ad

More from rf0444 (11)

PDF
FRP in Practice
PDF
Start FRP
PDF
PFDS 11.2.2
PDF
PFDS 10.1.2
PDF
PFDS 9.3.2
PDF
PFDS 9.3.1
PDF
PFDS 8.4.1
PDF
PFDS 7.4
PDF
Tapl 5
PDF
Haskellday rf
PDF
PFDS 6.4.3
FRP in Practice
Start FRP
PFDS 11.2.2
PFDS 10.1.2
PFDS 9.3.2
PFDS 9.3.1
PFDS 8.4.1
PFDS 7.4
Tapl 5
Haskellday rf
PFDS 6.4.3

SWF