SimpleDB, SQS, SNS詳細 - AWSマイスターシリーズ

10,240 views

Published on

SimpleDB, SQS, SNS詳細 - AWSマイスターシリーズ

  1. 1. AWSマイスターシリーズ SQS, SNS, SimpleDB 2011 12月15日 大谷 晋平 (@shot6 ) ソリューションアーキテクト
  2. 2. AWSマイスターシリーズ Simple Queue Service 2011 12月15日 大谷 晋平 (@shot6 ) ソリューションアーキテクト
  3. 3. アジェンダSQSとはSQSの機能SQSの使いどころQ&A
  4. 4. SQS(Simple Queue Service)とは AWSの隠し技
  5. 5. SQS(Simple Queue Service)とは 分散キューサービス AWSをスケールアウトして使うためのキーコ ンポーネント 2006
  6. 6. 何故キューが必要か?“分割できないものは、スケール出来ない” by Randy Shoup(eBay) スケールするには疎結合なアーキテクチャに する必要がある 非同期通信
  7. 7. SQSの機能 “分散”キューサービス シンプルなAPI、SDKから直接使える
  8. 8. 分散キューサービスメッセージは自動的に複数DC間でレプリケーションされる メッセージロストを防ぐ Persistent Message自分で高い耐障害性を持つキューシステムを構築するのは困難
  9. 9. シンプルなAPIとSDK CreateQueue SendMessage ReceiveMessage ChangeMessageVisibility DeleteMessage SDKはJava/.NET/PHP/Ruby
  10. 10. 動作イメージ 1.キューの作成/4.キューの削除 (http://sqs.ap-northeast-1.amazonaws.com/123456789012/queue2) 3.メッセージ受信2.メッセージ送信 メッセージ受信者メッセージ送信者 (Reader(Writer or Consumer)or Producer)
  11. 11. メッセージの到達保障 1.キューの作成/4.キューの削除 (http://sqs.ap-northeast-1.amazonaws.com/123456789012/queue2) 3.メッセージ受信2.メッセージ送信 Visibility Timeout
  12. 12. Visibility Timeoutとは Readerがメッセージを受信した場合 に、ある一定期間その他のReaderが メッセージ自体はユーザが明示的に 消さない限り残存する(最大2週間)
  13. 13. Visibility Timeoutとは(2) あるReader-Aが あるReader-Dが メッセージ1を依頼 あるReader-Bが あるReader-Cが メッセージ1を依頼 依頼 依頼 メッセージは メッセージは 返却されない 返却されない メッセージの返却 削除されてい ない場合 (メッセージの 返却) この間にReader-Aは、
  14. 14. At-Least-Once delivery メッセージは複数DCにコピーデメリット:稀に複数回メッセージが届くこともある 複数回届く前提
  15. 15. メッセージサンプリングメッセージは送信後すぐに取れるとは限らない 受信リクエストを送り続ければ取れるイベンチュアルコンシステンシ前提 メッセージの SQSキューの分散 受信者 されたサーバ群 サンプリングした サーバからメッ セージを順次返却 (メッセージEが含 まれていない) サンプリング 対象サーバ (グレー)
  16. 16. 月間100,000 requestまで価格10,000リクエストあたり$0.01データトランスファーはAWSから外部に送出する場合に限り、$0.201/GB
  17. 17. 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"}]}
  18. 18. SQSの制約メッセージの順序性は保証しないメッセージの保存は最大2週間までメッセージのサイズは64KBまでキュー内に入るメッセージ数には制限なしキュー名は80文字まで
  19. 19. 最近のSQS機能追加 CloudWatchによるメトリクス監視 AutoScalingと組み合わせやすく ディレイキュー メッセージタイマー バッチAPI
  20. 20. SQSをいつ使うか?AWSクラウド内での疎結合アーキテクチャを採用したい場合 コンポーネント間の依存関係を減 らしたいAWSクラウドとオンプレミスの間でのやり取りのインタフェース →
  21. 21. 顧客はいつSQSを使っているか? ハイブリッド オンプレミスとAWSクラウド クラウド連携 連携 Webアプリケー 等のシステム間の疎結合なやり ション/SaaS ビッグデータや EMRやAWSクラウドの
  22. 22. SQSまとめ AWSが提供するキューサービス 分散キューのためスケールする 高い耐障害性 シンプルにすぐに使える セキュア 低コスト
  23. 23. AWSマイスターシリーズ Simple NotificationService 2011 12月15日 大谷 晋平 (@shot6 ) ソリューションアーキテクト
  24. 24. アジェンダSNSとはSNSの機能SNSの使いどころQ&A
  25. 25. SNS(Simple NotificationService)とは AWSの小道具
  26. 26. SNSとは クラウド上の通知サービス 簡単に使えて、マルチプロトコルえる
  27. 27. SNSの機能様々なプロトコルに対応した通知プラットフォーム メール、SQSキュー、HTTP/HTTPSコ ールバック、SMS シンプルなAPI/SDK プッシュベースアーキテクチャ 非常に低価格
  28. 28. 動作イメージ 1.トピックの作成/5.トピックの削除 2.トピック購読3.メッセージ配信 4.メッセージ受信メッセージ配信者 メッセージ購読者(Publisher) (Subscriber)
  29. 29. 様々なプロトコルを通じたアプリケーション間のフックに使う AWSクラウド上のアプリケーション S3 ファイル SNSジョブ &
  30. 30. S3上からファイルが削除されたときをフック AWSクラウド上のアプリケーションユーザが削除 S3 削除通知依頼 SNS 削除されたことを通知
  31. 31. SQSとSNSの違い SQSはポーリングモデル 1:1コミュニケーション Producer-Consumer SNSはプッシュモデル 1:Nコミュニケーション Publisher-Subscriber
  32. 32. 月間100,000 requestまで価格100,000リクエストあたり$0.06HTTPは100,000あたり$0.06メールは100,000通あたり$2.0100SMSあたり、$0.75SQSにはチャージなし
  33. 33. SNSの制約 最大1アカウント100トピックまで メッセージは最大8KBまで
  34. 34. SNSまとめ クラウド上の通知サービス 簡単に使えて、マルチプロトコルえる
  35. 35. AWSマイスターシリーズ SimpleDB 2011 12月15日 大谷 晋平 (@shot6 ) ソリューションアーキテクト
  36. 36. SimpleDBとは AWSの
  37. 37. アジェンダSimpleDBが出てきた背景SimpleDBとはSimpleDBの機能SimpleDBの使いどころQ&A
  38. 38. One Size Does Not Fit All RDBMSが全てではない EC2+EBSまたはRDSは汎用的 より目的特化なデータベース ケールさせる 低コスト
  39. 39. SimpleDBの出てきた背景 RDBMSが全てではない EC2+EBSまたはRDSは汎用的 目的特化型サービス NoSQL 低コスト
  40. 40. SimpleDBの出てきた背景 多くのアプリケーションでRDBMSの高機能が必要ない場合がある 複雑なトランザクション 複雑なジョイン シンプルにデータを永続化したい データモデルの制約
  41. 41. SimpleDBとは AWS独自のNoSQLデータベース スケーラブル 高い可用性・高い耐障害性 データは複数DCに自動レプリケーション データは自動インデクシング 柔軟なデータモデル 圧倒的に低コスト
  42. 42. SimpleDBの位置づけ CAP 一貫性(C)、可用性(A) 、ネット ワーク分断耐性(P)のうち、分散 環境では実質上ネットワーク分断 耐性が必須のため、一貫性か可用 性のどちらかを取らなくてはいけ ない。
  43. 43. SimpleDBのデータモデル ドメイン アイテムを保持する器=テーブル アイテム アトリビュートを保持する1 アトリビュート アイテム内にあるKey-Valueまたは Key-[Value]
  44. 44. SimpleDBのデータモデル
  45. 45. SimpleDBの書き込み トランザクションは1アイテムのみ 複数アイテムの同時書き込みにはトランザクシ ョンはかけられない ConditionalPut 現在の値がXXX 楽観的
  46. 46. SimpleDBの読み込み イベンチュアルコンシステンシな読み込み デフォルト パフォーマンス重視 低レイテンシ、高スループット 読み込みの一貫性がない可能性がある 大体1 一貫性のある読み込み 比較的低いパフォーマンス ただしデータは一貫している ConsistentRead = trueオプション
  47. 47. SimpleDBで出来る操作 ドメインへの操作 CreateDomain/DeleteDomain/ListDomains アイテム/アトリビュートの追加 PutAttributes/BatchPutAttributes アイテム/アトリビュートの削除 DeleteAttributes/BatchDeleteAttributes アイテム/アトリビュートの GetAttributes/Select
  48. 48. SimpleDBでSelect SQLライクなシンプルなクエリが書ける select Year from ‘mydb’ where ItemName() = ‘Akio レンジクエリ select Name, category, Year from `mydb` where every(Year) Between 2005 and 2008 =, !=, >, <, >=, <=などの演算子 like, not like, in, between, inなどの演算子 order by count
  49. 49. RDBMSとSimpleDBの違いRDBMS SimpleDB 事前定義したスキーマ スキーマフリー コスト高い コスト低い 1台で稼働する事が前提 オートスケール SQLによるアクセス SQLライクなクエリ リニアにはスケールしない スケールする トランザクションあり トランザクションなし インデックスは明示的 自動インデックス 構造化データ 半構造化データ 汎用的 やや目的特化型
  50. 50. SimpleDBの制約 ドメインサイズ -> 10GB/domain or 10億アトリビュート ドメイン名 -> 3-255(a-zA-Z0-9_-.) characters 1アカウント100ドメインまで 1アイテム256アトリビュートまで アトリビュートのname/value < 1024 bytes < 1024 bytes 1回のPutAttributesで登録できるのは256個まで 1回のSelectで できるアトリビュートは256個まで 1回のSelect 2500まで 1 5秒まで 1回のレスポンスサイズは1024 bytesまで
  51. 51. SimpleDBをスケールさせるためには?スケールアウトデザインがフィットする 書き込みをスケール→シャーディング 読み込みをスケール→データ構造/クエリの工夫SimpleDBストする • キーの設計がとても重要
  52. 52. SimpleDBのベストプラクティス ソート ソートのため、数値データは0パディングしてやる 日付はISO 8601フォーマットを使う Selectクエリ WHERE • Name=“Firstname:Lastname” AND LIMITを設定し、レンジクエリを極小化する。LIMIT 2500など
  53. 53. SimpleDBのベストプラクティス シャーディング 書き込みのスループットを上げるため 一貫性 • イベンチュアルコンシステンシ • read-after-writeコンシステンシ 書き込みはなるべく非同期書き込み or ConditionalPutを使う パフォーマンス BatchPutまたはBatchDeleteをデフォルト使う • 25アイテムの書き込みで20-25%
  54. 54. SimpleDBのベストプラクティス 巨大データの扱い BLOB的に使うのではなくS3に保存して、ポインタを SimpleDBに保存する • 2ホップかかるがわかりやすい データを分割し、複数のアトリビュートに圧縮して 押し込める • 1ホップだが複雑 設計 データは非正規化する前提 スキーマフリーな点を有効に使う • 分割によるスケールメリット
  55. 55. SimpleDBの価格 $0.162/hour データトランスファー アウトバウンドは$0.201/GBから $0.29/GB SimpleDB ただし先ほどのような制約がある
  56. 56. SimpleDBをいつ使うか? シンプルなクエリだがスケールが求められる場合 い場合 銀の弾丸ではない ユニークキーによる分散が簡単に出来て、スケールアウ トさせやすいケースの場合 たい場合 低コストでデータベースを持ちたい場合 高い可用性とスケーラビリティが必要な場合
  57. 57. SimpleDBで顧客は何を動かしているか?オンラインゲームプラットフォームS3のコンテンツのインデックス設定ファイルなどの置き場所ソーシャルデータの蓄積マイニングデータの解析結果のストア EMRと連携はしないのか?
  58. 58. まとめAWS独自のNoSQLデータベーススケーラブル高い可用性・高い耐障害性 データは自動レプリケーション、インデクシ ング柔軟なデータモデル圧倒的に低コスト
  59. 59. SQS、SNS、SimpleDBを通じてAWS SシリーズはAWSクラウドをよりよく使うためのコンポーネント SQS=疎結合を提供する SNS=プロトコル非依存な通知 SimpleDB=簡単に使えるDB

×