amazon simpleworkflowのご紹介

Post on 24-May-2015

1.203 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

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 を使用すると、ワークフロー定義や分岐・ジョイント処理が容易に記述できます。

top related