活クラウド awsをどう利用するべきか
TRANSCRIPT
活クラウド AWSをどう利用するべきか
2013/11/09 DevLOVE現場甲子園2013
楽天タワー2号館Junichiro Ueno / @jun116
現場
技術ブログ Developers.IO http://dev.classmethod.jp/
自己紹介
Junichiro Ueno
上野 潤一郎 Community : DevLOVE !
Company : クラスメソッド株式会社 AWSソリューション部 !
twitter : @jun116 facebook : junichiro.ueno
クラウドをどう活用すればいいの?
その前に
普段の現場
受託開発
サービス・システム開発
インフラエンジニア ではなく
開発エンジニア
会社がAWSを推進
今日から EC2, RDS, S3, SQS, SES, …
で開発よろしく
( ́Д`)=3
とはいえ、 結構面白そう
何ができるの? から始める
現場での経験を元に 仮想システムの構築
するとどのようにするか
広告配信システム • 配信広告の制御 • ブラウザから広告をクリック • クリックで対象サイトに遷移 • クリック数等をDBに保存
実現したいこと • 大量アクセスに耐えられる構成 • アクセス数に応じて構成を調整 • データをロストが発生しない
Attention !! 今回のサーバ構成等は架空のものです 広告配信の経験もありませんw AWSを利用するとどんなことが できるのかのイメージとご理解 いただければと思います この構想には @makotan にご協力 いただきました
構成イメージ
構成 • WebサーバEC2 c1.xlarge
• WorkerEC2 m1.medium
• DynamoDBIOPS = ワーカーの処理可能数 x 台数
• RDSdb.m1.medium
構成のポイント
ポイント① SQSを利用
なぜ? 直接 DynamoDB を更新すれば
DynamoDB 設定したIOPSを超えた瞬間から 急激にパフォーマンスが落ちる → 書込IOPSは値段も高い 大量アクセスの書込に利用は 必ずしも向いているわけではない
だから SQSを利用して負荷を軽減
SQS キューの追加に制限がなく、 データロストがない(冗長構成) 低コストで利用可能 → 急激な負荷に耐えつつ ある程度パフォーマンス保証 !
※ メッセージは重複します
Worker SQSからデータを取得し、 DynamoDBとRDSを更新 → データ取得量を調整が可能 瞬間ピークにも焦らなくて済む
ポイント② DynamoDBの利用
なぜ? RDSだけでよいのでは
DynamoDB 更新が速いのはメリットだが、 読込パフォーマンスの速さも抜群! → 読込IOPSは比較的安価
だから DynamoDBをデータ読込に活用
例えば • 広告の表示時にどのような内容を表示するかをDynamoDBから取得
• 広告の表示数による表示の可否調整
参照系として利用 • RDSのリードレプリカを並べるより安価→ リードレプリカは起動も遅い
• パフォーマンスの調整も簡単→ IOPSを調整すれば良い
• なにより圧倒的な信頼性→ 分散型で強い整合性を持つ
パフォーマンス
想定性能 !
秒間 2500リクエスト !
※ 似た構成での計測値
構築・運用
Cloudformation → 何度でも再構築が可能 → テンプレートで環境管理 !
※ 似た構成での計測値
まとめ
ただの箱 ﹅ ﹅ ﹅ ﹅
から サービス群の活用へ
設計、構築 開発エンジニア視点でも 担当できるようになる
いままで !
開発したものを 提供する
これから !
運用環境を含め 開発・提供する
Thank you for listening! Lets us make new cloud modeling together!