三都物語でAmazon SWFと握手!
夏のJAWS-UG
三都物語 2014
• 片山 暁雄
• アマゾンデータサービスジャパン
• 部長/ソリューションアーキテクト
• 大阪府池田市出身
• Twitter
• @c9katayama
• #ヤマン
• 好きなAWSサービス
• Amazon SWF
自己紹介
本日のテーマ
Amazon Simple Workflow Service
(Amazon SWF)
エスダブルエフ/スウィフ
• Amazon SWFのメカニズム
• デモ
• まとめ
• Amazon SWFのメカニズム
• デモ
• まとめ
Amazon SWFとは
Amazon SWFは
• 「処理のステート管理」
• 「タスク間のコーディネート」
を行うためのフルマネージドサービス
いわゆる「承認を行うアプリ」ではない
Amazon SWFとは
Amazon SWFはシステム構築における以下の問題を解消
スケーラビリティ
アベイラビリティ
並列処理の制御
ネットワーク/FW越しの連携
例えば:動画の処理
ユーザーが動画
をアップロード
サムネイルの
作成
エンコード処理
(スマホ向け)
エンコード処理
(PC向け)
不正動画検出
サイト公開
元動画の保存
動画インデッ
クスの更新
メタデータ
埋め込み
ユーザー情報
の更新
例えば:動画の処理(アーキテクチャその1)
ユーザーが動画
をアップロード
サムネイルの
作成
エンコード処理
(スマホ向け)
エンコード処理
(PC向け)
不正動画検出
サイト公開
元動画の保存
動画インデッ
クスの更新
メタデータ
埋め込み...
1つのアプリケーションで逐次処理を実装すれば、システ
ムとしての作りは簡単
ただし・・・
• 全体の処理が長くなる
• 性能向上はスケールアップしかない
• 途中でエラーになった場合にリカバリできない
動画の処理(アーキテクチャその1)
pub...
例えば:動画の処理(アーキテクチャその2)
ユーザーが動画
をアップロード
サムネイルの
作成
エンコード処理
(スマホ向け)
エンコード処理
(PC向け)
不正動画検出
サイト公開
元動画の
保存
動画インデック
スの更新
メタデータ
埋め込...
各タスクを分割して、キューでつなぐ
• 途中でプロセスエラーになっても落ちても、プロセス復
帰後は直前のキューまで戻れる
• 各タスクを別のサーバに乗せることが可能
• スケールアウトと冗長化を実現
ただし・・・
• 全体の処理は長いまま
• ...
例えば:動画の処理(アーキテクチャその3)
ユーザーが動画
をアップロード
サムネイルの
作成
エンコード処理
(スマホ向け)
エンコード処理
(PC向け)
不正動画検出
サイト公開
元動画の保存
動画インデック
スの更新
メタデータ
埋め込み...
「タスクの制御」処理を導入
• タスク実行の順序をこの処理に集めることで、タスク間を疎結合に
• この処理が状態管理をすることで、タスクの並列実行が可能に
• タスクの戻り値で次のタスクを変えたりできる
• 処理の履歴を記録できる
ただし・・・...
例えば:動画の処理(アーキテクチャその4)
ユーザーが動画
をアップロード
サムネイルの
作成
エンコード処理
(スマホ向け)
エンコード処理
(PC向け)
不正動画検出
サイト公開
元動画の保存
動画インデック
スの更新
メタデータ
埋め込み...
「タスクの制御」を分割する
• 「タスクの制御」のうちでめんどくさいものは「出来る奴」にやって
もらう
• 状態管理、次タスクへのキューイング、タスク終了の補足、実行履歴の
記録、エラーの補足、etc…
• やることを決める部分だけをステートレ...
Amazon SWFの利点
データを3か所のアベイラビリティで保存
1つのタスクが1つのアプリケーションでしか処理されない
ことを保証
ワークフローは最大1年間継続、実行履歴は最大3か月間保
持
ポーリングベース
次のタスクを
決める
次のタスクを
決める
ユーザーが動画
をアップロード
次のタスクを
決める
各種タスク
ワークフロー
スターター
デサイダー
アクティビティ
デシジョン
タスクリスト
アクティビティ
タスクリスト
ポーリング
ポーリング
...
SWF用語
ワークフロースターター
• ワークフローをキックするプログラム
• キックするたびに「ワークフローエグゼキューション」が作成される
ワークフローエグゼキューション
• ワークフローのインスタンス
• 各ワークフローエグゼキューション...
SWF用語
ドメイン
• この区分ごとに、ワークフローエグゼキューションやタスクリストが管理さ
れる
• プログラム言語でいう「ネームスペース」のような概念
タスクリスト
• デサイダー/アクティビティがポーリングをするためのキュー
• デサイ...
エンコード処理
画像タスク
タスクリスト=処理キュー
ユーザーが動画
をアップロード
動画タスク
ユーザー認証
ワークフロー
エグゼキューション
ワークフロー
エグゼキューション
ユーザーが画像
をアップロード
理
エンコード処理
課金ユーザー...
SWF用語
デサイダー
• 次のタスクを決めるタスク
• タスクリストをポーリングして、タスクがあった場合に、
次に実行するアクティビティを指定
アクティビティ
• ワークフロー内の個別のタスクの処理
• デサイダーと同様、タスクリストをポーリ...
ここまでのまとめ
Amazon SWFは中間管理職
• デサイダーとアクティビティのコーディネート
• ステート管理
SWFのアーキテクチャでシステムを構築すると、以下の問題
が解決できる
スケーラビリティ
アベイラビリティ
並列処理の制御
ネ...
NASA JPL
火星
AWS
AWS SDK
• Java, C#, Ruby, PHP, Python
Flow Framework
Java, Ruby
• Amazon SWFのメカニズム
• デモ
• まとめ
本日のデモは音系です
ド レ ミ ファ
ソ ラ シ
アクティビティ(鳴る奴)
デサイダー
(演奏する奴)
ド レ ミ ファ
ソ ラ シ
ド!ド!
はい
本日のデモは音系です
マイニングブラウニー 得上さん
@tottokug
“まだ一度も成功したことは無いけれど、
SWFでのオーケストラはもうやめて
2014年はKinesisでオーケストラに方向転換することに
しました。”
-かれ4ブログより-
デモ1
ド レ ミ ファ
ソ ラ シ
デモ2
ド レ ミ ファ ソ ラ シ
デモ3
ド
ミ
ソ
ラ
ド
ミ
ソ
シ
レ
ファ
ラ
シ
© 2013 Amazon.com, Inc. and its affiliates. All rights reserved. May not be copied, modified or distributed in whole or in...
• Amazon SWFのメカニズム
• デモ
• まとめ
詳しくは・・・
• AWS クラウドサービス活用資料集
• Googleで検索!
• AWS Black Belt Tech Webinar
– ほぼ毎週水曜18:00から
AWS Summit Tokyo 2014
• 2014年7月17日(木) 〜 18日(金)
• グランドプリンス新高輪 (国際館パミール)
• 来場無料 (要事前登録)
• http://www.awssummittokyo.com/
- 申...
AWS認定資格の大阪受験会場が開設!
• 中之島に受験会場を設立
• 以下の試験の受講が可能
– AWS 認定ソリューションアーキテクト – アソシエイト
– AWS 認定デベロッパー – アソシエイト
– AWS 認定システムオペレーション(...
関西のAWSソリューションアーキテクト募集中!
• 特にゲーム/ソーシャル/スタート
アップに興味のある方!
• 詳しくはお近くのソリューション
アーキテクトまで!
ありがとうございました
[JAWS-UG 三都物語 2014] 三都物語でAmazon SWFと握手!
[JAWS-UG 三都物語 2014] 三都物語でAmazon SWFと握手!
Upcoming SlideShare
Loading in …5
×

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

880 views

Published on

2014/7/5 JAWS-UG 三都物語2014のSWF紹介資料

Published in: Software
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
880
On SlideShare
0
From Embeds
0
Number of Embeds
62
Actions
Shares
0
Downloads
9
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

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

  1. 1. 三都物語でAmazon SWFと握手! 夏のJAWS-UG 三都物語 2014
  2. 2. • 片山 暁雄 • アマゾンデータサービスジャパン • 部長/ソリューションアーキテクト • 大阪府池田市出身 • Twitter • @c9katayama • #ヤマン • 好きなAWSサービス • Amazon SWF 自己紹介
  3. 3. 本日のテーマ Amazon Simple Workflow Service (Amazon SWF) エスダブルエフ/スウィフ
  4. 4. • Amazon SWFのメカニズム • デモ • まとめ
  5. 5. • Amazon SWFのメカニズム • デモ • まとめ
  6. 6. Amazon SWFとは Amazon SWFは • 「処理のステート管理」 • 「タスク間のコーディネート」 を行うためのフルマネージドサービス いわゆる「承認を行うアプリ」ではない
  7. 7. Amazon SWFとは Amazon SWFはシステム構築における以下の問題を解消 スケーラビリティ アベイラビリティ 並列処理の制御 ネットワーク/FW越しの連携
  8. 8. 例えば:動画の処理 ユーザーが動画 をアップロード サムネイルの 作成 エンコード処理 (スマホ向け) エンコード処理 (PC向け) 不正動画検出 サイト公開 元動画の保存 動画インデッ クスの更新 メタデータ 埋め込み ユーザー情報 の更新
  9. 9. 例えば:動画の処理(アーキテクチャその1) ユーザーが動画 をアップロード サムネイルの 作成 エンコード処理 (スマホ向け) エンコード処理 (PC向け) 不正動画検出 サイト公開 元動画の保存 動画インデッ クスの更新 メタデータ 埋め込み ユーザー情報 の更新
  10. 10. 1つのアプリケーションで逐次処理を実装すれば、システ ムとしての作りは簡単 ただし・・・ • 全体の処理が長くなる • 性能向上はスケールアップしかない • 途中でエラーになった場合にリカバリできない 動画の処理(アーキテクチャその1) public static void main(String[] args) throws Exception { AWSCredentials credentials = new PropertiesCredentials( RemoveNonUsedSecurityGroup.class.getResourceAsStream("/AwsCredentials.prope 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()
  11. 11. 例えば:動画の処理(アーキテクチャその2) ユーザーが動画 をアップロード サムネイルの 作成 エンコード処理 (スマホ向け) エンコード処理 (PC向け) 不正動画検出 サイト公開 元動画の 保存 動画インデック スの更新 メタデータ 埋め込み ユーザー情報 の更新 キュー
  12. 12. 各タスクを分割して、キューでつなぐ • 途中でプロセスエラーになっても落ちても、プロセス復 帰後は直前のキューまで戻れる • 各タスクを別のサーバに乗せることが可能 • スケールアウトと冗長化を実現 ただし・・・ • 全体の処理は長いまま • 各タスクが、次のタスクを意識しないといけない エンコード処理 (スマホ向け) エンコード処理 (スマホ向け) 動画の処理(アーキテクチャその2) EC2 EC2
  13. 13. 例えば:動画の処理(アーキテクチャその3) ユーザーが動画 をアップロード サムネイルの 作成 エンコード処理 (スマホ向け) エンコード処理 (PC向け) 不正動画検出 サイト公開 元動画の保存 動画インデック スの更新 メタデータ 埋め込み ユーザー情報の 更新 キュー タスクの制御
  14. 14. 「タスクの制御」処理を導入 • タスク実行の順序をこの処理に集めることで、タスク間を疎結合に • この処理が状態管理をすることで、タスクの並列実行が可能に • タスクの戻り値で次のタスクを変えたりできる • 処理の履歴を記録できる ただし・・・ • 状態管理や処理履歴記録など、複雑な実装が必要 • 「タスクの制御」処理自体がSPOFで、かつスケーラビリティに欠ける 動画の処理(アーキテクチャその3) タスクの制御
  15. 15. 例えば:動画の処理(アーキテクチャその4) ユーザーが動画 をアップロード サムネイルの 作成 エンコード処理 (スマホ向け) エンコード処理 (PC向け) 不正動画検出 サイト公開 元動画の保存 動画インデック スの更新 メタデータ 埋め込み ユーザー情報の 更新 出来る奴 次のタスクを 決める キュー
  16. 16. 「タスクの制御」を分割する • 「タスクの制御」のうちでめんどくさいものは「出来る奴」にやって もらう • 状態管理、次タスクへのキューイング、タスク終了の補足、実行履歴の 記録、エラーの補足、etc… • やることを決める部分だけをステートレスに作る 動画の処理(アーキテクチャその4) = Amazon SWF出来る奴 Amazon SWF = 出来る中間管理職
  17. 17. Amazon SWFの利点 データを3か所のアベイラビリティで保存 1つのタスクが1つのアプリケーションでしか処理されない ことを保証 ワークフローは最大1年間継続、実行履歴は最大3か月間保 持 ポーリングベース
  18. 18. 次のタスクを 決める 次のタスクを 決める ユーザーが動画 をアップロード 次のタスクを 決める 各種タスク ワークフロー スターター デサイダー アクティビティ デシジョン タスクリスト アクティビティ タスクリスト ポーリング ポーリング ドメイン ワークフロー エグゼキューション ワークフロー エグゼキューション ワークフロー エグゼキューション
  19. 19. SWF用語 ワークフロースターター • ワークフローをキックするプログラム • キックするたびに「ワークフローエグゼキューション」が作成される ワークフローエグゼキューション • ワークフローのインスタンス • 各ワークフローエグゼキューションごとに以下のような情報を保持 • WorkflowID:ユーザー採番の任意ID – 決済番号や請求書番号などを設定(重複時はエラー) • RunID:自動生成IDされるユニークID • ワークフローヒストリー:入出力情報含むタスクの実行履歴 • 開始時間 • タイムアウト設定
  20. 20. SWF用語 ドメイン • この区分ごとに、ワークフローエグゼキューションやタスクリストが管理さ れる • プログラム言語でいう「ネームスペース」のような概念 タスクリスト • デサイダー/アクティビティがポーリングをするためのキュー • デサイダーとアクティビティごとにキューを設定 • タスクリストに入った1つのタスクは、1つのデサイダー/アクティビティし か取得しないことを保証 • タスクリストは、ドメイン内で共有 • 異なるワークフロースターターから始まる処理にも利用可能
  21. 21. エンコード処理 画像タスク タスクリスト=処理キュー ユーザーが動画 をアップロード 動画タスク ユーザー認証 ワークフロー エグゼキューション ワークフロー エグゼキューション ユーザーが画像 をアップロード 理 エンコード処理 課金ユーザー 無料ユーザー 共通処理
  22. 22. SWF用語 デサイダー • 次のタスクを決めるタスク • タスクリストをポーリングして、タスクがあった場合に、 次に実行するアクティビティを指定 アクティビティ • ワークフロー内の個別のタスクの処理 • デサイダーと同様、タスクリストをポーリングするため、 オンプレミスや既存DCでの動作も可能 • 人手を介する処理でもOK
  23. 23. ここまでのまとめ Amazon SWFは中間管理職 • デサイダーとアクティビティのコーディネート • ステート管理 SWFのアーキテクチャでシステムを構築すると、以下の問題 が解決できる スケーラビリティ アベイラビリティ 並列処理の制御 ネットワーク/FW越しの連携
  24. 24. NASA JPL 火星 AWS
  25. 25. AWS SDK • Java, C#, Ruby, PHP, Python Flow Framework Java, Ruby
  26. 26. • Amazon SWFのメカニズム • デモ • まとめ
  27. 27. 本日のデモは音系です ド レ ミ ファ ソ ラ シ アクティビティ(鳴る奴) デサイダー (演奏する奴)
  28. 28. ド レ ミ ファ ソ ラ シ ド!ド! はい
  29. 29. 本日のデモは音系です マイニングブラウニー 得上さん @tottokug “まだ一度も成功したことは無いけれど、 SWFでのオーケストラはもうやめて 2014年はKinesisでオーケストラに方向転換することに しました。” -かれ4ブログより-
  30. 30. デモ1 ド レ ミ ファ ソ ラ シ
  31. 31. デモ2 ド レ ミ ファ ソ ラ シ
  32. 32. デモ3 ド ミ ソ ラ ド ミ ソ シ レ ファ ラ シ
  33. 33. © 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 いざ本番
  34. 34. • Amazon SWFのメカニズム • デモ • まとめ
  35. 35. 詳しくは・・・ • AWS クラウドサービス活用資料集 • Googleで検索! • AWS Black Belt Tech Webinar – ほぼ毎週水曜18:00から
  36. 36. AWS Summit Tokyo 2014 • 2014年7月17日(木) 〜 18日(金) • グランドプリンス新高輪 (国際館パミール) • 来場無料 (要事前登録) • http://www.awssummittokyo.com/ - 申し込み受付中! • 登壇企業様多数 - すかいらーく様、HGST様、クオリカ様、 積水化学工業様、コー セー様、良品計画様、SAPジャパン様、NTTデータ様、日通情報 システム様、NTTドコモ様、日立製作所様、丸紅様、ソニー銀行 様、他多数
  37. 37. AWS認定資格の大阪受験会場が開設! • 中之島に受験会場を設立 • 以下の試験の受講が可能 – AWS 認定ソリューションアーキテクト – アソシエイト – AWS 認定デベロッパー – アソシエイト – AWS 認定システムオペレーション(SysOps)アドミニスト レーター – アソシエイト • http://aws.amazon.com/jp/certification/
  38. 38. 関西のAWSソリューションアーキテクト募集中! • 特にゲーム/ソーシャル/スタート アップに興味のある方! • 詳しくはお近くのソリューション アーキテクトまで!
  39. 39. ありがとうございました

×