SlideShare a Scribd company logo
Amazon  Simple  Queue  Service(SQS)
Amazon  Simple  Notification  Service(SNS)
AWS  Black  Belt  Tech  Webinar  2015
アマゾンデータサービスジャパン株式会社
ソリューションアーキテクト  篠原  英治
2015年年3⽉月4⽇日
!   Name:
  ・Eiji  Shinohara  (篠原  英治)
!   Role:
・Solutions  Architect  for  Startups
・Amazon  CloudSearch  Subject  Matter  Expert
Who  am  I?
アジェンダ
•  Amazon  Simple  Queue  Service  (SQS)
•  Amazon  Simple  Notification  Service  (SNS)
•  SQSとSNSを組み合わせた構成
•  まとめ
アジェンダ
•  Amazon  Simple  Queue  Service  (SQS)
•  Amazon  Simple  Notification  Service  (SNS)
•  SQSとSNSを組み合わせた構成
•  まとめ
Amazon  Simple  Queue  Service  (SQS)
•  ⻑⾧長い歴史を持つ『メッセージキュー』サービス
https://aws.amazon.com/blogs/aws/amazon_̲simple_̲q/
2006年年7⽉月13⽇日
メッセージキューサービスとは?
•  Message  Queue
–  ソフトウェアの世界では古くからある概念念。MQと略略されることも
–  http://ja.wikipedia.org/wiki/メッセージキュー
–  Amazon  SQSはPull型のMQサービス
•  受信側はSQSに問い合わせてメッセージ取得
送信 受信
polling
Amazon  SQSはAWSフルマネージドな分散キュー
•  ⾼高い信頼性:  複数のサーバー/データセンターにメッセージを保持
•  スケーラブル:  多数の送信者/受信者に対応
•  ⾼高スループット:  メッセージが増加しても⾼高スループットを出し続ける
•  低コスト:  毎⽉月の無料料枠  +  使った分だけの従量量課⾦金金
Massive  Message  Processing  with  Amazon  SQS  and  Amazon  DynamoDB  (ARC301)  |  AWS  re:Invent  2013
SQSを使う利利点:  疎結合  –  Loosely  Coupled
•  例例えば、以下のようなケース
–  ユウタさん:  今、⼤大量量のデータ登録をしたい。夜は⼤大事な予定がある
–  ヒロシさん:  今は負荷が⾼高いので困る。⼀一定間隔で少しずつなら…
ユウタさん
今から先⽉月のログデータ150万件
投⼊入しますね
ヒロシさん
今はデータベースの負荷が⾼高いので
夜にやっていただけないですか??
Amazon SQS
SQSを使う利利点:  疎結合  –  Loosely  Coupled
•  Amazon  SQSを⽤用いることでユウタさんもヒロシさんもHappyに!
–  仮に、ヒロシさんが管理理するデータベースがメンテナンス中でも、
ユウタさんは気にせず作業してOK
ユウタさん
得意のJavaでマルチスレッドでSQS
にデータを⾼高速に投⼊入!
AWS  SDKを使えば実装は簡単☺
ヒロシさん
メッセージ内容の精査や画像チェックなどの
処理理が重いので、2つのインスタンスで!
データベースの負荷を⾒見見ながらループの間隔
を調整出来るようにしておく
マルチスレッドで投⼊入
メッセージ取得
データベースの負荷に
合わせた間隔で登録
Java
PHP
PHP
Amazon  SQSをはじめるのは簡単です
•  Management  Console編
Amazon  SQSをはじめるのは簡単です
•  Management  Console編  –  キューの作成
Amazon  SQSをはじめるのは簡単です
•  Management  Console編  –  キューの作成:  キューの名前を⼊入⼒力力
Amazon  SQSをはじめるのは簡単です
•  Management  Console編  –  メッセージの送信
Amazon  SQSをはじめるのは簡単です
•  Management  Console編  –  メッセージの送信
Amazon  SQSをはじめるのは簡単です
•  Management  Console編  –  メッセージの受信:  ブラウザ上でポーリング
Amazon  SQSをはじめるのは簡単です
•  Management  Console編  -‐‑‒  メッセージの受信:  Message  Bodyの表⽰示
Amazon  SQSをはじめるのは簡単です
•  Management  Console編  -‐‑‒  メッセージの削除
Amazon  SQSをはじめるのは簡単です
•  Management  Console編  -‐‑‒  キューの削除
Amazon  SQSを使う上で覚えておきたい識識別⼦子
•  Queue  URL
–  キューを作成する際に払い出されるURL
–  https://リージョン.queue.amazonaws.com/アカウントID/キュー名
•  Message  ID
–  システムで割り当てられたID
•  Receipt  Handle
–  メッセージの削除やVisibilityの変更更に使⽤用
–  メッセージを受信する際に取得
•  受信されたメッセージのみ削除やVisibilityの変更更が可能
–  同じメッセージを受信する度度に異異なる→最新のものをつかうこと
Amazon  SQSをはじめるのは簡単です
•  AWS  CLI編
–  キューの作成
$  aws  sqs  create-‐‑‒queue  -‐‑‒-‐‑‒queue-‐‑‒name  blackbelt2015
{
        “QueueUrl”:  “https://リージョン.queue.amazonaws.com/アカウントID/blackbelt2015"
}
Amazon  SQSをはじめるのは簡単です
•  AWS  CLI編
–  キューの作成:  作成されたことを確認
$  aws  sqs  list-‐‑‒queues
{
        "QueueUrls":  [
                “https://リージョン.queue.amazonaws.com/アカウントID/blackbelt2015"
        ]
}
Amazon  SQSをはじめるのは簡単です
•  AWS  CLI編
–  メッセージの送信
$  aws  sqs  send-‐‑‒message  
-‐‑‒-‐‑‒queue-‐‑‒url  https://リージョン.queue.amazonaws.com/アカウントID/blackbelt2015  
-‐‑‒-‐‑‒message-‐‑‒body  'Hello  World!'
{
        "MD5OfMessageBody":  "ed076287532e86365e841e92bfc50d8c",
        "MessageId":  "2db5a1de-‐‑‒8bc5-‐‑‒4976-‐‑‒9b0c-‐‑‒68749bffee1a"
}
Amazon  SQSをはじめるのは簡単です
•  AWS  CLI編
–  メッセージの受信
$  aws  sqs  receive-‐‑‒message  
-‐‑‒-‐‑‒queue-‐‑‒url  https://リージョン.queue.amazonaws.com/アカウントID/blackbelt2015
{
        "Messages":  [
                {
                        "Body":  "Hello  World!",
                        “ReceiptHandle”:  “AQEBv3p27X8o44Nt4J0  〜~略略〜~  +8lujWoy6Ks=",
                        "MD5OfBody":  "ed076287532e86365e841e92bfc50d8c",
                        "MessageId":  "2db5a1de-‐‑‒8bc5-‐‑‒4976-‐‑‒9b0c-‐‑‒68749bffee1a"
                }
        ]
}
Amazon  SQSをはじめるのは簡単です
•  AWS  CLI編
–  メッセージの削除
aws  sqs  delete-‐‑‒message  
-‐‑‒-‐‑‒queue-‐‑‒url  https://リージョン.queue.amazonaws.com/アカウントID/blackbelt2015  
-‐‑‒-‐‑‒receipt-‐‑‒handle  "AQEBv3p27X8o44Nt4J0  〜~略略〜~  +8lujWoy6Ks="
Amazon  SQSをはじめるのは簡単です
•  AWS  SDK編  
–  キューの作成
–  メッセージの送信
AmazonSQS  sqs  =  new  AmazonSQSClient();
CreateQueueRequest  createQueueRequest  =  new  CreateQueueRequest("MyQueue");
String  myQueueUrl  =  sqs.createQueue(createQueueRequest).getQueueUrl();
sqs.sendMessage(new  SendMessageRequest(myQueueUrl,  ”Hello  World!  "));
Amazon  SQSをはじめるのは簡単です
•  AWS  SDK編
–  メッセージの受信
–  メッセージの削除
ReceiveMessageRequest  receiveMessageRequest  =  new  ReceiveMessageRequest(myQueueUrl);
List<Message>  messages  =  sqs.receiveMessage(receiveMessageRequest).getMessages();
for  (Message  message  :  messages)  {
//  取得したメッセージを元に処理理
}
String  messageRecieptHandle  =  messages.get(0).getReceiptHandle();
sqs.deleteMessage(new  DeleteMessageRequest(myQueueUrl,  messageRecieptHandle));
Amazon  SQSをはじめるのは簡単です
•  AWS  SDK編
–  キューの削除
–  AWS  SDKは2015年年3⽉月現在下記の⾔言語をサポート
•  Java  http://aws.amazon.com/jp/sdk-‐‑‒for-‐‑‒java/
•  Ruby  http://aws.amazon.com/jp/sdk-‐‑‒for-‐‑‒ruby/
•  Python  http://aws.amazon.com/jp/sdk-‐‑‒for-‐‑‒python/
•  .NET  http://aws.amazon.com/jp/sdk-‐‑‒for-‐‑‒net/
•  PHP  http://aws.amazon.com/jp/sdk-‐‑‒for-‐‑‒php/
•  JavaScript  http://aws.amazon.com/jp/sdk-‐‑‒for-‐‑‒browser/
•  Node.js    http://aws.amazon.com/jp/sdk-‐‑‒for-‐‑‒node-‐‑‒js/
•  Go(Coming  Soon!)  https://github.com/awslabs/aws-‐‑‒sdk-‐‑‒go
sqs.deleteQueue(new  DeleteQueueRequest(myQueueUrl));
Amazon  SQSのコスト
•  無料料利利⽤用枠
–  (SQSご利利⽤用全ユーザー)  毎⽉月100万キューイングリクエストまで無料料
•  SQSリクエスト100万件につき0.476  USD
–  複数メッセージを1つのリクエストとしてバッチ送信することも可能
•  データ転送
–  送信(アウト)
•  最初の1GB/⽉月:0  USD
〜~略略〜~
•  次の350TBまで  /⽉月:0.120  USD  GBあたり
•  350TBを越える場合の価格はお問い合わせください
•  同⼀一リージョン内のSQSとEC2インスタンスのデータ転送は無料料
効率率率良良くAmazon  SQSを使う
•  Visibility  Timeout  +  EC2  Spot  Instance
•  ⼀一度度のAPIコールで10件のメッセージを送信/受信
•  Long  PollでReceive  Messageコールの頻度度を抑える
http://www.slideshare.net/AmazonWebServices/advanced-‐‑‒topics-‐‑‒session-‐‑‒4-‐‑‒architecting-‐‑‒forhighavailability
Amazon SQS
効率率率良良くAmazon  SQSを使う
•  Visibility  Timeoutとは
–  メッセージ受信者が複数の場合
送信
受信1
受信2
受信3
Amazon SQS
効率率率良良くAmazon  SQSを使う
•  Visibility  Timeoutとは
–  受信1がメッセージを取得
送信
受信1
受信2
受信3
Amazon SQS
効率率率良良くAmazon  SQSを使う
•  Visibility  Timeoutとは
–  30秒間(デフォルト設定。変更更可能。最⼤大12時間)、受信2と受信
3にはメッセージを⾒見見せない(in  Flight)
送信
受信1
受信2
受信3
X
X
Amazon SQS
効率率率良良くAmazon  SQSを使う
•  Visibility  Timeoutとは
–  受信1がキューからメッセージを削除せず、タイムアウトした場
合はどの受信サーバーからもメッセージが受信可能に
送信
受信1
受信2
受信3
効率率率良良くAmazon  SQSを使う
•  Amazon  EC2  –  Spot  Instances
–  Amazon  EC2  の価格をお客様が指定できるシステム
–  ⼊入札価格がその時点のスポット価格を上回っていれば、インスタンス
を実⾏行行できる
•  スポット価格は、需要と供給の関係に基づいてリアルタイムで変動
•  スポット価格は⼀一般的に、オンデマンド価格を⼤大幅に下回る
(2015年年3⽉月時点で、平均で約8割下回っている)
–  「⼊入札額  >=  スポット価格」なら指定したインスタンスが起動
–  「⼊入札額  <  スポット価格」となるとインスタンスがターミネート
–  1時間未満の使⽤用料料は課⾦金金されない
効率率率良良くAmazon  SQSを使う
•  Visibility  Timeout  +  EC2  Spot  Instances
–  Spot  Instanceを使っていて、受信1がターミネートされても、
Visibility  Timeout後に他のインスタンスが処理理すれば良良い
–  コスト削減効果:  ⼤大
Amazon SQS
送信
受信1
受信2
受信3
効率率率良良くAmazon  SQSを使う
•  メッセージ送信/受信は1度度にMAX10件
–  SQSへのリクエストが少なければ少ないほどコスト効率率率が良良い
Amazon SQS
受信1
受信2
受信3
送信1
送信2
送信3
x  10
x  10
x  10
x  10
x  10
x  10
効率率率良良くAmazon  SQSを使う
•  メッセージ送信/受信は1度度にMAX10件
–  送信例例:  AWS  CLI  で  send-‐‑‒message-‐‑‒batch  を利利⽤用
$  aws  sqs  send-‐‑‒message-‐‑‒batch
-‐‑‒-‐‑‒queue-‐‑‒url  https://リージョン.queue.amazonaws.com/アカウントID/blackbelt2015  
-‐‑‒-‐‑‒entries  '[{  "Id":  "01",  "MessageBody":  "test  message  01"  },{  "Id":  "02",  
"MessageBody":  "test  message  02"  },…]ʼ’
{
        "Successful":  [
                {
                        "MD5OfMessageBody":  "fa27aa462b939f0c8cf67189198f1b2d",
                        "Id":  "01",
                        "MessageId":  "041d1604-‐‑‒1c80-‐‑‒4440-‐‑‒90bf-‐‑‒598db00cf752"
                },  ...
                〜~略略〜~
効率率率良良くAmazon  SQSを使う
•  メッセージ送信/受信は1度度にMAX10件
–  受信例例:  AWS  CLI  で  receive-‐‑‒message  の-‐‑‒-‐‑‒max-‐‑‒number-‐‑‒of-‐‑‒
messagesオプションを利利⽤用(デフォルト1。最⼤大10)
$  aws  sqs  receive-‐‑‒message
-‐‑‒-‐‑‒queue-‐‑‒url  https://リージョン.queue.amazonaws.com/アカウントID/blackbelt2015  
-‐‑‒-‐‑‒max-‐‑‒number-‐‑‒of-‐‑‒messages  10
{
        "Messages":  [
                {
                        "Body":  "test  message  01",
                        "ReceiptHandle":  "AQEB  〜~略略〜~  7g/jA=",
                        "MD5OfBody":  "fa27aa462b939f0c8cf67189198f1b2d",
                        "MessageId":  "041d1604-‐‑‒1c80-‐‑‒4440-‐‑‒90bf-‐‑‒598db00cf752"
                },…
効率率率良良くAmazon  SQSを使う
•  クライアントサイドでのバッファリング
–  AWS  SDK  for  Java  の  AmazonSQSAsyncClient  を利利⽤用
–  最⼤大10リクエストのバッファリング処理理を簡単に実現可能
–  下記のパラメータを設定し微調整することが可能
•  maxBatchOpenMs:  最⼤大待ち時間をミリ秒単位で指定
•  maxBatchSize:  1回のリクエストのメッセージの最⼤大数を指定
効率率率良良くAmazon  SQSを使う
•  Long  Polling
–  受信者が頻繁にSQSに対してReceive  Messageコールをするとリク
エスト回数がかさみ、コスト効率率率がよくない
–  “メッセージが取得出来るまで”待つ時間を設定できる(0秒から20秒)
効率率率良良くAmazon  SQSを使う
•  Long  Polling  と  Short  Polling  の使い分け
–  基本的に  Long  Polling  推奨(呼び出し元のCPU負荷,  リクエスト課⾦金金等)
•  複数のキューを使う場合は、マルチスレッドでPolling
–  Receive  Message呼び出し後、直ちに応答が必要な場合はShort  Polling
•  例例えば複数のキューを単⼀一スレッドでポーリングする場合、Long  
Pollingするとその間、他のキューにアクセスできない
Polling処理理
Polling処理
スレッド1
スレッド2
Polling処理理 Polling処理 スレッド1
前回のWebinar以降降にローンチされた機能の紹介
•  SQS  Message  Attributes
•  AWS  CloudTrail対応
•  Delete  All  Messages  in  SQS  Queue
•  SQS  Client  Library  for  Java  Messaging  Service  (JMS)
前回のWebinar以降降にローンチされた機能の紹介
•  Message  Attributes  –  2014年年5⽉月6⽇日
–  メッセージBodyとは別に属性を10個まで定義可能に
–  属性はName、Type(String/Number/Binary)、Valueで定義
•  Typeはカスタム可能(例例:  float,  int)
前回のWebinar以降降にローンチされた機能の紹介
•  AWS  CloudTrail対応  –  2014年年7⽉月16⽇日
–  キューの設定変更更等に関するAPIコールのログをS3に保存
–  CloudTrailは2014年年7⽉月から東京リージョンで利利⽤用可能
前回のWebinar以降降にローンチされた機能の紹介
•  Delete  All  Messages  in  SQS  Queue  –  2014年年12⽉月8⽇日
–  PurgeQueue  アクションでキュー内のメッセージの⼀一括削除が可能に
前回のWebinar以降降にローンチされた機能の紹介
•  SQS  Client  Library  for  Java  Messaging  Service  (JMS)  –  2014
年年12⽉月29⽇日
–  JMS:  Javaでメッセージングサービスを利利⽤用するための標準API
–  SQSをJMSプロバイダーとして利利⽤用可能に
•  ご⾃自⾝身でJMSクラスタサーバーの保守運⽤用が不不要に!
Amazon  SQSを使う上での注意点
•  Amazon  SQSは⾼高い可⽤用性と信頼性を実現した分散システム
•  順序はベストエフォート
•  出来る限り順序を維持しようとするが保証しない
•  タイムスタンプやシーケンス番号をメッセージに
•  同じメッセージを複数回受信する可能性がある(少なくとも1回の配信)
•  SQSはメッセージを複数のサーバ/データセンタに保持
•  メッセージ削除時にサーバが⼀一時故障中の場合、復復旧後に受信され
る可能性がある
•  同じメッセージを複数回処理理した場合に悪影響を出さないように、
冪等性を意識識したアプリケーションの設計を⾏行行う
Amazon  SQSの上限
•  メッセージ保持期限
•  削除されないメッセージはデフォルトで4⽇日間保持。保持期間は60秒
から14⽇日の間で変更更可能
•  In  Flight(受信されたメッセージ&Visibility  Timeout内)メッセージ
•  1つのキューごとに最⼤大120,000In  Flightメッセージ
•  超えるとOverLimitエラー
•  メッセージの最⼤大サイズは256KB
•  2013年年6⽉月に64KB→256KBに
•  画像やムービー等の⼤大容量量データには適していない
–  S3に配置しメッセージ内にそのパスを記述
現場で使える実践的な機能
•  時間をおいてからメッセージを⾒見見せたい
•  Delay  Queue  と  Message  Timers
•  何度度受信されてもキューに残り続けるメッセージをなんとかしたい
•  Dead  Letter  Queue
•  SQS  を使って簡単にスケーラブルなバッチ処理理基盤を構築したい
•  Elastic  Beanstalk:  Worker  Tier
•  セキュリティ
•  AWS  Identity  and  Access  Management  (IAM)連携
•  モニタリング
•  CloudWatchでの監視
時間をおいてからメッセージを⾒見見せたい
•  Delay  Queue
–  キューに送られた新しいメッセージをある⼀一定秒の間⾒見見えなくする
–  0〜~900秒で設定
–  設定すると、そのキューに送信されるメッセージ全てに適⽤用
時間をおいてからメッセージを⾒見見せたい
•  Message  Timers
–  個々のメッセージに対して、送信されてから⾒見見えるようになるまで
の時間を設定
–  0〜~900秒で設定
–  Message  TimersはDelay  Queueの遅延時間の設定を上書き
Send  Message  
Request
Delay  Queue  30秒
Message  Timers  60秒
メッセージが⾒見見え
るようになる時間
キューに残り続けるメッセージをなんとかしたい
•  Dead  Letter  Queue
–  メッセージを、指定回数(1〜~1000で指定)受信後に、⾃自動で別の
キュー(Dead  Letter  Queue)に移動する機能
–  デフォルトは無効0〜~900秒で設定
①メッセージ受信
②タスク失敗
③メッセージが削除されず
キューに残り続ける
④指定回数受信
後に移動
キュー
Dead  Letter  Queue
スケーラブルなバッチ処理理基盤
•  AWS  Elastic  Beanstalk:  Worker  Tier
–  SQS  +  Auto  Scalingでスケーラブルなバッチ処理理基盤
Sqsd
(deamon)
Elastic Beanstalk
Application
http://localhost:80/xxx
EC2 Instance
Auto Scaling group
CloudWatch
Auto Scaling
スケーラブルなバッチ処理理基盤
•  Job  Observerパターン
–  http://aws.clouddesignpattern.org/index.php/CDP:Job_̲Observerパターン
–  AWSブログ  
http://aws.typepad.com/aws_̲japan/2015/01/auto-‐‑‒scaling-‐‑‒with-‐‑‒sqs.html
セキュリティ
•  AWS  Identity  and  Access  Management  (IAM)連携
–  設定例例
»  特定のリソースやアクセス元のみアクセス許可/拒否
»  特定の時間帯のみアクセス許可
{      
      "Version":"2012-‐‑‒11-‐‑‒05",
      "Id":"cd3ad3d9-‐‑‒2776-‐‑‒4ef1-‐‑‒a904-‐‑‒4c229d1642ee",
      "Statement"  :  [
            {
                  "Sid":"1",  
                  "Effect":"Allow",                      
                  "Principal"  :  {
                        "aws":  "111122223333"
                  },
                  "Action":["sqs:SendMessage","sqs:ReceiveMessage"],  
                  "Resource":  "arn:aws:sqs:us-‐‑‒east-‐‑‒1:444455556666:queue2",
                  "Condition"  :  {
                        "IpAddress"  :  {
                              "aws:SourceIp":"10.52.176.0/24"
                        },
                          "DateLessThan"  :  {
                              "aws:CurrentTime":"2009-‐‑‒06-‐‑‒30T12:00Z”
モニタリング
•  CloudWatchでの監視
•  利利⽤用可能メトリクス
NumberOfMessageSent キューに追加されたメッセージ数
SentMessageSize キューに追加されたメッセージの合計サイズ
NumberOfMessageReceived ReceiveMessageコールによって返されたメッセージ数
NumberOfEmptyReceives ReceiveMessageによって返さなかったメッセージ数
NumberOfMessagesDeleted キューから削除されたメッセージ数
ApproximateNumberOfMessageDelayed Delayされすぐに読み込みができなかったメッセージ数。Delay  Queueまたは
メッセージ送信時のDelay設定によるもの
ApproximateNumberOfMessageVisible キューから利利⽤用可能になったメッセージ数
ApproximateNumberOfMessageNotVisible クライアントから送信されたが削除されていないか、visibility  winodowのendま
で到達していないメッセージ数
アジェンダ
•  Amazon  Simple  Queue  Service  (SQS)
•  Amazon  Simple  Notification  Service  (SNS)
•  SQSとSNSを組み合わせた構成
•  まとめ
Amazon  Simple  Notification  Service  (SNS)
•  Amazon  SNSはマルチプロトコルに対応したフルマネージド通知サービス
Publish
1.Topicに
メッセージを送信
2.  マルチプロトコルで通知
Amazon  SNS
Publisher Topic
HTTP(S)
EMAIL
SQS
Mobile Push
Subscriber
Amazon  Simple  Notification  Service  (SNS)
•  Mobile  Pushに関しては次週(2015年年3⽉月11⽇日)のAWS  Black  Belt  
Tech  Webinarで詳細にご案内します!
Amazon SNS
Mobile Push
Apple Devices
Google Devices
Amazon Kindle Fire
Devices
Amazon  SNSのコスト
•  Amazon  SNSを使えば安価で簡単に通知が送れます
•  無料料枠:  
–  モバイルプッシュ通知:  100万件
–  Email/Email-‐‑‒JSON:  1,000件
–  HTTP/HTTPS:  100,000件
–  Simple  Queue  Service(SQS):  無料料
•  リクエスト単価(64  KB  のチャンク毎に  1リクエストとして課⾦金金)
–  モバイルプッシュ通知:  100万件あたり0.5  USD
–  Email/Email-‐‑‒JSON:  100,000件あたり2  USD
–  HTTP/HTTPS:  100万件あたり0.6  USD
–  Simple  Queue  Service(SQS):  無料料
•  ※  SMSは東京リージョンではサービスを提供しておりません
Amazon  SNSをはじめるのは簡単です
•  Management  Consoleでは  Mobile  Services  の中に
Amazon  SNSをはじめるのは簡単です
1.  Topicの作成
2.  TopicをSubscribe
3.  Topicへ向けてメッセージをPublish
Amazon  SNSをはじめるのは簡単です
1.  Topicの作成
–  TopicのARN(Amazon  Resource  Name)が⽣生成される。リトライポリシー等も設定可能
Amazon  SNSをはじめるのは簡単です
2.  TopicのSubscribe
–  プロトコルを選択
–  Endpoint側でConfirmすることでメッセージ送信可能に
Amazon  SNSをはじめるのは簡単です
3.  Topicへ向けてメッセージをPublish
–  ブラウザからPublish
–  メッセージの受信(プロトコルでEmailを選択した場合)
Amazon  Simple  Notification  Service  (SNS)
•  AWSの様々なサービスと連携して通知可能
–  利利⽤用例例
•  Amazon  CloudWatch
–  Billing  Alertの通知
•  Amazon  SES
–  Bounce/Complaintのフィードバック通知
•  Amazon  S3
–  ファイルがアップロードされた時の通知
•  Amazon  Elastic  Transcoder
–  動画変換処理理完了了/失敗時の通知
Amazon  SNSと他サービスの連携
•  Amazon  CloudWatchのBilling  Alertの通知
Amazon  SNSと他サービスの連携
•  Amazon  SESのBounce/Complaintのフィードバック通知
Amazon  SNSと他サービスの連携
•  Amazon  S3にファイルがアップロードされた時の通知
Amazon  SNSと他サービスの連携
•  Amazon  Elastic  Transcoderでの動画変換処理理完了了/失敗時の通知
•  HTTPS  enhancements
–  Server  Name  Indication  (SNI)  サポート
–  Basic認証  および  Digest認証のサポート
•  Message  Attributes
•  Time  To  Live  (TTL)  サポート
前回のWebinar以降降にローンチされた機能の紹介
•  HTTPS  enhancements  –  2014年年4⽉月28⽇日
–  Server  Name  Indication  (SNI)サポート
•  SNIはSSL/TLSの拡張仕様。SSLハンドシェイク時にクライアン
トがアクセスしたいホスト名を伝えることで、サーバ側がグ
ローバルIPごとではなくホスト名によって異異なる証明書を使い
分けることを可能に
•  http://ja.wikipedia.org/wiki/Server_̲Name_̲Indication
–  Basic認証  および  Digest認証のサポート
•  HTTP  POST  で  HTTPS  URLにユーザー名とパスワードを指定
•  http://www.rfc-‐‑‒editor.org/info/rfc2617
前回のWebinar以降降にローンチされた機能の紹介
•  Message  Attributes  –  2014年年6⽉月12⽇日
–  String,  Number,  Binaryの属性をサポート
–  Mobile  Push⽤用Reserved  Message  Attributes
•  Baidu
•  MPNS
•  WNS
前回のWebinar以降降にローンチされた機能の紹介
•  TTLサポート  –  2014年年7⽉月10⽇日
–  Time  To  Live
•  メッセージ単位で⽣生存期間を設定
–  ⽣生存期間が過ぎて配信されていないメッセージは削除
•  例例えば、⾶飛⾏行行機を降降りた後に受け取る、既に終わったフラッ
シュセールのメッセージ
前回のWebinar以降降にローンチされた機能の紹介
アジェンダ
•  Amazon  Simple  Queue  Service  (SQS)
•  Amazon  Simple  Notification  Service  (SNS)
•  SQSとSNSを組み合わせた構成
•  まとめ
•  Cloud  Design  Pattern:  Fanoutパターン
–  http://aws.clouddesignpattern.org/index.php/CDP:Fanoutパターン
SQSとSNSを組み合わせた構成
•  画像をフォームからアップロードして登録
–  画像ファイルはS3
–  画像のコメントはRDS
–  画像のメタデータはDynamoDB
SQSとSNSを組み合わせた構成
①リクエストを受けた
WebアプリはSNSトピックへ
②SNSから
それぞれのSQSキューへ
Amazon  S3
Amazon  RDS
DynamoDB
③SQSキューからパラレルにそれぞれのデータストアへ
•  画像をフォームからアップロードして登録
–  画像ファイルはS3
–  画像のコメントはRDS  ←  ボトルネックであることが発覚したら…
–  画像のメタデータはDynamoDB
SQSとSNSを組み合わせた構成
①リクエストを受けた
WebアプリはSNSトピックへ
②SNSから
それぞれのSQSキューへ
Amazon  S3
Amazon  RDS
DynamoDB
③SQSキューからパラレルにそれぞれのデータストアへ
スケールアップ&アウト
•  SNS→SQSは無料料です
–  リクエスト単価(64  KB  のチャンク毎に  1リクエストとして課⾦金金)
•  Simple  Queue  Service(SQS):  無料料
SQSとSNSを組み合わせた構成
①リクエストを受けた
WebアプリはSNSトピックへ
②SNSから
それぞれのSQSキューへ
Amazon  S3
Amazon  RDS
DynamoDB
③SQSキューからパラレルにそれぞれのデータストアへ
アジェンダ
•  Amazon  Simple  Queue  Service  (SQS)
•  Amazon  Simple  Notification  Service  (SNS)
•  SQSとSNSを組み合わせた構成
•  まとめ
•  Amazon  SQS
–  信頼性が⾼高く、スケーラビリティに優れ、⼗十分に管理理されたメッ
セージキューサービス
–  簡単にコスト効率率率良良く、疎結合で柔軟なシステムを構築することが
できる
•  Amazon  SNS
–  信頼性が⾼高く、スケーラビリティに優れ、⼗十分に管理理されたプッ
シュメッセージングサービス
–  簡単にコスト効率率率良良く、マルチプロトコルで通知ができる
–  AWSの様々なサービスと連携して通知可能
まとめ
参考資料料
•  Amazon  SQS  Document
–  http://aws.amazon.com/jp/documentation/sqs/
•  Amazon  SQS  FAQ
–  http://aws.amazon.com/jp/sqs/faqs/
•  Amazon  SNS  Document
–  http://aws.amazon.com/jp/documentation/sns/
•  Amazon  SNS  FAQ
–  http://aws.amazon.com/jp/sns/faqs/
•  AWSクラウドデザインパターン
–  http://aws.clouddesignpattern.org/index.php
•  Massive  Message  Processing  with  Amazon  SQS  and  Amazon  DynamoDB  
(ARC301)  |  AWS  re:Invent  2013
–  https://www.youtube.com/watch?v=RJCpjRTvo_̲w
Webinar資料料の配置場所
•  AWS  クラウドサービス活⽤用資料料集
–  http://aws.amazon.com/jp/aws-‐‑‒jp-‐‑‒introduction/
公式Twitter/Facebook
AWSの最新情報をお届けします
@awscloud_̲jp
検索索
最新技術情報、イベント情報、お役⽴立立ち情報、お得なキャンペーン情報などを
⽇日々更更新しています!
もしくは
http://on.fb.me/1vR8yWm

More Related Content

PDF
CloudFormation/SAMのススメ
PDF
20200212 AWS Black Belt Online Seminar AWS Systems Manager
PDF
20200722 AWS Black Belt Online Seminar AWSアカウント シングルサインオンの設計と運用
PDF
[AWSマイスターシリーズ] Amazon ElastiCache
PDF
20190130 AWS Black Belt Online Seminar AWS Identity and Access Management (AW...
PDF
20200526 AWS Black Belt Online Seminar AWS X-Ray
PDF
[AWS初心者向けWebinar] 利用者が実施するAWS上でのセキュリティ対策
PDF
202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)
CloudFormation/SAMのススメ
20200212 AWS Black Belt Online Seminar AWS Systems Manager
20200722 AWS Black Belt Online Seminar AWSアカウント シングルサインオンの設計と運用
[AWSマイスターシリーズ] Amazon ElastiCache
20190130 AWS Black Belt Online Seminar AWS Identity and Access Management (AW...
20200526 AWS Black Belt Online Seminar AWS X-Ray
[AWS初心者向けWebinar] 利用者が実施するAWS上でのセキュリティ対策
202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)

What's hot (20)

PDF
AWS Black Belt Online Seminar 2017 AWS Storage Gateway
PDF
[AKIBA.AWS] VPN接続とルーティングの基礎
PDF
20180509 AWS Black Belt Online Seminar Amazon GuardDuty
PDF
20210316 AWS Black Belt Online Seminar AWS DataSync
PDF
AWS Black Belt Online Seminar 2017 Amazon Kinesis
PDF
AWS Black Belt Online Seminar 2018 AWS Certificate Manager
PDF
20190911 AWS Black Belt Online Seminar AWS Batch
PDF
20200219 AWS Black Belt Online Seminar オンプレミスとAWS間の冗長化接続
PDF
20201111 AWS Black Belt Online Seminar AWS CodeStar & AWS CodePipeline
PDF
20190424 AWS Black Belt Online Seminar Amazon Aurora MySQL
PDF
20190730 AWS Black Belt Online Seminar Amazon CloudFrontの概要
PDF
20180704(20190520 Renewed) AWS Black Belt Online Seminar Amazon Elastic File ...
PDF
20190326 AWS Black Belt Online Seminar Amazon CloudWatch
PDF
20180221 AWS Black Belt Online Seminar AWS Lambda@Edge
PDF
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
PDF
AWS Black Belt online seminar 2017 Snowball
PDF
20191023 AWS Black Belt Online Seminar Amazon EMR
PDF
AWSのログ管理ベストプラクティス
PDF
AWS Black Belt Online Seminar 2017 AWS Elastic Beanstalk
PPTX
20220409 AWS BLEA 開発にあたって検討したこと
AWS Black Belt Online Seminar 2017 AWS Storage Gateway
[AKIBA.AWS] VPN接続とルーティングの基礎
20180509 AWS Black Belt Online Seminar Amazon GuardDuty
20210316 AWS Black Belt Online Seminar AWS DataSync
AWS Black Belt Online Seminar 2017 Amazon Kinesis
AWS Black Belt Online Seminar 2018 AWS Certificate Manager
20190911 AWS Black Belt Online Seminar AWS Batch
20200219 AWS Black Belt Online Seminar オンプレミスとAWS間の冗長化接続
20201111 AWS Black Belt Online Seminar AWS CodeStar & AWS CodePipeline
20190424 AWS Black Belt Online Seminar Amazon Aurora MySQL
20190730 AWS Black Belt Online Seminar Amazon CloudFrontの概要
20180704(20190520 Renewed) AWS Black Belt Online Seminar Amazon Elastic File ...
20190326 AWS Black Belt Online Seminar Amazon CloudWatch
20180221 AWS Black Belt Online Seminar AWS Lambda@Edge
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
AWS Black Belt online seminar 2017 Snowball
20191023 AWS Black Belt Online Seminar Amazon EMR
AWSのログ管理ベストプラクティス
AWS Black Belt Online Seminar 2017 AWS Elastic Beanstalk
20220409 AWS BLEA 開発にあたって検討したこと
Ad

Viewers also liked (20)

PDF
AWS Black Belt Tech シリーズ 2016 - Amazon SQS / Amazon SNS
PDF
[AWSマイスターシリーズ] Amazon SQS / SNS
PDF
AWS サービスアップデートまとめ 2014年3月
PDF
AWS Blackbelt 2015シリーズ Amazon CloudWatch & Amazon CloudWatch Logs
PDF
ドメイン駆動設計 基本を理解する
PPTX
CloudWatchの使い方
PPTX
元インフラエンジニアが
Scalaを触ってつまづいたところ。
PDF
AWS Black Belt Online Seminar 2017 AWS体験ハンズオン~Amazon S3 バックアップ~
PDF
AWS Lambdaによるサーバレスアーキテクチャの基本に触れてみよう!【kintone & AWS ハンズオン祭り2015秋 B-2】
PDF
AWSデータベースアップデート2017
PDF
AWS Black Belt Online Seminar AWS 体験ハンズオン 〜 Amazon DynamoDB テーブル作成編 〜
PDF
Machine Learning on AWS
PDF
Amazon S3を中心とするデータ分析のベストプラクティス
PDF
AWS Black Belt Online Seminar 2017 初心者向け クラウドコンピューティング はじめの一歩
PDF
2015/04/01 AWS Blackbelt EC2
PDF
DBワークロードのAWS化とデータベースサービス関連最新情報
PDF
[Black Belt Online Seminar] AWS上でのログ管理
PDF
AWS Black Belt Online Seminar Amazon Aurora
PDF
Growing up serverless
PDF
データモデルについて知っておくべき7つのこと 〜NoSQLに手を出す前に〜
AWS Black Belt Tech シリーズ 2016 - Amazon SQS / Amazon SNS
[AWSマイスターシリーズ] Amazon SQS / SNS
AWS サービスアップデートまとめ 2014年3月
AWS Blackbelt 2015シリーズ Amazon CloudWatch & Amazon CloudWatch Logs
ドメイン駆動設計 基本を理解する
CloudWatchの使い方
元インフラエンジニアが
Scalaを触ってつまづいたところ。
AWS Black Belt Online Seminar 2017 AWS体験ハンズオン~Amazon S3 バックアップ~
AWS Lambdaによるサーバレスアーキテクチャの基本に触れてみよう!【kintone & AWS ハンズオン祭り2015秋 B-2】
AWSデータベースアップデート2017
AWS Black Belt Online Seminar AWS 体験ハンズオン 〜 Amazon DynamoDB テーブル作成編 〜
Machine Learning on AWS
Amazon S3を中心とするデータ分析のベストプラクティス
AWS Black Belt Online Seminar 2017 初心者向け クラウドコンピューティング はじめの一歩
2015/04/01 AWS Blackbelt EC2
DBワークロードのAWS化とデータベースサービス関連最新情報
[Black Belt Online Seminar] AWS上でのログ管理
AWS Black Belt Online Seminar Amazon Aurora
Growing up serverless
データモデルについて知っておくべき7つのこと 〜NoSQLに手を出す前に〜
Ad

Similar to AWS Black Belt Techシリーズ Amazon SNS / Amazon SQS (20)

PDF
20120303 jaws summit-meister-06_sns-sqs
PDF
SimpleDB, SQS, SNS詳細 - AWSマイスターシリーズ
PPTX
PDF
20111215 12 aws-meister-sqs_sns_sdb-public
PDF
SQSでやらかしたLT
PDF
20150207 サービス紹介編 Amazon Simple Queue Service (SQS)
PDF
20210317 AWS Black Belt Online Seminar Amazon MQ
PDF
Jaws lt資料-slideshare
PDF
体で覚えるSQS! DEVIO-MTUP11-TOKYO-007
PPT
アマゾンクラウドの真価
PDF
[AWSマイスターシリーズ] AWS Client Side SDK -Android,iOS & JavaScript-
PDF
[AWS Developers Meetup 2017] Developerのための ライブAWSウォークスルー 〜 AWS SDKの使い方 〜
PDF
MQTTとAMQPと.NET
PDF
[AWSマイスターシリーズ] AWS SDK for PHP / Ruby / boto(Python) / JavaScript in Node.js
PDF
20190604 AWS Black Belt Online Seminar Amazon Simple Notification Service (SNS)
PDF
20120528 aws meister-reloaded-awssd-kforjava-public
PDF
Amazon Simple Workflow Service (SWF)
PDF
Amazon SNS+SQSによる Fanoutシナリオの話
PDF
Sansanがメッセージング (SQS) でスケーラビリティを手に入れた話
PPTX
CloudWatch(+sns+sqs)で障害対応を自動化してみた
20120303 jaws summit-meister-06_sns-sqs
SimpleDB, SQS, SNS詳細 - AWSマイスターシリーズ
20111215 12 aws-meister-sqs_sns_sdb-public
SQSでやらかしたLT
20150207 サービス紹介編 Amazon Simple Queue Service (SQS)
20210317 AWS Black Belt Online Seminar Amazon MQ
Jaws lt資料-slideshare
体で覚えるSQS! DEVIO-MTUP11-TOKYO-007
アマゾンクラウドの真価
[AWSマイスターシリーズ] AWS Client Side SDK -Android,iOS & JavaScript-
[AWS Developers Meetup 2017] Developerのための ライブAWSウォークスルー 〜 AWS SDKの使い方 〜
MQTTとAMQPと.NET
[AWSマイスターシリーズ] AWS SDK for PHP / Ruby / boto(Python) / JavaScript in Node.js
20190604 AWS Black Belt Online Seminar Amazon Simple Notification Service (SNS)
20120528 aws meister-reloaded-awssd-kforjava-public
Amazon Simple Workflow Service (SWF)
Amazon SNS+SQSによる Fanoutシナリオの話
Sansanがメッセージング (SQS) でスケーラビリティを手に入れた話
CloudWatch(+sns+sqs)で障害対応を自動化してみた

More from Amazon Web Services Japan (20)

PDF
202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS
PDF
202204 AWS Black Belt Online Seminar AWS IoT Device Defender
PDF
Infrastructure as Code (IaC) 談義 2022
PDF
202204 AWS Black Belt Online Seminar Amazon Connect を活用したオンコール対応の実現
PDF
202204 AWS Black Belt Online Seminar Amazon Connect Salesforce連携(第1回 CTI Adap...
PDF
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
PDF
202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用
PDF
202203 AWS Black Belt Online Seminar Amazon Connect Tasks.pdf
PDF
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
PDF
Amazon QuickSight の組み込み方法をちょっぴりDD
PDF
マルチテナント化で知っておきたいデータベースのこと
PDF
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
PDF
パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介
PDF
202202 AWS Black Belt Online Seminar Amazon Connect Customer Profiles
PDF
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するために
PDF
202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨
PPTX
[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介
PDF
202111 AWS Black Belt Online Seminar AWSで構築するSmart Mirrorのご紹介
PDF
202201 AWS Black Belt Online Seminar Apache Spark Performnace Tuning for AWS ...
PDF
202112 AWS Black Belt Online Seminar 店内の「今」をお届けする小売業向けリアルタイム配信基盤のレシピ
202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS
202204 AWS Black Belt Online Seminar AWS IoT Device Defender
Infrastructure as Code (IaC) 談義 2022
202204 AWS Black Belt Online Seminar Amazon Connect を活用したオンコール対応の実現
202204 AWS Black Belt Online Seminar Amazon Connect Salesforce連携(第1回 CTI Adap...
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用
202203 AWS Black Belt Online Seminar Amazon Connect Tasks.pdf
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
Amazon QuickSight の組み込み方法をちょっぴりDD
マルチテナント化で知っておきたいデータベースのこと
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介
202202 AWS Black Belt Online Seminar Amazon Connect Customer Profiles
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するために
202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨
[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介
202111 AWS Black Belt Online Seminar AWSで構築するSmart Mirrorのご紹介
202201 AWS Black Belt Online Seminar Apache Spark Performnace Tuning for AWS ...
202112 AWS Black Belt Online Seminar 店内の「今」をお届けする小売業向けリアルタイム配信基盤のレシピ

AWS Black Belt Techシリーズ Amazon SNS / Amazon SQS

  • 1. Amazon  Simple  Queue  Service(SQS) Amazon  Simple  Notification  Service(SNS) AWS  Black  Belt  Tech  Webinar  2015 アマゾンデータサービスジャパン株式会社 ソリューションアーキテクト  篠原  英治 2015年年3⽉月4⽇日
  • 2. !   Name:   ・Eiji  Shinohara  (篠原  英治) !   Role: ・Solutions  Architect  for  Startups ・Amazon  CloudSearch  Subject  Matter  Expert Who  am  I?
  • 3. アジェンダ •  Amazon  Simple  Queue  Service  (SQS) •  Amazon  Simple  Notification  Service  (SNS) •  SQSとSNSを組み合わせた構成 •  まとめ
  • 4. アジェンダ •  Amazon  Simple  Queue  Service  (SQS) •  Amazon  Simple  Notification  Service  (SNS) •  SQSとSNSを組み合わせた構成 •  まとめ
  • 5. Amazon  Simple  Queue  Service  (SQS) •  ⻑⾧長い歴史を持つ『メッセージキュー』サービス https://aws.amazon.com/blogs/aws/amazon_̲simple_̲q/ 2006年年7⽉月13⽇日
  • 6. メッセージキューサービスとは? •  Message  Queue –  ソフトウェアの世界では古くからある概念念。MQと略略されることも –  http://ja.wikipedia.org/wiki/メッセージキュー –  Amazon  SQSはPull型のMQサービス •  受信側はSQSに問い合わせてメッセージ取得 送信 受信 polling
  • 7. Amazon  SQSはAWSフルマネージドな分散キュー •  ⾼高い信頼性:  複数のサーバー/データセンターにメッセージを保持 •  スケーラブル:  多数の送信者/受信者に対応 •  ⾼高スループット:  メッセージが増加しても⾼高スループットを出し続ける •  低コスト:  毎⽉月の無料料枠  +  使った分だけの従量量課⾦金金 Massive  Message  Processing  with  Amazon  SQS  and  Amazon  DynamoDB  (ARC301)  |  AWS  re:Invent  2013
  • 8. SQSを使う利利点:  疎結合  –  Loosely  Coupled •  例例えば、以下のようなケース –  ユウタさん:  今、⼤大量量のデータ登録をしたい。夜は⼤大事な予定がある –  ヒロシさん:  今は負荷が⾼高いので困る。⼀一定間隔で少しずつなら… ユウタさん 今から先⽉月のログデータ150万件 投⼊入しますね ヒロシさん 今はデータベースの負荷が⾼高いので 夜にやっていただけないですか??
  • 9. Amazon SQS SQSを使う利利点:  疎結合  –  Loosely  Coupled •  Amazon  SQSを⽤用いることでユウタさんもヒロシさんもHappyに! –  仮に、ヒロシさんが管理理するデータベースがメンテナンス中でも、 ユウタさんは気にせず作業してOK ユウタさん 得意のJavaでマルチスレッドでSQS にデータを⾼高速に投⼊入! AWS  SDKを使えば実装は簡単☺ ヒロシさん メッセージ内容の精査や画像チェックなどの 処理理が重いので、2つのインスタンスで! データベースの負荷を⾒見見ながらループの間隔 を調整出来るようにしておく マルチスレッドで投⼊入 メッセージ取得 データベースの負荷に 合わせた間隔で登録 Java PHP PHP
  • 11. Amazon  SQSをはじめるのは簡単です •  Management  Console編  –  キューの作成
  • 12. Amazon  SQSをはじめるのは簡単です •  Management  Console編  –  キューの作成:  キューの名前を⼊入⼒力力
  • 13. Amazon  SQSをはじめるのは簡単です •  Management  Console編  –  メッセージの送信
  • 14. Amazon  SQSをはじめるのは簡単です •  Management  Console編  –  メッセージの送信
  • 15. Amazon  SQSをはじめるのは簡単です •  Management  Console編  –  メッセージの受信:  ブラウザ上でポーリング
  • 16. Amazon  SQSをはじめるのは簡単です •  Management  Console編  -‐‑‒  メッセージの受信:  Message  Bodyの表⽰示
  • 17. Amazon  SQSをはじめるのは簡単です •  Management  Console編  -‐‑‒  メッセージの削除
  • 18. Amazon  SQSをはじめるのは簡単です •  Management  Console編  -‐‑‒  キューの削除
  • 19. Amazon  SQSを使う上で覚えておきたい識識別⼦子 •  Queue  URL –  キューを作成する際に払い出されるURL –  https://リージョン.queue.amazonaws.com/アカウントID/キュー名 •  Message  ID –  システムで割り当てられたID •  Receipt  Handle –  メッセージの削除やVisibilityの変更更に使⽤用 –  メッセージを受信する際に取得 •  受信されたメッセージのみ削除やVisibilityの変更更が可能 –  同じメッセージを受信する度度に異異なる→最新のものをつかうこと
  • 20. Amazon  SQSをはじめるのは簡単です •  AWS  CLI編 –  キューの作成 $  aws  sqs  create-‐‑‒queue  -‐‑‒-‐‑‒queue-‐‑‒name  blackbelt2015 {        “QueueUrl”:  “https://リージョン.queue.amazonaws.com/アカウントID/blackbelt2015" }
  • 21. Amazon  SQSをはじめるのは簡単です •  AWS  CLI編 –  キューの作成:  作成されたことを確認 $  aws  sqs  list-‐‑‒queues {        "QueueUrls":  [                “https://リージョン.queue.amazonaws.com/アカウントID/blackbelt2015"        ] }
  • 22. Amazon  SQSをはじめるのは簡単です •  AWS  CLI編 –  メッセージの送信 $  aws  sqs  send-‐‑‒message   -‐‑‒-‐‑‒queue-‐‑‒url  https://リージョン.queue.amazonaws.com/アカウントID/blackbelt2015   -‐‑‒-‐‑‒message-‐‑‒body  'Hello  World!' {        "MD5OfMessageBody":  "ed076287532e86365e841e92bfc50d8c",        "MessageId":  "2db5a1de-‐‑‒8bc5-‐‑‒4976-‐‑‒9b0c-‐‑‒68749bffee1a" }
  • 23. Amazon  SQSをはじめるのは簡単です •  AWS  CLI編 –  メッセージの受信 $  aws  sqs  receive-‐‑‒message   -‐‑‒-‐‑‒queue-‐‑‒url  https://リージョン.queue.amazonaws.com/アカウントID/blackbelt2015 {        "Messages":  [                {                        "Body":  "Hello  World!",                        “ReceiptHandle”:  “AQEBv3p27X8o44Nt4J0  〜~略略〜~  +8lujWoy6Ks=",                        "MD5OfBody":  "ed076287532e86365e841e92bfc50d8c",                        "MessageId":  "2db5a1de-‐‑‒8bc5-‐‑‒4976-‐‑‒9b0c-‐‑‒68749bffee1a"                }        ] }
  • 24. Amazon  SQSをはじめるのは簡単です •  AWS  CLI編 –  メッセージの削除 aws  sqs  delete-‐‑‒message   -‐‑‒-‐‑‒queue-‐‑‒url  https://リージョン.queue.amazonaws.com/アカウントID/blackbelt2015   -‐‑‒-‐‑‒receipt-‐‑‒handle  "AQEBv3p27X8o44Nt4J0  〜~略略〜~  +8lujWoy6Ks="
  • 25. Amazon  SQSをはじめるのは簡単です •  AWS  SDK編   –  キューの作成 –  メッセージの送信 AmazonSQS  sqs  =  new  AmazonSQSClient(); CreateQueueRequest  createQueueRequest  =  new  CreateQueueRequest("MyQueue"); String  myQueueUrl  =  sqs.createQueue(createQueueRequest).getQueueUrl(); sqs.sendMessage(new  SendMessageRequest(myQueueUrl,  ”Hello  World!  "));
  • 26. Amazon  SQSをはじめるのは簡単です •  AWS  SDK編 –  メッセージの受信 –  メッセージの削除 ReceiveMessageRequest  receiveMessageRequest  =  new  ReceiveMessageRequest(myQueueUrl); List<Message>  messages  =  sqs.receiveMessage(receiveMessageRequest).getMessages(); for  (Message  message  :  messages)  { //  取得したメッセージを元に処理理 } String  messageRecieptHandle  =  messages.get(0).getReceiptHandle(); sqs.deleteMessage(new  DeleteMessageRequest(myQueueUrl,  messageRecieptHandle));
  • 27. Amazon  SQSをはじめるのは簡単です •  AWS  SDK編 –  キューの削除 –  AWS  SDKは2015年年3⽉月現在下記の⾔言語をサポート •  Java  http://aws.amazon.com/jp/sdk-‐‑‒for-‐‑‒java/ •  Ruby  http://aws.amazon.com/jp/sdk-‐‑‒for-‐‑‒ruby/ •  Python  http://aws.amazon.com/jp/sdk-‐‑‒for-‐‑‒python/ •  .NET  http://aws.amazon.com/jp/sdk-‐‑‒for-‐‑‒net/ •  PHP  http://aws.amazon.com/jp/sdk-‐‑‒for-‐‑‒php/ •  JavaScript  http://aws.amazon.com/jp/sdk-‐‑‒for-‐‑‒browser/ •  Node.js    http://aws.amazon.com/jp/sdk-‐‑‒for-‐‑‒node-‐‑‒js/ •  Go(Coming  Soon!)  https://github.com/awslabs/aws-‐‑‒sdk-‐‑‒go sqs.deleteQueue(new  DeleteQueueRequest(myQueueUrl));
  • 28. Amazon  SQSのコスト •  無料料利利⽤用枠 –  (SQSご利利⽤用全ユーザー)  毎⽉月100万キューイングリクエストまで無料料 •  SQSリクエスト100万件につき0.476  USD –  複数メッセージを1つのリクエストとしてバッチ送信することも可能 •  データ転送 –  送信(アウト) •  最初の1GB/⽉月:0  USD 〜~略略〜~ •  次の350TBまで  /⽉月:0.120  USD  GBあたり •  350TBを越える場合の価格はお問い合わせください •  同⼀一リージョン内のSQSとEC2インスタンスのデータ転送は無料料
  • 29. 効率率率良良くAmazon  SQSを使う •  Visibility  Timeout  +  EC2  Spot  Instance •  ⼀一度度のAPIコールで10件のメッセージを送信/受信 •  Long  PollでReceive  Messageコールの頻度度を抑える http://www.slideshare.net/AmazonWebServices/advanced-‐‑‒topics-‐‑‒session-‐‑‒4-‐‑‒architecting-‐‑‒forhighavailability
  • 30. Amazon SQS 効率率率良良くAmazon  SQSを使う •  Visibility  Timeoutとは –  メッセージ受信者が複数の場合 送信 受信1 受信2 受信3
  • 31. Amazon SQS 効率率率良良くAmazon  SQSを使う •  Visibility  Timeoutとは –  受信1がメッセージを取得 送信 受信1 受信2 受信3
  • 32. Amazon SQS 効率率率良良くAmazon  SQSを使う •  Visibility  Timeoutとは –  30秒間(デフォルト設定。変更更可能。最⼤大12時間)、受信2と受信 3にはメッセージを⾒見見せない(in  Flight) 送信 受信1 受信2 受信3 X X
  • 33. Amazon SQS 効率率率良良くAmazon  SQSを使う •  Visibility  Timeoutとは –  受信1がキューからメッセージを削除せず、タイムアウトした場 合はどの受信サーバーからもメッセージが受信可能に 送信 受信1 受信2 受信3
  • 34. 効率率率良良くAmazon  SQSを使う •  Amazon  EC2  –  Spot  Instances –  Amazon  EC2  の価格をお客様が指定できるシステム –  ⼊入札価格がその時点のスポット価格を上回っていれば、インスタンス を実⾏行行できる •  スポット価格は、需要と供給の関係に基づいてリアルタイムで変動 •  スポット価格は⼀一般的に、オンデマンド価格を⼤大幅に下回る (2015年年3⽉月時点で、平均で約8割下回っている) –  「⼊入札額  >=  スポット価格」なら指定したインスタンスが起動 –  「⼊入札額  <  スポット価格」となるとインスタンスがターミネート –  1時間未満の使⽤用料料は課⾦金金されない
  • 35. 効率率率良良くAmazon  SQSを使う •  Visibility  Timeout  +  EC2  Spot  Instances –  Spot  Instanceを使っていて、受信1がターミネートされても、 Visibility  Timeout後に他のインスタンスが処理理すれば良良い –  コスト削減効果:  ⼤大 Amazon SQS 送信 受信1 受信2 受信3
  • 36. 効率率率良良くAmazon  SQSを使う •  メッセージ送信/受信は1度度にMAX10件 –  SQSへのリクエストが少なければ少ないほどコスト効率率率が良良い Amazon SQS 受信1 受信2 受信3 送信1 送信2 送信3 x  10 x  10 x  10 x  10 x  10 x  10
  • 37. 効率率率良良くAmazon  SQSを使う •  メッセージ送信/受信は1度度にMAX10件 –  送信例例:  AWS  CLI  で  send-‐‑‒message-‐‑‒batch  を利利⽤用 $  aws  sqs  send-‐‑‒message-‐‑‒batch -‐‑‒-‐‑‒queue-‐‑‒url  https://リージョン.queue.amazonaws.com/アカウントID/blackbelt2015   -‐‑‒-‐‑‒entries  '[{  "Id":  "01",  "MessageBody":  "test  message  01"  },{  "Id":  "02",   "MessageBody":  "test  message  02"  },…]ʼ’ {        "Successful":  [                {                        "MD5OfMessageBody":  "fa27aa462b939f0c8cf67189198f1b2d",                        "Id":  "01",                        "MessageId":  "041d1604-‐‑‒1c80-‐‑‒4440-‐‑‒90bf-‐‑‒598db00cf752"                },  ...                〜~略略〜~
  • 38. 効率率率良良くAmazon  SQSを使う •  メッセージ送信/受信は1度度にMAX10件 –  受信例例:  AWS  CLI  で  receive-‐‑‒message  の-‐‑‒-‐‑‒max-‐‑‒number-‐‑‒of-‐‑‒ messagesオプションを利利⽤用(デフォルト1。最⼤大10) $  aws  sqs  receive-‐‑‒message -‐‑‒-‐‑‒queue-‐‑‒url  https://リージョン.queue.amazonaws.com/アカウントID/blackbelt2015   -‐‑‒-‐‑‒max-‐‑‒number-‐‑‒of-‐‑‒messages  10 {        "Messages":  [                {                        "Body":  "test  message  01",                        "ReceiptHandle":  "AQEB  〜~略略〜~  7g/jA=",                        "MD5OfBody":  "fa27aa462b939f0c8cf67189198f1b2d",                        "MessageId":  "041d1604-‐‑‒1c80-‐‑‒4440-‐‑‒90bf-‐‑‒598db00cf752"                },…
  • 39. 効率率率良良くAmazon  SQSを使う •  クライアントサイドでのバッファリング –  AWS  SDK  for  Java  の  AmazonSQSAsyncClient  を利利⽤用 –  最⼤大10リクエストのバッファリング処理理を簡単に実現可能 –  下記のパラメータを設定し微調整することが可能 •  maxBatchOpenMs:  最⼤大待ち時間をミリ秒単位で指定 •  maxBatchSize:  1回のリクエストのメッセージの最⼤大数を指定
  • 40. 効率率率良良くAmazon  SQSを使う •  Long  Polling –  受信者が頻繁にSQSに対してReceive  Messageコールをするとリク エスト回数がかさみ、コスト効率率率がよくない –  “メッセージが取得出来るまで”待つ時間を設定できる(0秒から20秒)
  • 41. 効率率率良良くAmazon  SQSを使う •  Long  Polling  と  Short  Polling  の使い分け –  基本的に  Long  Polling  推奨(呼び出し元のCPU負荷,  リクエスト課⾦金金等) •  複数のキューを使う場合は、マルチスレッドでPolling –  Receive  Message呼び出し後、直ちに応答が必要な場合はShort  Polling •  例例えば複数のキューを単⼀一スレッドでポーリングする場合、Long   Pollingするとその間、他のキューにアクセスできない Polling処理理 Polling処理 スレッド1 スレッド2 Polling処理理 Polling処理 スレッド1
  • 42. 前回のWebinar以降降にローンチされた機能の紹介 •  SQS  Message  Attributes •  AWS  CloudTrail対応 •  Delete  All  Messages  in  SQS  Queue •  SQS  Client  Library  for  Java  Messaging  Service  (JMS)
  • 43. 前回のWebinar以降降にローンチされた機能の紹介 •  Message  Attributes  –  2014年年5⽉月6⽇日 –  メッセージBodyとは別に属性を10個まで定義可能に –  属性はName、Type(String/Number/Binary)、Valueで定義 •  Typeはカスタム可能(例例:  float,  int)
  • 44. 前回のWebinar以降降にローンチされた機能の紹介 •  AWS  CloudTrail対応  –  2014年年7⽉月16⽇日 –  キューの設定変更更等に関するAPIコールのログをS3に保存 –  CloudTrailは2014年年7⽉月から東京リージョンで利利⽤用可能
  • 45. 前回のWebinar以降降にローンチされた機能の紹介 •  Delete  All  Messages  in  SQS  Queue  –  2014年年12⽉月8⽇日 –  PurgeQueue  アクションでキュー内のメッセージの⼀一括削除が可能に
  • 46. 前回のWebinar以降降にローンチされた機能の紹介 •  SQS  Client  Library  for  Java  Messaging  Service  (JMS)  –  2014 年年12⽉月29⽇日 –  JMS:  Javaでメッセージングサービスを利利⽤用するための標準API –  SQSをJMSプロバイダーとして利利⽤用可能に •  ご⾃自⾝身でJMSクラスタサーバーの保守運⽤用が不不要に!
  • 47. Amazon  SQSを使う上での注意点 •  Amazon  SQSは⾼高い可⽤用性と信頼性を実現した分散システム •  順序はベストエフォート •  出来る限り順序を維持しようとするが保証しない •  タイムスタンプやシーケンス番号をメッセージに •  同じメッセージを複数回受信する可能性がある(少なくとも1回の配信) •  SQSはメッセージを複数のサーバ/データセンタに保持 •  メッセージ削除時にサーバが⼀一時故障中の場合、復復旧後に受信され る可能性がある •  同じメッセージを複数回処理理した場合に悪影響を出さないように、 冪等性を意識識したアプリケーションの設計を⾏行行う
  • 48. Amazon  SQSの上限 •  メッセージ保持期限 •  削除されないメッセージはデフォルトで4⽇日間保持。保持期間は60秒 から14⽇日の間で変更更可能 •  In  Flight(受信されたメッセージ&Visibility  Timeout内)メッセージ •  1つのキューごとに最⼤大120,000In  Flightメッセージ •  超えるとOverLimitエラー •  メッセージの最⼤大サイズは256KB •  2013年年6⽉月に64KB→256KBに •  画像やムービー等の⼤大容量量データには適していない –  S3に配置しメッセージ内にそのパスを記述
  • 49. 現場で使える実践的な機能 •  時間をおいてからメッセージを⾒見見せたい •  Delay  Queue  と  Message  Timers •  何度度受信されてもキューに残り続けるメッセージをなんとかしたい •  Dead  Letter  Queue •  SQS  を使って簡単にスケーラブルなバッチ処理理基盤を構築したい •  Elastic  Beanstalk:  Worker  Tier •  セキュリティ •  AWS  Identity  and  Access  Management  (IAM)連携 •  モニタリング •  CloudWatchでの監視
  • 50. 時間をおいてからメッセージを⾒見見せたい •  Delay  Queue –  キューに送られた新しいメッセージをある⼀一定秒の間⾒見見えなくする –  0〜~900秒で設定 –  設定すると、そのキューに送信されるメッセージ全てに適⽤用
  • 51. 時間をおいてからメッセージを⾒見見せたい •  Message  Timers –  個々のメッセージに対して、送信されてから⾒見見えるようになるまで の時間を設定 –  0〜~900秒で設定 –  Message  TimersはDelay  Queueの遅延時間の設定を上書き Send  Message   Request Delay  Queue  30秒 Message  Timers  60秒 メッセージが⾒見見え るようになる時間
  • 52. キューに残り続けるメッセージをなんとかしたい •  Dead  Letter  Queue –  メッセージを、指定回数(1〜~1000で指定)受信後に、⾃自動で別の キュー(Dead  Letter  Queue)に移動する機能 –  デフォルトは無効0〜~900秒で設定 ①メッセージ受信 ②タスク失敗 ③メッセージが削除されず キューに残り続ける ④指定回数受信 後に移動 キュー Dead  Letter  Queue
  • 53. スケーラブルなバッチ処理理基盤 •  AWS  Elastic  Beanstalk:  Worker  Tier –  SQS  +  Auto  Scalingでスケーラブルなバッチ処理理基盤 Sqsd (deamon) Elastic Beanstalk Application http://localhost:80/xxx EC2 Instance Auto Scaling group CloudWatch Auto Scaling
  • 54. スケーラブルなバッチ処理理基盤 •  Job  Observerパターン –  http://aws.clouddesignpattern.org/index.php/CDP:Job_̲Observerパターン –  AWSブログ   http://aws.typepad.com/aws_̲japan/2015/01/auto-‐‑‒scaling-‐‑‒with-‐‑‒sqs.html
  • 55. セキュリティ •  AWS  Identity  and  Access  Management  (IAM)連携 –  設定例例 »  特定のリソースやアクセス元のみアクセス許可/拒否 »  特定の時間帯のみアクセス許可 {            "Version":"2012-‐‑‒11-‐‑‒05",      "Id":"cd3ad3d9-‐‑‒2776-‐‑‒4ef1-‐‑‒a904-‐‑‒4c229d1642ee",      "Statement"  :  [            {                  "Sid":"1",                    "Effect":"Allow",                                        "Principal"  :  {                        "aws":  "111122223333"                  },                  "Action":["sqs:SendMessage","sqs:ReceiveMessage"],                    "Resource":  "arn:aws:sqs:us-‐‑‒east-‐‑‒1:444455556666:queue2",                  "Condition"  :  {                        "IpAddress"  :  {                              "aws:SourceIp":"10.52.176.0/24"                        },                          "DateLessThan"  :  {                              "aws:CurrentTime":"2009-‐‑‒06-‐‑‒30T12:00Z”
  • 56. モニタリング •  CloudWatchでの監視 •  利利⽤用可能メトリクス NumberOfMessageSent キューに追加されたメッセージ数 SentMessageSize キューに追加されたメッセージの合計サイズ NumberOfMessageReceived ReceiveMessageコールによって返されたメッセージ数 NumberOfEmptyReceives ReceiveMessageによって返さなかったメッセージ数 NumberOfMessagesDeleted キューから削除されたメッセージ数 ApproximateNumberOfMessageDelayed Delayされすぐに読み込みができなかったメッセージ数。Delay  Queueまたは メッセージ送信時のDelay設定によるもの ApproximateNumberOfMessageVisible キューから利利⽤用可能になったメッセージ数 ApproximateNumberOfMessageNotVisible クライアントから送信されたが削除されていないか、visibility  winodowのendま で到達していないメッセージ数
  • 57. アジェンダ •  Amazon  Simple  Queue  Service  (SQS) •  Amazon  Simple  Notification  Service  (SNS) •  SQSとSNSを組み合わせた構成 •  まとめ
  • 58. Amazon  Simple  Notification  Service  (SNS) •  Amazon  SNSはマルチプロトコルに対応したフルマネージド通知サービス Publish 1.Topicに メッセージを送信 2.  マルチプロトコルで通知 Amazon  SNS Publisher Topic HTTP(S) EMAIL SQS Mobile Push Subscriber
  • 59. Amazon  Simple  Notification  Service  (SNS) •  Mobile  Pushに関しては次週(2015年年3⽉月11⽇日)のAWS  Black  Belt   Tech  Webinarで詳細にご案内します! Amazon SNS Mobile Push Apple Devices Google Devices Amazon Kindle Fire Devices
  • 60. Amazon  SNSのコスト •  Amazon  SNSを使えば安価で簡単に通知が送れます •  無料料枠:   –  モバイルプッシュ通知:  100万件 –  Email/Email-‐‑‒JSON:  1,000件 –  HTTP/HTTPS:  100,000件 –  Simple  Queue  Service(SQS):  無料料 •  リクエスト単価(64  KB  のチャンク毎に  1リクエストとして課⾦金金) –  モバイルプッシュ通知:  100万件あたり0.5  USD –  Email/Email-‐‑‒JSON:  100,000件あたり2  USD –  HTTP/HTTPS:  100万件あたり0.6  USD –  Simple  Queue  Service(SQS):  無料料 •  ※  SMSは東京リージョンではサービスを提供しておりません
  • 61. Amazon  SNSをはじめるのは簡単です •  Management  Consoleでは  Mobile  Services  の中に
  • 62. Amazon  SNSをはじめるのは簡単です 1.  Topicの作成 2.  TopicをSubscribe 3.  Topicへ向けてメッセージをPublish
  • 63. Amazon  SNSをはじめるのは簡単です 1.  Topicの作成 –  TopicのARN(Amazon  Resource  Name)が⽣生成される。リトライポリシー等も設定可能
  • 64. Amazon  SNSをはじめるのは簡単です 2.  TopicのSubscribe –  プロトコルを選択 –  Endpoint側でConfirmすることでメッセージ送信可能に
  • 65. Amazon  SNSをはじめるのは簡単です 3.  Topicへ向けてメッセージをPublish –  ブラウザからPublish –  メッセージの受信(プロトコルでEmailを選択した場合)
  • 66. Amazon  Simple  Notification  Service  (SNS) •  AWSの様々なサービスと連携して通知可能 –  利利⽤用例例 •  Amazon  CloudWatch –  Billing  Alertの通知 •  Amazon  SES –  Bounce/Complaintのフィードバック通知 •  Amazon  S3 –  ファイルがアップロードされた時の通知 •  Amazon  Elastic  Transcoder –  動画変換処理理完了了/失敗時の通知
  • 67. Amazon  SNSと他サービスの連携 •  Amazon  CloudWatchのBilling  Alertの通知
  • 68. Amazon  SNSと他サービスの連携 •  Amazon  SESのBounce/Complaintのフィードバック通知
  • 69. Amazon  SNSと他サービスの連携 •  Amazon  S3にファイルがアップロードされた時の通知
  • 70. Amazon  SNSと他サービスの連携 •  Amazon  Elastic  Transcoderでの動画変換処理理完了了/失敗時の通知
  • 71. •  HTTPS  enhancements –  Server  Name  Indication  (SNI)  サポート –  Basic認証  および  Digest認証のサポート •  Message  Attributes •  Time  To  Live  (TTL)  サポート 前回のWebinar以降降にローンチされた機能の紹介
  • 72. •  HTTPS  enhancements  –  2014年年4⽉月28⽇日 –  Server  Name  Indication  (SNI)サポート •  SNIはSSL/TLSの拡張仕様。SSLハンドシェイク時にクライアン トがアクセスしたいホスト名を伝えることで、サーバ側がグ ローバルIPごとではなくホスト名によって異異なる証明書を使い 分けることを可能に •  http://ja.wikipedia.org/wiki/Server_̲Name_̲Indication –  Basic認証  および  Digest認証のサポート •  HTTP  POST  で  HTTPS  URLにユーザー名とパスワードを指定 •  http://www.rfc-‐‑‒editor.org/info/rfc2617 前回のWebinar以降降にローンチされた機能の紹介
  • 73. •  Message  Attributes  –  2014年年6⽉月12⽇日 –  String,  Number,  Binaryの属性をサポート –  Mobile  Push⽤用Reserved  Message  Attributes •  Baidu •  MPNS •  WNS 前回のWebinar以降降にローンチされた機能の紹介
  • 74. •  TTLサポート  –  2014年年7⽉月10⽇日 –  Time  To  Live •  メッセージ単位で⽣生存期間を設定 –  ⽣生存期間が過ぎて配信されていないメッセージは削除 •  例例えば、⾶飛⾏行行機を降降りた後に受け取る、既に終わったフラッ シュセールのメッセージ 前回のWebinar以降降にローンチされた機能の紹介
  • 75. アジェンダ •  Amazon  Simple  Queue  Service  (SQS) •  Amazon  Simple  Notification  Service  (SNS) •  SQSとSNSを組み合わせた構成 •  まとめ
  • 76. •  Cloud  Design  Pattern:  Fanoutパターン –  http://aws.clouddesignpattern.org/index.php/CDP:Fanoutパターン SQSとSNSを組み合わせた構成
  • 77. •  画像をフォームからアップロードして登録 –  画像ファイルはS3 –  画像のコメントはRDS –  画像のメタデータはDynamoDB SQSとSNSを組み合わせた構成 ①リクエストを受けた WebアプリはSNSトピックへ ②SNSから それぞれのSQSキューへ Amazon  S3 Amazon  RDS DynamoDB ③SQSキューからパラレルにそれぞれのデータストアへ
  • 78. •  画像をフォームからアップロードして登録 –  画像ファイルはS3 –  画像のコメントはRDS  ←  ボトルネックであることが発覚したら… –  画像のメタデータはDynamoDB SQSとSNSを組み合わせた構成 ①リクエストを受けた WebアプリはSNSトピックへ ②SNSから それぞれのSQSキューへ Amazon  S3 Amazon  RDS DynamoDB ③SQSキューからパラレルにそれぞれのデータストアへ スケールアップ&アウト
  • 79. •  SNS→SQSは無料料です –  リクエスト単価(64  KB  のチャンク毎に  1リクエストとして課⾦金金) •  Simple  Queue  Service(SQS):  無料料 SQSとSNSを組み合わせた構成 ①リクエストを受けた WebアプリはSNSトピックへ ②SNSから それぞれのSQSキューへ Amazon  S3 Amazon  RDS DynamoDB ③SQSキューからパラレルにそれぞれのデータストアへ
  • 80. アジェンダ •  Amazon  Simple  Queue  Service  (SQS) •  Amazon  Simple  Notification  Service  (SNS) •  SQSとSNSを組み合わせた構成 •  まとめ
  • 81. •  Amazon  SQS –  信頼性が⾼高く、スケーラビリティに優れ、⼗十分に管理理されたメッ セージキューサービス –  簡単にコスト効率率率良良く、疎結合で柔軟なシステムを構築することが できる •  Amazon  SNS –  信頼性が⾼高く、スケーラビリティに優れ、⼗十分に管理理されたプッ シュメッセージングサービス –  簡単にコスト効率率率良良く、マルチプロトコルで通知ができる –  AWSの様々なサービスと連携して通知可能 まとめ
  • 82. 参考資料料 •  Amazon  SQS  Document –  http://aws.amazon.com/jp/documentation/sqs/ •  Amazon  SQS  FAQ –  http://aws.amazon.com/jp/sqs/faqs/ •  Amazon  SNS  Document –  http://aws.amazon.com/jp/documentation/sns/ •  Amazon  SNS  FAQ –  http://aws.amazon.com/jp/sns/faqs/ •  AWSクラウドデザインパターン –  http://aws.clouddesignpattern.org/index.php •  Massive  Message  Processing  with  Amazon  SQS  and  Amazon  DynamoDB   (ARC301)  |  AWS  re:Invent  2013 –  https://www.youtube.com/watch?v=RJCpjRTvo_̲w
  • 83. Webinar資料料の配置場所 •  AWS  クラウドサービス活⽤用資料料集 –  http://aws.amazon.com/jp/aws-‐‑‒jp-‐‑‒introduction/