amazon simpleworkflowのご紹介
DESCRIPTION
デモのソースコードはhttps://github.com/c9katayama/AWSSampleAndDemoにあります。TRANSCRIPT
Amazon Simple Workflow
アマゾン データ サービス ジャパン 株式会社 ソリューションアーキテクト
片山 暁雄
Amazon Simple Workflow(SWF)
SWF
利用者
AWS 上でワークフローを実現するための実行基盤 ワークフローの管理、実行タスクの管理、タスク間のルーティング、実
行履歴・状態管理は AWS 側( SWF) が担当 タスク処理の実装と、ワークフローの登録は利用者が実施
利用例
• 動画や音声のエンコーディング• 人気 E コマースサイト• バッチ処理• 途中で人手が入るワークフローらないと進まないような処理
• NASA
構成イメージ
ワークフロー
ワークフロー
アクティビティ
アクティビティ
アクティビティ
アクティビティ
アクティビティ
ドメイン
請求処理 001
請求処理 002
ワークフローエグゼキューション
実体化
用語• ドメイン
– トップレベルの論理区分。この中にワークフローやアクティビティがこの区分単位で管理される
• ワークフロー– 実行する処理の一連の流れを定義する単位
• ワークフローエグゼキューション– ワークフローをインスタンス化したもの。各エグゼキューショ
ンに任意の ID と自動生成 ID が付与される– 例えば任意の ID は、請求書番号などを採番– 実行履歴(ワークフローヒストリー)を保持
• アクティビティ– 論理的な処理の定義。ワークフローの各アクティビティごとに
タスクが発生し、紐づくワーカーが処理を行う
構成イメージ
ワークフロー
ワークフロー
アクティビティ
アクティビティ
アクティビティ
アクティビティ
アクティビティ
ドメイン
請求処理 001
請求処理 002
ワークフローエグゼキューション
実体化
ワークフロースターター
アクティビティワーカー /デサイダー
ワークフロースターター
アクティビティワーカー /デサイダー
用語(アクター編)
• ワークフロースターター– ワークフローを開始するアクター– 例えば申し込みを受け付ける Web サーバや、定期処理を行う
cron サーバ• アクティビティワーカー
– アクティビティごとに発生するタスクを実際に処理するアクター– 例えば画像変換処理や、 S3 へアップロード / ダウンロードする
処理• デサイダー
– アクティビティ間で動作する、処理のルーティングを決めるアクター
– 状況に応じて、次のアクティビティを変える
アクターとは、ワークフロー内で実際に動作するコンピューター処理のことアクターとは、SWFの外側で実際に処理を行うコンピューター処理のこと
アクティビティの中から別のワークフローをキック可能
ポイント• ワーカー・デサイダーは SWF のタスクをポーリングして取得
– ワーカーは EC2 でなくてもよい– ポーリングなのでファイヤーウォールを超えやすい
• ワークフロースターター、ワーカー・デサイダーは好きな言語、好きなシステムで実装可能– 指定の API でタスクを取得して結果を正しく返せば OK
費用
• 1ワークフロー実行ごとに $0.0001• 1ワークフロー実行の実行時間、 24 時間
ごとに $0.000005– ただし 24 時間まで無料
• 完了した1ワークフローの実行履歴を残すのに、 1 日当たり $0.000005
AWS Flow Framework
AWS Flow Framework
• ワークフローの定義とワーカー処理を実装するためのフレームワーク
• 言語: Java• アノテーションと APT を使用して、ポーリング
処理やエラー処理、分岐処理を実装から隠蔽• Junit 連動のテストツール
– ローカルでワークフローのテストが可能
NASAの例
デモ
SWF
AmazonSES
Elastic Beanstalk
まとめ
• SWF はワークフローを管理するための冗長化された基盤を提供します。
• 開発者はワークフローの状態管理を気にすることなく、各アクティビティの処理実装に注力できます。
• Flow Framework を使用すると、ワークフロー定義や分岐・ジョイント処理が容易に記述できます。