Top Banner
三都物語でAmazon SWFと握手! 夏のJAWS-UG 三都物語 2014
41

[JAWS-UG 三都物語 2014] 三都物語でAmazon SWFと握手!

May 24, 2015

Download

Software

Akio Katayama

2014/7/5 JAWS-UG 三都物語2014のSWF紹介資料
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: [JAWS-UG 三都物語 2014] 三都物語でAmazon SWFと握手!

三都物語でAmazon SWFと握手!

夏のJAWS-UG三都物語 2014

Page 2: [JAWS-UG 三都物語 2014] 三都物語でAmazon SWFと握手!

• 片山 暁雄• アマゾンデータサービスジャパン

• 部長/ソリューションアーキテクト

• 大阪府池田市出身

• Twitter• @c9katayama

• #ヤマン

• 好きなAWSサービス• Amazon SWF

自己紹介

Page 3: [JAWS-UG 三都物語 2014] 三都物語でAmazon SWFと握手!

本日のテーマ

Amazon Simple Workflow Service (Amazon SWF)

エスダブルエフ/スウィフ

Page 4: [JAWS-UG 三都物語 2014] 三都物語でAmazon SWFと握手!

• Amazon SWFのメカニズム

• デモ

• まとめ

Page 5: [JAWS-UG 三都物語 2014] 三都物語でAmazon SWFと握手!

• Amazon SWFのメカニズム

• デモ

• まとめ

Page 6: [JAWS-UG 三都物語 2014] 三都物語でAmazon SWFと握手!

Amazon SWFとは

Amazon SWFは

• 「処理のステート管理」

• 「タスク間のコーディネート」

を行うためのフルマネージドサービス

いわゆる「承認を行うアプリ」ではない

Page 7: [JAWS-UG 三都物語 2014] 三都物語でAmazon SWFと握手!

Amazon SWFとは

Amazon SWFはシステム構築における以下の問題を解消

スケーラビリティ

アベイラビリティ

並列処理の制御

ネットワーク/FW越しの連携

Page 8: [JAWS-UG 三都物語 2014] 三都物語でAmazon SWFと握手!

例えば:動画の処理

ユーザーが動画をアップロード

サムネイルの作成

エンコード処理(スマホ向け)

エンコード処理(PC向け)

不正動画検出

サイト公開

元動画の保存

動画インデックスの更新

メタデータ埋め込み

ユーザー情報の更新

Page 9: [JAWS-UG 三都物語 2014] 三都物語でAmazon SWFと握手!

例えば:動画の処理(アーキテクチャその1)

ユーザーが動画をアップロード

サムネイルの作成

エンコード処理(スマホ向け)

エンコード処理(PC向け)

不正動画検出

サイト公開

元動画の保存

動画インデックスの更新

メタデータ埋め込み

ユーザー情報の更新

Page 10: [JAWS-UG 三都物語 2014] 三都物語でAmazon SWFと握手!

1つのアプリケーションで逐次処理を実装すれば、システムとしての作りは簡単

ただし・・・

• 全体の処理が長くなる

• 性能向上はスケールアップしかない

• 途中でエラーになった場合にリカバリできない

動画の処理(アーキテクチャその1)

public static void main(String[] args) throws Exception {

AWSCredentials credentials = new PropertiesCredentials(

RemoveNonUsedSecurityGroup.class.getResourceAsStream("/AwsCredentials.properties

AmazonEC2Client ec2 = new AmazonEC2Client(credentials);

ec2.setRegion(Region.getRegion(Regions.SA_EAST_1));

DescribeInstancesResult result = ec2.describeInstances();

Set<String> idSet = new HashSet<String>();

for (Reservation reservation : result.getReservations()) {

for (Instance instance : reservation.getInstances()) {

for (GroupIdentifier sg : instance.getSecurityGroups()) {

idSet.add(sg.getGroupId());

}

}

}

DescribeSecurityGroupsResult describeSecurityGroupsResult =

ec2.describeSecurityGroups();

List<SecurityGroup> sgList = new ArrayList<SecurityGroup>();

for (SecurityGroup sg : describeSecurityGroupsResult.getSecurityGroups()) {

if (idSet.contains(sg.getGroupId()) == false) {

if (sg.getIpPermissions().size() > 0) {

for (IpPermission ip : sg.getIpPermissions()) {

for (UserIdGroupPair pair : ip.getUserIdGroupPairs()) {

pair.setGroupId(null);

}

}

try{

ec2.revokeSecurityGroupIngress(new RevokeSecurityGroupIngressRequest(

sg.getGroupName(), sg.getIpPermissions()));

}catch(Exception e){}

}

sgList.add(sg);

}

}

for (SecurityGroup sg : sgList) {

if (sg.getGroupName().equals("default") == false) {

ec2.deleteSecurityGroup(new DeleteSecurityGroupRequest()

.withGroupId(sg.getGroupId()));

Page 11: [JAWS-UG 三都物語 2014] 三都物語でAmazon SWFと握手!

例えば:動画の処理(アーキテクチャその2)

ユーザーが動画をアップロード

サムネイルの作成

エンコード処理(スマホ向け)

エンコード処理(PC向け)

不正動画検出

サイト公開

元動画の保存

動画インデックスの更新

メタデータ埋め込み

ユーザー情報の更新

キュー

Page 12: [JAWS-UG 三都物語 2014] 三都物語でAmazon SWFと握手!

各タスクを分割して、キューでつなぐ

• 途中でプロセスエラーになっても落ちても、プロセス復帰後は直前のキューまで戻れる

• 各タスクを別のサーバに乗せることが可能

• スケールアウトと冗長化を実現

ただし・・・

• 全体の処理は長いまま

• 各タスクが、次のタスクを意識しないといけない

エンコード処理(スマホ向け)

エンコード処理(スマホ向け)

動画の処理(アーキテクチャその2)

EC2

EC2

Page 13: [JAWS-UG 三都物語 2014] 三都物語でAmazon SWFと握手!

例えば:動画の処理(アーキテクチャその3)

ユーザーが動画をアップロード

サムネイルの作成

エンコード処理(スマホ向け)

エンコード処理(PC向け)

不正動画検出

サイト公開

元動画の保存

動画インデックスの更新

メタデータ埋め込み

ユーザー情報の更新

キュー

タスクの制御

Page 14: [JAWS-UG 三都物語 2014] 三都物語でAmazon SWFと握手!

「タスクの制御」処理を導入

• タスク実行の順序をこの処理に集めることで、タスク間を疎結合に

• この処理が状態管理をすることで、タスクの並列実行が可能に

• タスクの戻り値で次のタスクを変えたりできる

• 処理の履歴を記録できる

ただし・・・

• 状態管理や処理履歴記録など、複雑な実装が必要

• 「タスクの制御」処理自体がSPOFで、かつスケーラビリティに欠ける

動画の処理(アーキテクチャその3)

タスクの制御

Page 15: [JAWS-UG 三都物語 2014] 三都物語でAmazon SWFと握手!

例えば:動画の処理(アーキテクチャその4)

ユーザーが動画をアップロード

サムネイルの作成

エンコード処理(スマホ向け)

エンコード処理(PC向け)

不正動画検出

サイト公開

元動画の保存

動画インデックスの更新

メタデータ埋め込み

ユーザー情報の更新

出来る奴

次のタスクを決める

キュー

Page 16: [JAWS-UG 三都物語 2014] 三都物語でAmazon SWFと握手!

「タスクの制御」を分割する

• 「タスクの制御」のうちでめんどくさいものは「出来る奴」にやってもらう

• 状態管理、次タスクへのキューイング、タスク終了の補足、実行履歴の記録、エラーの補足、etc…

• やることを決める部分だけをステートレスに作る

動画の処理(アーキテクチャその4)

= Amazon SWF出来る奴

Amazon SWF = 出来る中間管理職

Page 17: [JAWS-UG 三都物語 2014] 三都物語でAmazon SWFと握手!

Amazon SWFの利点

データを3か所のアベイラビリティで保存

1つのタスクが1つのアプリケーションでしか処理されないことを保証

ワークフローは最大1年間継続、実行履歴は最大3か月間保持

ポーリングベース

Page 18: [JAWS-UG 三都物語 2014] 三都物語でAmazon SWFと握手!

次のタスクを決める

次のタスクを決める

ユーザーが動画をアップロード

次のタスクを決める

各種タスク

ワークフロースターター

デサイダー

アクティビティ

デシジョンタスクリスト

アクティビティタスクリスト

ポーリング

ポーリング

ドメイン

ワークフローエグゼキューション

ワークフローエグゼキューション

ワークフローエグゼキューション

Page 19: [JAWS-UG 三都物語 2014] 三都物語でAmazon SWFと握手!

SWF用語

ワークフロースターター• ワークフローをキックするプログラム

• キックするたびに「ワークフローエグゼキューション」が作成される

ワークフローエグゼキューション• ワークフローのインスタンス

• 各ワークフローエグゼキューションごとに以下のような情報を保持

• WorkflowID:ユーザー採番の任意ID

– 決済番号や請求書番号などを設定(重複時はエラー)

• RunID:自動生成IDされるユニークID

• ワークフローヒストリー:入出力情報含むタスクの実行履歴

• 開始時間

• タイムアウト設定

Page 20: [JAWS-UG 三都物語 2014] 三都物語でAmazon SWFと握手!

SWF用語

ドメイン• この区分ごとに、ワークフローエグゼキューションやタスクリストが管理される

• プログラム言語でいう「ネームスペース」のような概念

タスクリスト• デサイダー/アクティビティがポーリングをするためのキュー

• デサイダーとアクティビティごとにキューを設定

• タスクリストに入った1つのタスクは、1つのデサイダー/アクティビティしか取得しないことを保証

• タスクリストは、ドメイン内で共有

• 異なるワークフロースターターから始まる処理にも利用可能

Page 21: [JAWS-UG 三都物語 2014] 三都物語でAmazon SWFと握手!

エンコード処理

画像タスク

タスクリスト=処理キュー

ユーザーが動画をアップロード

動画タスク

ユーザー認証

ワークフローエグゼキューション

ワークフローエグゼキューション

ユーザーが画像をアップロード

理エンコード処理

課金ユーザー

無料ユーザー

共通処理

Page 22: [JAWS-UG 三都物語 2014] 三都物語でAmazon SWFと握手!

SWF用語

デサイダー

• 次のタスクを決めるタスク

• タスクリストをポーリングして、タスクがあった場合に、次に実行するアクティビティを指定

アクティビティ

• ワークフロー内の個別のタスクの処理

• デサイダーと同様、タスクリストをポーリングするため、オンプレミスや既存DCでの動作も可能

• 人手を介する処理でもOK

Page 23: [JAWS-UG 三都物語 2014] 三都物語でAmazon SWFと握手!

ここまでのまとめ

Amazon SWFは中間管理職

• デサイダーとアクティビティのコーディネート

• ステート管理

SWFのアーキテクチャでシステムを構築すると、以下の問題が解決できる

スケーラビリティ

アベイラビリティ

並列処理の制御

ネットワーク/FW越しの連携

Page 24: [JAWS-UG 三都物語 2014] 三都物語でAmazon SWFと握手!

NASA JPL

火星

AWS

Page 25: [JAWS-UG 三都物語 2014] 三都物語でAmazon SWFと握手!
Page 26: [JAWS-UG 三都物語 2014] 三都物語でAmazon SWFと握手!

AWS SDK

• Java, C#, Ruby, PHP, Python

Flow FrameworkJava, Ruby

Page 27: [JAWS-UG 三都物語 2014] 三都物語でAmazon SWFと握手!

• Amazon SWFのメカニズム

• デモ

• まとめ

Page 28: [JAWS-UG 三都物語 2014] 三都物語でAmazon SWFと握手!

本日のデモは音系です

ド レ ミ ファ

ソ ラ シアクティビティ(鳴る奴)

デサイダー(演奏する奴)

Page 29: [JAWS-UG 三都物語 2014] 三都物語でAmazon SWFと握手!

ド レ ミ ファ

ソ ラ シ

ド!ド!

はい

Page 30: [JAWS-UG 三都物語 2014] 三都物語でAmazon SWFと握手!

本日のデモは音系です

マイニングブラウニー 得上さん@tottokug

“まだ一度も成功したことは無いけれど、SWFでのオーケストラはもうやめて2014年はKinesisでオーケストラに方向転換することにしました。”-かれ4ブログより-

Page 31: [JAWS-UG 三都物語 2014] 三都物語でAmazon SWFと握手!

デモ1

ド レ ミ ファ

ソ ラ シ

Page 32: [JAWS-UG 三都物語 2014] 三都物語でAmazon SWFと握手!

デモ2

ド レ ミ ファ ソ ラ シ

Page 33: [JAWS-UG 三都物語 2014] 三都物語でAmazon SWFと握手!

デモ3ド

レファ

Page 34: [JAWS-UG 三都物語 2014] 三都物語でAmazon SWFと握手!

© 2013 Amazon.com, Inc. and its affiliates. All rights reserved. May not be copied, modified or distributed in whole or in part without the express consent of Amazon.com, Inc.

34

いざ本番

Page 35: [JAWS-UG 三都物語 2014] 三都物語でAmazon SWFと握手!

• Amazon SWFのメカニズム

• デモ

• まとめ

Page 36: [JAWS-UG 三都物語 2014] 三都物語でAmazon SWFと握手!
Page 37: [JAWS-UG 三都物語 2014] 三都物語でAmazon SWFと握手!

詳しくは・・・

• AWS クラウドサービス活用資料集

• Googleで検索!

• AWS Black Belt Tech Webinar– ほぼ毎週水曜18:00から

Page 38: [JAWS-UG 三都物語 2014] 三都物語でAmazon SWFと握手!

AWS Summit Tokyo 2014

• 2014年7月17日(木) 〜 18日(金)

• グランドプリンス新高輪 (国際館パミール)

• 来場無料 (要事前登録)

• http://www.awssummittokyo.com/

- 申し込み受付中!

• 登壇企業様多数

- すかいらーく様、HGST様、クオリカ様、 積水化学工業様、コーセー様、良品計画様、SAPジャパン様、NTTデータ様、日通情報システム様、NTTドコモ様、日立製作所様、丸紅様、ソニー銀行様、他多数

Page 39: [JAWS-UG 三都物語 2014] 三都物語でAmazon SWFと握手!

AWS認定資格の大阪受験会場が開設!

• 中之島に受験会場を設立

• 以下の試験の受講が可能– AWS 認定ソリューションアーキテクト – アソシエイト

– AWS 認定デベロッパー – アソシエイト

– AWS 認定システムオペレーション(SysOps)アドミニストレーター – アソシエイト

• http://aws.amazon.com/jp/certification/

Page 40: [JAWS-UG 三都物語 2014] 三都物語でAmazon SWFと握手!

関西のAWSソリューションアーキテクト募集中!

• 特にゲーム/ソーシャル/スタートアップに興味のある方!

• 詳しくはお近くのソリューションアーキテクトまで!

Page 41: [JAWS-UG 三都物語 2014] 三都物語でAmazon SWFと握手!

ありがとうございました