SlideShare une entreprise Scribd logo
1  sur  58
Télécharger pour lire hors ligne
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
作業者が一杯なら、タスクを取って
こない
作業者の作業が終わったら、タス
クを取ってくる

Contenu connexe

Tendances

[福井]Amimoto ハンズオン
[福井]Amimoto ハンズオン[福井]Amimoto ハンズオン
[福井]Amimoto ハンズオンHiromichi Koga
 
もっと気軽にCloudFormation
もっと気軽にCloudFormationもっと気軽にCloudFormation
もっと気軽にCloudFormationSatoshi Nakada
 
20150326 よくわかる AWS OpsWorks
20150326 よくわかる AWS OpsWorks20150326 よくわかる AWS OpsWorks
20150326 よくわかる AWS OpsWorksTetsuya Chiba
 
CDP(キャンペーンサイト編)
CDP(キャンペーンサイト編)CDP(キャンペーンサイト編)
CDP(キャンペーンサイト編)Hiroyasu Suzuki
 
Windows Server 2016 Essentials TP4の強化ポイントと PowerShellの使いどころ
Windows Server 2016 Essentials TP4の強化ポイントとPowerShellの使いどころ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 はみんなが夢見たファイルサーバーなのか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回-AWS Elastic Beanstalk 詳細 -ほぼ週刊AWSマイスターシリーズ第9回-
AWS Elastic Beanstalk 詳細 -ほぼ週刊AWSマイスターシリーズ第9回-SORACOM, INC
 
失敗事例で学ぶ負荷試験
失敗事例で学ぶ負荷試験失敗事例で学ぶ負荷試験
失敗事例で学ぶ負荷試験樽八 仲川
 
Ops worksに今後期待するところ
Ops worksに今後期待するところOps worksに今後期待するところ
Ops worksに今後期待するところFumihiko Shiroyama
 
Aws向け監視ソリューション比較
Aws向け監視ソリューション比較Aws向け監視ソリューション比較
Aws向け監視ソリューション比較Naoya Hashimoto
 
Aws elastic beanstalk-handson-summit2012
Aws elastic beanstalk-handson-summit2012Aws elastic beanstalk-handson-summit2012
Aws elastic beanstalk-handson-summit2012Akio Katayama
 
AWS Elastic BeanstalkとAWS Lambdaのご紹介
AWS Elastic BeanstalkとAWS Lambdaのご紹介AWS Elastic BeanstalkとAWS Lambdaのご紹介
AWS Elastic BeanstalkとAWS Lambdaのご紹介Akio Katayama
 
AWSマイスターシリーズReloaded(AWS Beanstalk)
AWSマイスターシリーズReloaded(AWS Beanstalk)AWSマイスターシリーズReloaded(AWS Beanstalk)
AWSマイスターシリーズReloaded(AWS Beanstalk)Akio Katayama
 

Tendances (13)

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

Plus de rf0444

FRP in Practice
FRP in PracticeFRP in Practice
FRP in Practicerf0444
 
Start FRP
Start FRPStart FRP
Start FRPrf0444
 
PFDS 11.2.2
PFDS 11.2.2PFDS 11.2.2
PFDS 11.2.2rf0444
 
PFDS 10.1.2
PFDS 10.1.2PFDS 10.1.2
PFDS 10.1.2rf0444
 
PFDS 9.3.2
PFDS 9.3.2PFDS 9.3.2
PFDS 9.3.2rf0444
 
PFDS 9.3.1
PFDS 9.3.1PFDS 9.3.1
PFDS 9.3.1rf0444
 
PFDS 8.4.1
PFDS 8.4.1PFDS 8.4.1
PFDS 8.4.1rf0444
 
PFDS 7.4
PFDS 7.4PFDS 7.4
PFDS 7.4rf0444
 
Tapl 5
Tapl 5Tapl 5
Tapl 5rf0444
 
Haskellday rf
Haskellday rfHaskellday rf
Haskellday rfrf0444
 
PFDS 6.4.3
PFDS 6.4.3PFDS 6.4.3
PFDS 6.4.3rf0444
 

Plus de rf0444 (11)

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

SWF