20120303 jaws summit-meister-06_sns-sqs
DESCRIPTION
2012.3.3 JAWS SUMMIT 2012 マイスターリターンズにて紹介された資料です。TRANSCRIPT
AWSマイスターシリーズ SQS, SNS, SWF (#jawsug #マイスター)
2012年03月03日
大谷 晋平 (@shot6 ) ソリューションアーキテクト
AWSマイスターシリーズ ~Simple Queue Service~
2012年03月03日
大谷 晋平 (@shot6 ) ソリューションアーキテクト
アジェンダ
SQSとは
SQSの機能
SQSの使いどころ
Q&A
SQS(Simple Queue Service)とは
AWSの隠し技
SQS(Simple Queue Service)とは
分散キューサービス AWSをスケールアウトして使うためのキーコ
ンポーネント
最低一度は届くことを保証
信頼性が高く、すぐに使えて、管理者不要、低コスト
2006年よりある最古参サービス
何故キューが必要か?
“分割できないものは、スケール出来ない” by Randy Shoup(eBay) スケールするには疎結合なアーキテクチャに
する必要がある
疎結合アーキテクチャに非同期通信が不可欠
非同期通信の典型例がキューシステム
SQSの機能
“分散”キューサービス
最低一度のメッセージ到達保障
シンプルなAPI
キューシステムのインストール不要、SDKから直接使える
分散キューサービス
メッセージは自動的に複数DC間でレプリケーションされる
メッセージロストを防ぐ
Persistent Message
自分で高い耐障害性を持つキューシステムを構築するのは困難
シンプルなAPIとSDK
CreateQueue
SendMessage
ReceiveMessage
ChangeMessageVisibility
DeleteMessage
バッチ処理
SDKはJava/.NET/PHP/Ruby
動作イメージ
1.キューの作成/4.キューの削除 (http://sqs.ap-northeast-1.amazonaws.com/123456789012/queue2)
管理者
メッセージ送信者 (Writer or Producer)
2.メッセージ送信
メッセージ受信者 (Reader or Consumer)
3.メッセージ受信
メッセージの到達保障
1.キューの作成/4.キューの削除 (http://sqs.ap-northeast-1.amazonaws.com/123456789012/queue2)
管理者
2.メッセージ送信 3.メッセージ受信
Visibility Timeout
Visibility Timeoutとは
Readerがメッセージを受信した場合に、ある一定期間その他のReaderがメッセージは見えなくなる
メッセージ自体はユーザが明示的に消さない限り残存する(最大2週間)
Visibility Timeoutとは(2) あるReader-Aが メッセージ1を依頼
あるReader-Dが メッセージ1を依頼
あるReader-Bが 依頼
あるReader-Cが 依頼
メッセージは 返却されない
メッセージは 返却されない
メッセージの返却 削除されていない場合 (メッセージの 返却)
この間にReader-Aは、 ・受信したメッセージを処理する ・処理出来たらメッセージを削除する
最低一度のメッセージ到達保障
At-Least-Once delivery
メッセージは複数DCにコピー
堅牢性・耐障害性にフォーカス
デメリット:稀に複数回メッセージが届くこともある
メッセージの状態管理
複数回届く前提
メッセージサンプリング
メッセージは送信後すぐに取れるとは限らない
受信リクエストを送り続ければ取れる
イベンチュアルコンシステンシ前提
サンプリングしたサーバからメッセージを順次返却 (メッセージEが含まれていない)
メッセージの受信者
SQSキューの分散されたサーバ群
サンプリング対象サーバ (グレー)
開発者に優しい無料枠と価格
月間100,000 requestまで無料
価格
10,000リクエストあたり$0.01
データトランスファーはAWSから外部に送出する場合に限り、$0.201/GBから課金
SQSのキューのセキュリティ
IAMまたはポリシーベースでユーザとアクションを制限する事が可能
{ "Statement":[{ "Effect":"Allow", "Action":"sqs:SendMessage", "Resource":"arn:aws:sqs:*:123456789012:SampleQueue" } , { "Effect":"Deny", "NotAction":"sqs:SendMessage", "NotResource":"arn:aws:sqs:*:123456789012:SampleQueue" } ] }
SQSの制約
メッセージの順序性は保証しない
メッセージの保存は最大2週間まで
メッセージのサイズは64KBまで
キュー内に入るメッセージ数には制限なし
キュー名は80文字まで
最近のSQS機能追加
CloudWatchによるメトリクス監視
AutoScalingと組み合わせやすく
マネージメントコンソールから利用可能に
ディレイキュー
メッセージタイマー
バッチAPI
SQSをいつ使うか?
AWSクラウド内での疎結合アーキテクチャを採用したい場合
コンポーネント間の依存関係を減らしたい
AWSクラウドとオンプレミスの間でのやり取りのインタフェース
受諾と処理→結果の送信の分離
顧客はいつSQSを使っているか?
Webアプリケーション/SaaS
ビッグデータや バッチ処理
ハイブリッド クラウド連携
オンプレミスとAWSクラウド連携
EMRやAWSクラウドの その他サービスとの連携に利用
イメージ処理、インデクシング等のシステム間の疎結合なやり取りに利用
SQSまとめ
AWSが提供するキューサービス
最低一度は届くことを保証
分散キューのためスケールする
高い耐障害性
シンプルにすぐに使える
セキュア
低コスト
AWSマイスターシリーズ ~Simple Notification Service~
2012年03月03日
大谷 晋平 (@shot6 ) ソリューションアーキテクト
アジェンダ
SNSとは
SNSの機能
SNSの使いどころ
Q&A
SNS(Simple Notification Service)とは
AWSの小道具
SNSとは
クラウド上の通知サービス
簡単に使えて、マルチプロトコル
従量課金制で非常に安い
インストール・管理不要ですぐに使える
SNSの機能
様々なプロトコルに対応した通知プラットフォーム
メール、SQSキュー、HTTP/HTTPSコールバック、SMS
シンプルなAPI/SDK
プッシュベースアーキテクチャ
非常に低価格
動作イメージ
1.トピックの作成/5.トピックの削除 管理者
メッセージ配信者 (Publisher)
3.メッセージ配信
メッセージ購読者 (Subscriber)
2.トピック購読
4.メッセージ受信
利用用途
様々なプロトコルを通じたアプリケーション間のフックに使う
AWSクラウド上のアプリケーション S3
ファイル
SNS
完了通知依頼
ジョブ 完了通知&ジョブ実行
利用用途
S3上からファイルが削除されたときをフック
AWSクラウド上のアプリケーション S3
SNS
削除通知依頼
削除されたことを通知
ユーザが削除
SQSとSNSの違い
SQSはポーリングモデル
1:1コミュニケーション
Producer-Consumer
SNSはプッシュモデル
1:Nコミュニケーション
Publisher-Subscriber
開発者に優しい無料枠と価格
月間100,000 requestまで無料
価格
100,000リクエストあたり$0.06
HTTPは100,000あたり$0.06
メールは100,000通あたり$2.0
100SMSあたり、$0.75
SQSにはチャージなし
SNSの制約
最大1アカウント100トピックまで
メッセージは最大8KBまで
SNSまとめ
クラウド上の通知サービス
簡単に使えて、マルチプロトコル
従量課金制で非常に安い
インストール・管理不要ですぐに使える
AWSマイスターシリーズ ~Simple Workflow Service~
2012年03月03日
大谷 晋平 (@shot6 ) ソリューションアーキテクト
アジェンダ
SWFとは
SWFの機能
SWFとは
SWFとは
AWSマエストロ
http://ja.wikipedia.org/wiki/%E6%8C%87%E6%8F%AE%E8%80%85
SWFとは
AWS/オンプレミスを使った連携を自動化
ワークフローの階層構造も可能
Flow Framework
Javaで出来たSWFを使うためのワークフローフレームワーク
DSLを実装していて、APTでコードを自動生成→コンパイル
サンプルも豊富
SWFまとめ
AWS上のコンポーネント、オンプレミス問わずオーケストレーションするサービス
分散処理をもっと手軽に、もっとやりやすく
Flow Framework
SQS、SNS、SWFを通じて
AWS SシリーズはAWSクラウドをよりよく使うためのコンポーネント
SQS=疎結合を提供する
SNS=プロトコル非依存な通知
SWF=分散処理オーケストレーション
ありがとう ございました
Copyright © 2011 Amazon Web Services