simpledb, sqs, sns詳細 - awsマイスターシリーズ

63
AWSマイスターシリーズ SQS, SNS, SimpleDB201112月15日 大谷 晋平 (@shot6 ) ソリューションアーキテクト

Upload: -ken-tamagawa-amazon-web-services

Post on 14-Jan-2015

7.413 views

Category:

Documents


2 download

DESCRIPTION

 

TRANSCRIPT

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

AWSマイスターシリーズ〜SQS, SNS, SimpleDB〜

2011年12月15日大谷 晋平 (@shot6 )ソリューションアーキテクト

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

AWSマイスターシリーズ〜Simple Queue Service〜

2011年12月15日大谷 晋平 (@shot6 )ソリューションアーキテクト

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

アジェンダSQSとはSQSの機能SQSの使いどころQ&A

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

SQS(Simple Queue Service)とは

AWSの隠し技

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

SQS(Simple Queue Service)とは分散キューサービス� AWSをスケールアウトして使うためのキーコ

ンポーネント� 最低⼀度は届くことを保証信頼性が⾼く、すぐに使えて、管理者不要、低コスト2006年よりある最古参サービス

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

何故キューが必要か?“分割できないものは、スケール出来ない” by Randy Shoup(eBay)� スケールするには疎結合なアーキテクチャに

する必要がある� 疎結合アーキテクチャに非同期通信が不可⽋� 非同期通信の典型例がキューシステム

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

SQSの機能“分散”キューサービス最低⼀度のメッセージ到達保障シンプルなAPIキューシステムのインストール不要

、SDKから直接使える

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

分散キューサービスメッセージは自動的に複数DC間でレプリケーションされる�メッセージロストを防ぐ�Persistent Message自分で高い耐障害性を持つキューシ

ステムを構築するのは困難

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

シンプルなAPIとSDKCreateQueueSendMessageReceiveMessageChangeMessageVisibilityDeleteMessageバッチ処理SDKはJava/.NET/PHP/Ruby

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

動作イメージ1.キューの作成/4.キューの削除(http://sqs.ap-northeast-1.amazonaws.com/123456789012/queue2)

管理者

メッセージ送信者(Writeror Producer)

2.メッセージ送信

メッセージ受信者(Readeror Consumer)

3.メッセージ受信

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

メッセージの到達保障1.キューの作成/4.キューの削除(http://sqs.ap-northeast-1.amazonaws.com/123456789012/queue2)

管理者

2.メッセージ送信 3.メッセージ受信

VisibilityTimeout

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

Visibility TimeoutとはReaderがメッセージを受信した場合

に、ある一定期間その他のReaderがメッセージは⾒えなくなるメッセージ自体はユーザが明示的に

消さない限り残存する(最大2週間)

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

Visibility Timeoutとは(2)あるReader-Aがメッセージ1を依頼 あるReader-Dが

メッセージ1を依頼あるReader-Bが依頼

あるReader-Cが依頼

メッセージは返却されない

メッセージは返却されない

メッセージの返却 削除されていない場合(メッセージの返却)

この間にReader-Aは、・受信したメッセージを処理する・処理出来たらメッセージを削除する

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

最低⼀度のメッセージ到達保障At-Least-Once delivery�メッセージは複数DCにコピー�堅牢性・耐障害性にフォーカスデメリット:稀に複数回メッセージ

が届くこともある�メッセージの状態管理�複数回届く前提

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

メッセージサンプリングメッセージは送信後すぐに取れるとは限らない� 受信リクエストを送り続ければ取れるイベンチュアルコンシステンシ前提

サンプリングしたサーバからメッセージを順次返却(メッセージEが含まれていない)

メッセージの受信者

SQSキューの分散されたサーバ群

サンプリング対象サーバ(グレー)

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

開発者に優しい無料枠と価格月間100,000 requestまで無料価格� 10,000リクエストあたり$0.01�データトランスファーはAWSから外部に送出する場合に限り、$0.201/GBから課⾦

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

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"

} ] }

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

SQSの制約メッセージの順序性は保証しないメッセージの保存は最大2週間までメッセージのサイズは64KBまでキュー内に入るメッセージ数には制

限なしキュー名は80文字まで

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

最近のSQS機能追加CloudWatchによるメトリクス監視� AutoScalingと組み合わせやすくマネージメントコンソールから利⽤可能にディレイキューメッセージタイマーバッチAPI

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

SQSをいつ使うか?AWSクラウド内での疎結合アーキテ

クチャを採用したい場合�コンポーネント間の依存関係を減らしたい

AWSクラウドとオンプレミスの間でのやり取りのインタフェース�受諾と処理→結果の送信の分離

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

顧客はいつSQSを使っているか?

Webアプリケーション/SaaS

ビッグデータやバッチ処理

ハイブリッドクラウド連携 オンプレミスとAWSクラウド

連携

EMRやAWSクラウドのその他サービスとの連携に利⽤

イメージ処理、インデクシング等のシステム間の疎結合なやり取りに利⽤

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

SQSまとめAWSが提供するキューサービス�最低⼀度は届くことを保証�分散キューのためスケールする�高い耐障害性�シンプルにすぐに使える�セキュア�低コスト

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

AWSマイスターシリーズ〜Simple NotificationService〜

2011年12月15日大谷 晋平 (@shot6 )ソリューションアーキテクト

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

アジェンダSNSとはSNSの機能SNSの使いどころQ&A

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

SNS(Simple Notification Service)とは

AWSの小道具

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

SNSとはクラウド上の通知サービス簡単に使えて、マルチプロトコル従量課⾦制で非常に安いインストール・管理不要ですぐに使

える

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

SNSの機能様々なプロトコルに対応した通知プ

ラットフォーム� メール、SQSキュー、HTTP/HTTPSコ

ールバック、SMSシンプルなAPI/SDKプッシュベースアーキテクチャ非常に低価格

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

動作イメージ1.トピックの作成/5.トピックの削除管理者

メッセージ配信者(Publisher)

3.メッセージ配信

メッセージ購読者(Subscriber)

2.トピック購読

4.メッセージ受信

Page 29: SimpleDB, SQS, SNS詳細 - AWSマイスターシリーズ
Page 30: SimpleDB, SQS, SNS詳細 - AWSマイスターシリーズ
Page 31: SimpleDB, SQS, SNS詳細 - AWSマイスターシリーズ
Page 32: SimpleDB, SQS, SNS詳細 - AWSマイスターシリーズ

利⽤⽤途様々なプロトコルを通じたアプリケ

ーション間のフックに使うAWSクラウド上のアプリケーション

S3ファイル

SNS完了通知依頼

ジョブ 完了通知&ジョブ実⾏

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

利⽤⽤途S3上からファイルが削除されたとき

をフックAWSクラウド上のアプリケーション

S3

SNS削除通知依頼

削除されたことを通知

ユーザが削除

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

SQSとSNSの違いSQSはポーリングモデル� 1:1コミュニケーション� Producer-ConsumerSNSはプッシュモデル� 1:Nコミュニケーション� Publisher-Subscriber

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

開発者に優しい無料枠と価格月間100,000 requestまで無料価格� 100,000リクエストあたり$0.06�HTTPは100,000あたり$0.06�メールは100,000通あたり$2.0� 100SMSあたり、$0.75� SQSにはチャージなし

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

SNSの制約最大1アカウント100トピックまでメッセージは最大8KBまで

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

SNSまとめクラウド上の通知サービス簡単に使えて、マルチプロトコル従量課⾦制で非常に安いインストール・管理不要ですぐに使

える

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

AWSマイスターシリーズ〜SimpleDB〜

2011年12月15日大谷 晋平 (@shot6 )ソリューションアーキテクト

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

SimpleDBとは

AWSの裏ワザ

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

アジェンダSimpleDBが出てきた背景SimpleDBとはSimpleDBの機能SimpleDBの使いどころQ&A

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

One Size Does Not Fit AllRDBMSが全てではない�EC2+EBSまたはRDSは汎用的より目的特化なデータベース�シンプルな利⽤例でより簡単にスケールさせる

�管理者不要�低コスト

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

SimpleDBの出てきた背景RDBMSが全てではない�EC2+EBSまたはRDSは汎用的目的特化型サービス�NoSQL�管理者不要�低コスト

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

SimpleDBの出てきた背景多くのアプリケーションで

RDBMSの高機能が必要ない場合がある�複雑なトランザクション�複雑なジョイン�シンプルにデータを永続化したい�データモデルの制約

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

SimpleDBとはAWS独自のNoSQLデータベース管理者不要スケーラブル高い可用性・高い耐障害性� データは複数DCに自動レプリケーション� データは自動インデクシング柔軟なデータモデル圧倒的に低コスト

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

SimpleDBの位置づけCAP定理�一貫性(C)、可用性(A) 、ネットワーク分断耐性(P)のうち、分散環境では実質上ネットワーク分断耐性が必須のため、一貫性か可用性のどちらかを取らなくてはいけない。

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

SimpleDBのデータモデルドメイン� アイテムを保持する器=テーブルアイテム� アトリビュートを保持する1⾏アトリビュート� アイテム内にあるKey-Valueまたは

Key-[Value]

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

SimpleDBのデータモデル

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

SimpleDBの書き込みトランザクションは1アイテムのみ複数アイテムの同時書き込みにはトランザクションはかけられないConditionalPut� 現在の値がXXXの場合のみ、データを更新� 楽観的並⾏制御

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

SimpleDBの読み込みイベンチュアルコンシステンシな読み込み� デフォルト� パフォーマンス重視� 低レイテンシ、高スループット� 読み込みの一貫性がない可能性がある� 大体1秒程度で⼀貫性が保たれる一貫性のある読み込み� 比較的低いパフォーマンス� ただしデータは一貫している� ConsistentRead = trueオプション

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

SimpleDBで出来る操作ドメインへの操作� CreateDomain/DeleteDomain/ListDomains

アイテム/アトリビュートの追加� PutAttributes/BatchPutAttributes

アイテム/アトリビュートの削除� DeleteAttributes/BatchDeleteAttributes

アイテム/アトリビュートの検索� GetAttributes/Select

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

SimpleDBでSelectSQLライクなシンプルなクエリが書けるプライマリキーでの検索� 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 bycount

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

RDBMSとSimpleDBの違いRDBMS� 事前定義したスキーマ� 管理コスト高い� 1台で稼働する事が前提� SQLによるアクセス� リニアにはスケールしない� トランザクションあり� インデックスは明示的� 構造化データ� 汎用的

SimpleDB� スキーマフリー� 管理コスト低い� オートスケール� SQLライクなクエリ� スケールする� トランザクションなし� 自動インデックス� 半構造化データ� やや目的特化型

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

SimpleDBの制約ドメインサイズ -> 10GB/domain or 10億アトリビュートドメイン名 -> 3-255(a-zA-Z0-9_-.) characters1アカウント100ドメインまで1アイテム256アトリビュートまでアトリビュートのname/valueの⻑さ < 1024 bytesアイテム名の⻑さ < 1024 bytes1回のPutAttributesで登録できるのは256個まで1回のSelectで検索できるアトリビュートは256個まで1回のSelectで検索できるアイテムは2500まで1回のクエリの最⼤実⾏時間は5秒まで1回のレスポンスサイズは1024 bytesまで

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

SimpleDBをスケールさせるためには?スケールアウトデザインがフィットする� 書き込みをスケール→シャーディング� 読み込みをスケール→データ構造/クエリの工夫SimpleDBに対して出来るだけ並⾏してリクエストする� 論理パーティションキー

• キーの設計がとても重要

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

SimpleDBのベストプラクティスソート� ソートのため、数値データは0パディングしてやる� 日付はISO 8601フォーマットを使う

Selectクエリ� WHERE句ではなく、コンポジットキーを使う

• Name=“Firstname:Lastname”� AND句を極⼒使わない� LIMITを設定し、レンジクエリを極小化する。LIMIT

2500など

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

SimpleDBのベストプラクティスシャーディング� 書き込みのスループットを上げるため� ハッシュ値または、より適切なキー分割を指定

一貫性� 読み込みではオプションを適切に使う

• イベンチュアルコンシステンシ• read-after-writeコンシステンシ

� 書き込みはなるべく非同期書き込み or ConditionalPutを使う

パフォーマンス� BatchPutまたはBatchDeleteをデフォルト使う

• 25アイテムの書き込みで20-25%程度は向上する�

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

SimpleDBのベストプラクティス巨大データの扱い� BLOB的に使うのではなくS3に保存して、ポインタを

SimpleDBに保存する• 2ホップかかるがわかりやすい

� データを分割し、複数のアトリビュートに圧縮して押し込める

• 1ホップだが複雑設計� データは非正規化する前提� スキーマフリーな点を有効に使う� クエリベースで考えて極⼒ドメインを分ける

• 分割によるスケールメリット

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

SimpleDBの価格マシンの利⽤料⾦� クエリ毎にかかった消費量を計算� $0.162/hourデータトランスファー� インバウンドは無料� アウトバウンドは$0.201/GBからデータストレージ料� $0.29/GBSimpleDBの利⽤料は他に⽐べてかなり安い� ただし先ほどのような制約がある

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

SimpleDBをいつ使うか?シンプルなクエリだがスケールが求められる場合データベース管理者がいないため、管理コストを下げたい場合� データモデルを理解して開発できる⼈材は必要� 銀の弾丸ではない

ユニークキーによる分散が簡単に出来て、スケールアウトさせやすいケースの場合データ構造が頻繁に変わるため、それを低コストで⾏いたい場合低コストでデータベースを持ちたい場合高い可用性とスケーラビリティが必要な場合

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

SimpleDBで顧客は何を動かしているか?オンラインゲームプラットフォームS3のコンテンツのインデックス設定ファイルなどの置き場所ソーシャルデータの蓄積マイニングデータの解析結果のストア� EMRと連携はしないのか?

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

まとめAWS独自のNoSQLデータベース管理者不要スケーラブル高い可用性・高い耐障害性� データは自動レプリケーション、インデクシ

ング柔軟なデータモデル圧倒的に低コスト

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

SQS、SNS、SimpleDBを通じてAWS SシリーズはAWSクラウドを

よりよく使うためのコンポーネント� SQS=疎結合を提供する� SNS=プロトコル非依存な通知� SimpleDB=簡単に使えるDB