AWSマイスターシリーズ ~SQS, SNS, SimpleDB~ 2011年12月15日 大谷 晋平 (@shot6 ) ソリューションアーキテクト 緊急速報 南米リージョンを発表いたします!! 全部で8つ目のリージョン 2011年だけで4つ目 GlobalUSInfrastructure for Global Enterprises West US East Europe Asia Pacific Asia Pacific GovCloud (US ITAR Region) (Northern California, Oregon) (Northern Virginia) West Region Region (Dublin) (Singapore) (Tokyo) South America (San Paulo) AWS Regions AWS Edge Locations AWSマイスターシリーズ ~Simple Queue Service~ 2011年12月15日 大谷 晋平 (@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) 2.メッセージ送信 メッセージ送信者 (Writer or Producer) 3.メッセージ受信 メッセージ受信者 (Reader or Consumer) メッセージの到達保障 管理者 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-Bが 依頼 メッセージは 返却されない あるReader-Cが 依頼 あるReader-Dが メッセージ1を依頼 メッセージは 返却されない メッセージの返却 この間にReader-Aは、 ・受信したメッセージを処理する ・処理出来たらメッセージを削除する 削除されてい ない場合 (メッセージの 返却) 最低一度のメッセージ到達保障 At-Least-Once delivery メッセージは複数DCにコピー 堅牢性・耐障害性にフォーカス デメリット:稀に複数回メッセージ が届くこともある メッセージの状態管理 複数回届く前提 メッセージサンプリング メッセージは送信後すぐに取れると は限らない 受信リクエストを送り続ければ取れる イベンチュアルコンシステンシ前提 メッセージの 受信者 SQSキューの分散 されたサーバ群 サンプリングした サーバからメッ セージを順次返却 (メッセージEが含 まれていない) サンプリング 対象サーバ (グレー) 開発者に優しい無料枠と価格 月間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~ 2011年12月15日 大谷 晋平 (@shot6 ) ソリューションアーキテクト アジェンダ SNSとは SNSの機能 SNSの使いどころ Q&A SNS(Simple Notification Service)とは AWSの小道具 SNSとは クラウド上の通知サービス 簡単に使えて、マルチプロトコル 従量課金制で非常に安い インストール・管理不要ですぐに使 える SNSの機能 様々なプロトコルに対応した通知プ ラットフォーム メール、SQSキュー、HTTP/HTTPSコ ールバック、SMS シンプルなAPI/SDK プッシュベースアーキテクチャ 非常に低価格 動作イメージ 管理者 1.トピックの作成/5.トピックの削除 3.メッセージ配信 2.トピック購読 4.メッセージ受信 メッセージ購読者 メッセージ配信者 (Subscriber) (Publisher) 利用用途 様々なプロトコルを通じたアプリケ ーション間のフックに使う ファイル S3 AWSクラウド上のアプリケーション 完了通知依頼 SNS ジョブ 完了通知&ジョブ実行 利用用途 S3上からファイルが削除されたとき をフック ユーザが削除 S3 AWSクラウド上のアプリケーション 削除通知依頼 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マイスターシリーズ ~SimpleDB~ 2011年12月15日 大谷 晋平 (@shot6 ) ソリューションアーキテクト SimpleDBとは AWSの裏ワザ アジェンダ SimpleDBが出てきた背景 SimpleDBとは SimpleDBの機能 SimpleDBの使いどころ Q&A One Size Does Not Fit All RDBMSが全てではない EC2+EBSまたはRDSは汎用的 より目的特化なデータベース シンプルな利用例でより簡単にス ケールさせる 管理者不要 低コスト SimpleDBの出てきた背景 RDBMSが全てではない EC2+EBSまたはRDSは汎用的 目的特化型サービス NoSQL 管理者不要 低コスト SimpleDBの出てきた背景 多くのアプリケーションで RDBMSの高機能が必要ない場合 がある 複雑なトランザクション 複雑なジョイン シンプルにデータを永続化したい データモデルの制約 SimpleDBとは AWS独自のNoSQLデータベース 管理者不要 スケーラブル 高い可用性・高い耐障害性 データは複数DCに自動レプリケーション データは自動インデクシング 柔軟なデータモデル 圧倒的に低コスト SimpleDBの位置づけ CAP定理 一貫性(C)、可用性(A) 、ネット ワーク分断耐性(P)のうち、分散 環境では実質上ネットワーク分断 耐性が必須のため、一貫性か可用 性のどちらかを取らなくてはいけ ない。 SimpleDBのデータモデル ドメイン アイテムを保持する器=テーブル アイテム アトリビュートを保持する1行 アトリビュート アイテム内にあるKey-Valueまたは Key-[Value] SimpleDBのデータモデル SimpleDBの書き込み トランザクションは1アイテムのみ 複数アイテムの同時書き込みにはトランザクシ ョンはかけられない ConditionalPut 現在の値がXXXの場合のみ、データを更新 楽観的並行制御 SimpleDBの読み込み イベンチュアルコンシステンシな読み込み デフォルト パフォーマンス重視 低レイテンシ、高スループット 読み込みの一貫性がない可能性がある 大体1秒程度で一貫性が保たれる 一貫性のある読み込み 比較的低いパフォーマンス ただしデータは一貫している ConsistentRead = trueオプション SimpleDBで出来る操作 ドメインへの操作 CreateDomain/DeleteDomain/ListDomains アイテム/アトリビュートの追加 PutAttributes/BatchPutAttributes アイテム/アトリビュートの削除 DeleteAttributes/BatchDeleteAttributes アイテム/アトリビュートの検索 GetAttributes/Select 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 RDBMSとSimpleDBの違い RDBMS 事前定義したスキーマ 管理コスト高い 1台で稼働する事が前提 SQLによるアクセス リニアにはスケールしない トランザクションあり インデックスは明示的 構造化データ 汎用的 SimpleDB スキーマフリー 管理コスト低い オートスケール SQLライクなクエリ スケールする トランザクションなし 自動インデックス 半構造化データ やや目的特化型 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まで SimpleDBをスケールさせるためには? スケールアウトデザインがフィットする 書き込みをスケール→シャーディング 読み込みをスケール→データ構造/クエリの工夫 SimpleDBに対して出来るだけ並行してリクエ ストする 論理パーティションキー • キーの設計がとても重要 SimpleDBのベストプラクティス ソート ソートのため、数値データは0パディングしてやる 日付はISO 8601フォーマットを使う Selectクエリ WHERE句ではなく、コンポジットキーを使う • Name=“Firstname:Lastname” AND句を極力使わない LIMITを設定し、レンジクエリを極小化する。LIMIT 2500など SimpleDBのベストプラクティス シャーディング 書き込みのスループットを上げるため ハッシュ値または、より適切なキー分割を指定 一貫性 読み込みではオプションを適切に使う • イベンチュアルコンシステンシ • read-after-writeコンシステンシ 書き込みはなるべく非同期書き込み or ConditionalPutを使う パフォーマンス BatchPutまたはBatchDeleteをデフォルト使う • 25アイテムの書き込みで20-25%程度は向上する SimpleDBのベストプラクティス 巨大データの扱い BLOB的に使うのではなくS3に保存して、ポインタを SimpleDBに保存する • 2ホップかかるがわかりやすい データを分割し、複数のアトリビュートに圧縮して 押し込める • 1ホップだが複雑 設計 データは非正規化する前提 スキーマフリーな点を有効に使う クエリベースで考えて極力ドメインを分ける • 分割によるスケールメリット SimpleDBの価格 マシンの利用料金 クエリ毎にかかった消費量を計算 $0.162/hour データトランスファー インバウンドは無料 アウトバウンドは$0.201/GBから データストレージ料 $0.29/GB SimpleDBの利用料は他に比べてかなり安い ただし先ほどのような制約がある SimpleDBをいつ使うか? シンプルなクエリだがスケールが求められる場合 データベース管理者がいないため、管理コストを下げた い場合 データモデルを理解して開発できる人材は必要 銀の弾丸ではない ユニークキーによる分散が簡単に出来て、スケールアウ トさせやすいケースの場合 データ構造が頻繁に変わるため、それを低コストで行い たい場合 低コストでデータベースを持ちたい場合 高い可用性とスケーラビリティが必要な場合 SimpleDBで顧客は何を動かしているか? オンラインゲームプラットフォーム S3のコンテンツのインデックス 設定ファイルなどの置き場所 ソーシャルデータの蓄積 マイニングデータの解析結果のストア EMRと連携はしないのか? まとめ AWS独自のNoSQLデータベース 管理者不要 スケーラブル 高い可用性・高い耐障害性 データは自動レプリケーション、インデクシ ング 柔軟なデータモデル 圧倒的に低コスト SQS、SNS、SimpleDBを通じて AWS SシリーズはAWSクラウドを よりよく使うためのコンポーネント SQS=疎結合を提供する SNS=プロトコル非依存な通知 SimpleDB=簡単に使えるDB ご参加ありがとう ございました Copyright © 2011 Amazon Web Services
© Copyright 2024 ExpyDoc