Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

43,393 views

Published on

AWS Black Belt Tech Webinar 2015
(旧マイスターシリーズ)

Amazon SNS / Amazon SQS

Published in: Technology
  • Be the first to comment

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

  1. 1. Amazon  Simple  Queue  Service(SQS) Amazon  Simple  Notification  Service(SNS) AWS  Black  Belt  Tech  Webinar  2015 アマゾンデータサービスジャパン株式会社 ソリューションアーキテクト  篠原  英治 2015年年3⽉月4⽇日
  2. 2. !   Name:   ・Eiji  Shinohara  (篠原  英治) !   Role: ・Solutions  Architect  for  Startups ・Amazon  CloudSearch  Subject  Matter  Expert Who  am  I?
  3. 3. アジェンダ •  Amazon  Simple  Queue  Service  (SQS) •  Amazon  Simple  Notification  Service  (SNS) •  SQSとSNSを組み合わせた構成 •  まとめ
  4. 4. アジェンダ •  Amazon  Simple  Queue  Service  (SQS) •  Amazon  Simple  Notification  Service  (SNS) •  SQSとSNSを組み合わせた構成 •  まとめ
  5. 5. Amazon  Simple  Queue  Service  (SQS) •  ⻑⾧長い歴史を持つ『メッセージキュー』サービス https://aws.amazon.com/blogs/aws/amazon_̲simple_̲q/ 2006年年7⽉月13⽇日
  6. 6. メッセージキューサービスとは? •  Message  Queue –  ソフトウェアの世界では古くからある概念念。MQと略略されることも –  http://ja.wikipedia.org/wiki/メッセージキュー –  Amazon  SQSはPull型のMQサービス •  受信側はSQSに問い合わせてメッセージ取得 送信 受信 polling
  7. 7. Amazon  SQSはAWSフルマネージドな分散キュー •  ⾼高い信頼性:  複数のサーバー/データセンターにメッセージを保持 •  スケーラブル:  多数の送信者/受信者に対応 •  ⾼高スループット:  メッセージが増加しても⾼高スループットを出し続ける •  低コスト:  毎⽉月の無料料枠  +  使った分だけの従量量課⾦金金 Massive  Message  Processing  with  Amazon  SQS  and  Amazon  DynamoDB  (ARC301)  |  AWS  re:Invent  2013
  8. 8. SQSを使う利利点:  疎結合  –  Loosely  Coupled •  例例えば、以下のようなケース –  ユウタさん:  今、⼤大量量のデータ登録をしたい。夜は⼤大事な予定がある –  ヒロシさん:  今は負荷が⾼高いので困る。⼀一定間隔で少しずつなら… ユウタさん 今から先⽉月のログデータ150万件 投⼊入しますね ヒロシさん 今はデータベースの負荷が⾼高いので 夜にやっていただけないですか??
  9. 9. Amazon SQS SQSを使う利利点:  疎結合  –  Loosely  Coupled •  Amazon  SQSを⽤用いることでユウタさんもヒロシさんもHappyに! –  仮に、ヒロシさんが管理理するデータベースがメンテナンス中でも、 ユウタさんは気にせず作業してOK ユウタさん 得意のJavaでマルチスレッドでSQS にデータを⾼高速に投⼊入! AWS  SDKを使えば実装は簡単☺ ヒロシさん メッセージ内容の精査や画像チェックなどの 処理理が重いので、2つのインスタンスで! データベースの負荷を⾒見見ながらループの間隔 を調整出来るようにしておく マルチスレッドで投⼊入 メッセージ取得 データベースの負荷に 合わせた間隔で登録 Java PHP PHP
  10. 10. Amazon  SQSをはじめるのは簡単です •  Management  Console編
  11. 11. Amazon  SQSをはじめるのは簡単です •  Management  Console編  –  キューの作成
  12. 12. Amazon  SQSをはじめるのは簡単です •  Management  Console編  –  キューの作成:  キューの名前を⼊入⼒力力
  13. 13. Amazon  SQSをはじめるのは簡単です •  Management  Console編  –  メッセージの送信
  14. 14. Amazon  SQSをはじめるのは簡単です •  Management  Console編  –  メッセージの送信
  15. 15. Amazon  SQSをはじめるのは簡単です •  Management  Console編  –  メッセージの受信:  ブラウザ上でポーリング
  16. 16. Amazon  SQSをはじめるのは簡単です •  Management  Console編  -‐‑‒  メッセージの受信:  Message  Bodyの表⽰示
  17. 17. Amazon  SQSをはじめるのは簡単です •  Management  Console編  -‐‑‒  メッセージの削除
  18. 18. Amazon  SQSをはじめるのは簡単です •  Management  Console編  -‐‑‒  キューの削除
  19. 19. Amazon  SQSを使う上で覚えておきたい識識別⼦子 •  Queue  URL –  キューを作成する際に払い出されるURL –  https://リージョン.queue.amazonaws.com/アカウントID/キュー名 •  Message  ID –  システムで割り当てられたID •  Receipt  Handle –  メッセージの削除やVisibilityの変更更に使⽤用 –  メッセージを受信する際に取得 •  受信されたメッセージのみ削除やVisibilityの変更更が可能 –  同じメッセージを受信する度度に異異なる→最新のものをつかうこと
  20. 20. Amazon  SQSをはじめるのは簡単です •  AWS  CLI編 –  キューの作成 $  aws  sqs  create-‐‑‒queue  -‐‑‒-‐‑‒queue-‐‑‒name  blackbelt2015 {        “QueueUrl”:  “https://リージョン.queue.amazonaws.com/アカウントID/blackbelt2015" }
  21. 21. Amazon  SQSをはじめるのは簡単です •  AWS  CLI編 –  キューの作成:  作成されたことを確認 $  aws  sqs  list-‐‑‒queues {        "QueueUrls":  [                “https://リージョン.queue.amazonaws.com/アカウントID/blackbelt2015"        ] }
  22. 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. 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. 24. Amazon  SQSをはじめるのは簡単です •  AWS  CLI編 –  メッセージの削除 aws  sqs  delete-‐‑‒message   -‐‑‒-‐‑‒queue-‐‑‒url  https://リージョン.queue.amazonaws.com/アカウントID/blackbelt2015   -‐‑‒-‐‑‒receipt-‐‑‒handle  "AQEBv3p27X8o44Nt4J0  〜~略略〜~  +8lujWoy6Ks="
  25. 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. 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. 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. 28. Amazon  SQSのコスト •  無料料利利⽤用枠 –  (SQSご利利⽤用全ユーザー)  毎⽉月100万キューイングリクエストまで無料料 •  SQSリクエスト100万件につき0.476  USD –  複数メッセージを1つのリクエストとしてバッチ送信することも可能 •  データ転送 –  送信(アウト) •  最初の1GB/⽉月:0  USD 〜~略略〜~ •  次の350TBまで  /⽉月:0.120  USD  GBあたり •  350TBを越える場合の価格はお問い合わせください •  同⼀一リージョン内のSQSとEC2インスタンスのデータ転送は無料料
  29. 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. 30. Amazon SQS 効率率率良良くAmazon  SQSを使う •  Visibility  Timeoutとは –  メッセージ受信者が複数の場合 送信 受信1 受信2 受信3
  31. 31. Amazon SQS 効率率率良良くAmazon  SQSを使う •  Visibility  Timeoutとは –  受信1がメッセージを取得 送信 受信1 受信2 受信3
  32. 32. Amazon SQS 効率率率良良くAmazon  SQSを使う •  Visibility  Timeoutとは –  30秒間(デフォルト設定。変更更可能。最⼤大12時間)、受信2と受信 3にはメッセージを⾒見見せない(in  Flight) 送信 受信1 受信2 受信3 X X
  33. 33. Amazon SQS 効率率率良良くAmazon  SQSを使う •  Visibility  Timeoutとは –  受信1がキューからメッセージを削除せず、タイムアウトした場 合はどの受信サーバーからもメッセージが受信可能に 送信 受信1 受信2 受信3
  34. 34. 効率率率良良くAmazon  SQSを使う •  Amazon  EC2  –  Spot  Instances –  Amazon  EC2  の価格をお客様が指定できるシステム –  ⼊入札価格がその時点のスポット価格を上回っていれば、インスタンス を実⾏行行できる •  スポット価格は、需要と供給の関係に基づいてリアルタイムで変動 •  スポット価格は⼀一般的に、オンデマンド価格を⼤大幅に下回る (2015年年3⽉月時点で、平均で約8割下回っている) –  「⼊入札額  >=  スポット価格」なら指定したインスタンスが起動 –  「⼊入札額  <  スポット価格」となるとインスタンスがターミネート –  1時間未満の使⽤用料料は課⾦金金されない
  35. 35. 効率率率良良くAmazon  SQSを使う •  Visibility  Timeout  +  EC2  Spot  Instances –  Spot  Instanceを使っていて、受信1がターミネートされても、 Visibility  Timeout後に他のインスタンスが処理理すれば良良い –  コスト削減効果:  ⼤大 Amazon SQS 送信 受信1 受信2 受信3
  36. 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. 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. 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. 39. 効率率率良良くAmazon  SQSを使う •  クライアントサイドでのバッファリング –  AWS  SDK  for  Java  の  AmazonSQSAsyncClient  を利利⽤用 –  最⼤大10リクエストのバッファリング処理理を簡単に実現可能 –  下記のパラメータを設定し微調整することが可能 •  maxBatchOpenMs:  最⼤大待ち時間をミリ秒単位で指定 •  maxBatchSize:  1回のリクエストのメッセージの最⼤大数を指定
  40. 40. 効率率率良良くAmazon  SQSを使う •  Long  Polling –  受信者が頻繁にSQSに対してReceive  Messageコールをするとリク エスト回数がかさみ、コスト効率率率がよくない –  “メッセージが取得出来るまで”待つ時間を設定できる(0秒から20秒)
  41. 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. 42. 前回のWebinar以降降にローンチされた機能の紹介 •  SQS  Message  Attributes •  AWS  CloudTrail対応 •  Delete  All  Messages  in  SQS  Queue •  SQS  Client  Library  for  Java  Messaging  Service  (JMS)
  43. 43. 前回のWebinar以降降にローンチされた機能の紹介 •  Message  Attributes  –  2014年年5⽉月6⽇日 –  メッセージBodyとは別に属性を10個まで定義可能に –  属性はName、Type(String/Number/Binary)、Valueで定義 •  Typeはカスタム可能(例例:  float,  int)
  44. 44. 前回のWebinar以降降にローンチされた機能の紹介 •  AWS  CloudTrail対応  –  2014年年7⽉月16⽇日 –  キューの設定変更更等に関するAPIコールのログをS3に保存 –  CloudTrailは2014年年7⽉月から東京リージョンで利利⽤用可能
  45. 45. 前回のWebinar以降降にローンチされた機能の紹介 •  Delete  All  Messages  in  SQS  Queue  –  2014年年12⽉月8⽇日 –  PurgeQueue  アクションでキュー内のメッセージの⼀一括削除が可能に
  46. 46. 前回のWebinar以降降にローンチされた機能の紹介 •  SQS  Client  Library  for  Java  Messaging  Service  (JMS)  –  2014 年年12⽉月29⽇日 –  JMS:  Javaでメッセージングサービスを利利⽤用するための標準API –  SQSをJMSプロバイダーとして利利⽤用可能に •  ご⾃自⾝身でJMSクラスタサーバーの保守運⽤用が不不要に!
  47. 47. Amazon  SQSを使う上での注意点 •  Amazon  SQSは⾼高い可⽤用性と信頼性を実現した分散システム •  順序はベストエフォート •  出来る限り順序を維持しようとするが保証しない •  タイムスタンプやシーケンス番号をメッセージに •  同じメッセージを複数回受信する可能性がある(少なくとも1回の配信) •  SQSはメッセージを複数のサーバ/データセンタに保持 •  メッセージ削除時にサーバが⼀一時故障中の場合、復復旧後に受信され る可能性がある •  同じメッセージを複数回処理理した場合に悪影響を出さないように、 冪等性を意識識したアプリケーションの設計を⾏行行う
  48. 48. Amazon  SQSの上限 •  メッセージ保持期限 •  削除されないメッセージはデフォルトで4⽇日間保持。保持期間は60秒 から14⽇日の間で変更更可能 •  In  Flight(受信されたメッセージ&Visibility  Timeout内)メッセージ •  1つのキューごとに最⼤大120,000In  Flightメッセージ •  超えるとOverLimitエラー •  メッセージの最⼤大サイズは256KB •  2013年年6⽉月に64KB→256KBに •  画像やムービー等の⼤大容量量データには適していない –  S3に配置しメッセージ内にそのパスを記述
  49. 49. 現場で使える実践的な機能 •  時間をおいてからメッセージを⾒見見せたい •  Delay  Queue  と  Message  Timers •  何度度受信されてもキューに残り続けるメッセージをなんとかしたい •  Dead  Letter  Queue •  SQS  を使って簡単にスケーラブルなバッチ処理理基盤を構築したい •  Elastic  Beanstalk:  Worker  Tier •  セキュリティ •  AWS  Identity  and  Access  Management  (IAM)連携 •  モニタリング •  CloudWatchでの監視
  50. 50. 時間をおいてからメッセージを⾒見見せたい •  Delay  Queue –  キューに送られた新しいメッセージをある⼀一定秒の間⾒見見えなくする –  0〜~900秒で設定 –  設定すると、そのキューに送信されるメッセージ全てに適⽤用
  51. 51. 時間をおいてからメッセージを⾒見見せたい •  Message  Timers –  個々のメッセージに対して、送信されてから⾒見見えるようになるまで の時間を設定 –  0〜~900秒で設定 –  Message  TimersはDelay  Queueの遅延時間の設定を上書き Send  Message   Request Delay  Queue  30秒 Message  Timers  60秒 メッセージが⾒見見え るようになる時間
  52. 52. キューに残り続けるメッセージをなんとかしたい •  Dead  Letter  Queue –  メッセージを、指定回数(1〜~1000で指定)受信後に、⾃自動で別の キュー(Dead  Letter  Queue)に移動する機能 –  デフォルトは無効0〜~900秒で設定 ①メッセージ受信 ②タスク失敗 ③メッセージが削除されず キューに残り続ける ④指定回数受信 後に移動 キュー Dead  Letter  Queue
  53. 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. 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. 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. 56. モニタリング •  CloudWatchでの監視 •  利利⽤用可能メトリクス NumberOfMessageSent キューに追加されたメッセージ数 SentMessageSize キューに追加されたメッセージの合計サイズ NumberOfMessageReceived ReceiveMessageコールによって返されたメッセージ数 NumberOfEmptyReceives ReceiveMessageによって返さなかったメッセージ数 NumberOfMessagesDeleted キューから削除されたメッセージ数 ApproximateNumberOfMessageDelayed Delayされすぐに読み込みができなかったメッセージ数。Delay  Queueまたは メッセージ送信時のDelay設定によるもの ApproximateNumberOfMessageVisible キューから利利⽤用可能になったメッセージ数 ApproximateNumberOfMessageNotVisible クライアントから送信されたが削除されていないか、visibility  winodowのendま で到達していないメッセージ数
  57. 57. アジェンダ •  Amazon  Simple  Queue  Service  (SQS) •  Amazon  Simple  Notification  Service  (SNS) •  SQSとSNSを組み合わせた構成 •  まとめ
  58. 58. Amazon  Simple  Notification  Service  (SNS) •  Amazon  SNSはマルチプロトコルに対応したフルマネージド通知サービス Publish 1.Topicに メッセージを送信 2.  マルチプロトコルで通知 Amazon  SNS Publisher Topic HTTP(S) EMAIL SQS Mobile Push Subscriber
  59. 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. 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. 61. Amazon  SNSをはじめるのは簡単です •  Management  Consoleでは  Mobile  Services  の中に
  62. 62. Amazon  SNSをはじめるのは簡単です 1.  Topicの作成 2.  TopicをSubscribe 3.  Topicへ向けてメッセージをPublish
  63. 63. Amazon  SNSをはじめるのは簡単です 1.  Topicの作成 –  TopicのARN(Amazon  Resource  Name)が⽣生成される。リトライポリシー等も設定可能
  64. 64. Amazon  SNSをはじめるのは簡単です 2.  TopicのSubscribe –  プロトコルを選択 –  Endpoint側でConfirmすることでメッセージ送信可能に
  65. 65. Amazon  SNSをはじめるのは簡単です 3.  Topicへ向けてメッセージをPublish –  ブラウザからPublish –  メッセージの受信(プロトコルでEmailを選択した場合)
  66. 66. Amazon  Simple  Notification  Service  (SNS) •  AWSの様々なサービスと連携して通知可能 –  利利⽤用例例 •  Amazon  CloudWatch –  Billing  Alertの通知 •  Amazon  SES –  Bounce/Complaintのフィードバック通知 •  Amazon  S3 –  ファイルがアップロードされた時の通知 •  Amazon  Elastic  Transcoder –  動画変換処理理完了了/失敗時の通知
  67. 67. Amazon  SNSと他サービスの連携 •  Amazon  CloudWatchのBilling  Alertの通知
  68. 68. Amazon  SNSと他サービスの連携 •  Amazon  SESのBounce/Complaintのフィードバック通知
  69. 69. Amazon  SNSと他サービスの連携 •  Amazon  S3にファイルがアップロードされた時の通知
  70. 70. Amazon  SNSと他サービスの連携 •  Amazon  Elastic  Transcoderでの動画変換処理理完了了/失敗時の通知
  71. 71. •  HTTPS  enhancements –  Server  Name  Indication  (SNI)  サポート –  Basic認証  および  Digest認証のサポート •  Message  Attributes •  Time  To  Live  (TTL)  サポート 前回のWebinar以降降にローンチされた機能の紹介
  72. 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. 73. •  Message  Attributes  –  2014年年6⽉月12⽇日 –  String,  Number,  Binaryの属性をサポート –  Mobile  Push⽤用Reserved  Message  Attributes •  Baidu •  MPNS •  WNS 前回のWebinar以降降にローンチされた機能の紹介
  74. 74. •  TTLサポート  –  2014年年7⽉月10⽇日 –  Time  To  Live •  メッセージ単位で⽣生存期間を設定 –  ⽣生存期間が過ぎて配信されていないメッセージは削除 •  例例えば、⾶飛⾏行行機を降降りた後に受け取る、既に終わったフラッ シュセールのメッセージ 前回のWebinar以降降にローンチされた機能の紹介
  75. 75. アジェンダ •  Amazon  Simple  Queue  Service  (SQS) •  Amazon  Simple  Notification  Service  (SNS) •  SQSとSNSを組み合わせた構成 •  まとめ
  76. 76. •  Cloud  Design  Pattern:  Fanoutパターン –  http://aws.clouddesignpattern.org/index.php/CDP:Fanoutパターン SQSとSNSを組み合わせた構成
  77. 77. •  画像をフォームからアップロードして登録 –  画像ファイルはS3 –  画像のコメントはRDS –  画像のメタデータはDynamoDB SQSとSNSを組み合わせた構成 ①リクエストを受けた WebアプリはSNSトピックへ ②SNSから それぞれのSQSキューへ Amazon  S3 Amazon  RDS DynamoDB ③SQSキューからパラレルにそれぞれのデータストアへ
  78. 78. •  画像をフォームからアップロードして登録 –  画像ファイルはS3 –  画像のコメントはRDS  ←  ボトルネックであることが発覚したら… –  画像のメタデータはDynamoDB SQSとSNSを組み合わせた構成 ①リクエストを受けた WebアプリはSNSトピックへ ②SNSから それぞれのSQSキューへ Amazon  S3 Amazon  RDS DynamoDB ③SQSキューからパラレルにそれぞれのデータストアへ スケールアップ&アウト
  79. 79. •  SNS→SQSは無料料です –  リクエスト単価(64  KB  のチャンク毎に  1リクエストとして課⾦金金) •  Simple  Queue  Service(SQS):  無料料 SQSとSNSを組み合わせた構成 ①リクエストを受けた WebアプリはSNSトピックへ ②SNSから それぞれのSQSキューへ Amazon  S3 Amazon  RDS DynamoDB ③SQSキューからパラレルにそれぞれのデータストアへ
  80. 80. アジェンダ •  Amazon  Simple  Queue  Service  (SQS) •  Amazon  Simple  Notification  Service  (SNS) •  SQSとSNSを組み合わせた構成 •  まとめ
  81. 81. •  Amazon  SQS –  信頼性が⾼高く、スケーラビリティに優れ、⼗十分に管理理されたメッ セージキューサービス –  簡単にコスト効率率率良良く、疎結合で柔軟なシステムを構築することが できる •  Amazon  SNS –  信頼性が⾼高く、スケーラビリティに優れ、⼗十分に管理理されたプッ シュメッセージングサービス –  簡単にコスト効率率率良良く、マルチプロトコルで通知ができる –  AWSの様々なサービスと連携して通知可能 まとめ
  82. 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. 83. Webinar資料料の配置場所 •  AWS  クラウドサービス活⽤用資料料集 –  http://aws.amazon.com/jp/aws-‐‑‒jp-‐‑‒introduction/
  84. 84. 公式Twitter/Facebook AWSの最新情報をお届けします @awscloud_̲jp 検索索 最新技術情報、イベント情報、お役⽴立立ち情報、お得なキャンペーン情報などを ⽇日々更更新しています! もしくは http://on.fb.me/1vR8yWm

×