【初心者向けWebinar】AWSでのNoSQLの活用
2015/07/14
アマゾン データ サービス ジャパン株式会社
ソリューションアーキテクト 森 祐孝
初心者向けWebinarのご紹介
• AWSについてこれから学ぶ方向けのソリューションカットの技術Webinarです。
• 過去のWebinar資料– AWSクラウドサービス活用資料集ページにて公開
http://aws.amazon.com/jp/aws-jp-introduction/
• イベントの告知– 国内のイベント・セミナースケジュールページにて告知
http://aws.amazon.com/jp/about-aws/events/
(オンラインセミナー枠)
アジェンダ
• Introduction
• 基本的なサービスのご紹介
• NoSQLとRDB
• AWS環境でのNoSQL
• まとめ
アジェンダ
• Introduction
• 基本的なサービスのご紹介
• NoSQLとRDB
• AWS環境でのNoSQL
• まとめ
Introduction
• Amazon Web Service(AWS)では、様々なデータベースサービスを提供しています。データベースサービスの中でNoSQLサービスにフォーカスし、NoSQLに関する機能やRDBMSとの違いを紹介致します
• 現在NoSQLはRDBMSでは処理し辛い領域を補いながら活用されており、NoSQLサービスの典型的な使い方や使いどころについて紹介いたします
アジェンダ
• Introduction
• 基本的なサービスのご紹介
• NoSQLとRDB
• AWS環境でのNoSQL
• まとめ
基本的なAWS上でのWeb+DBサーバの構成
• よくある構成
– DNSサーバ
– Load Balancer (LB)
– WEBサーバ
– DBサーバ
– CDN+Origin
Availability Zone Availability Zone
Clients
• AWSのリージョン内の区分け• 地域的に近いデータセンタ群
• リージョン内のAZは、同時障害の確率が低くなる様に設計• 2箇所が同時に障害になること
はほぼない• 複数のAZを利用する構成にすること
でサービスの可用性を上げられる
Availability Zone (AZ)
基本的なAWS上でのWeb+DBサーバの構成Clients
Availability Zone Availability Zone
Clients
Availability Zone
Amazon EC2
Availability Zone
• クラウド上の仮想サーバ• 用途に応じた様々なタイプ
• CPU重視、メモリ重視、等• 1時間単位の従量課金
• 不要になったら止めればいい• 様々なOSを選択可能
• Window Server、Redhat、CentOS等
• イメージを保存して複製できる• 簡単バックアップ• 必要な時にすぐサーバ追加可能
Amazon Elastic Compute Cloud (EC2)
基本的なAWS上でのWeb+DBサーバの構成
Clients
Availability Zone Availability Zone
• クラウド上のRDBMS• MySQL, PostgreSQL,
ORACLE, SQLServerから選択可• 用途に応じた様々なタイプ
• スタンダード、メモリ重視、等• 1時間単位の従量課金
• タイプ変更も単価が変わるだけ• AWSのマネージドサービス
• バックアップや障害時自動切替• 高度な運用スキルは必要ない
Amazon RDS
Amazon Relational Database Services (RDS)
基本的なAWS上でのWeb+DBサーバの構成
Clients
Availability Zone Availability Zone
• クラウド上の負荷分散機• 複数のEC2にリクエストを分散• ヘルスチェックで可用性もUP
• 負荷状況に応じて自動でスケール• ELB自体が自動で拡大・縮小
• 1時間単位の従量課金• 不要になったら止めればいい• API、機能毎にELB分けても安価
• AWSのマネージドサービス• LB運用はAWSにお任せ
Elastic LoadBalancing
Elastic Load Balancing (ELB)
基本的なAWS上でのWeb+DBサーバの構成
Clients
Availability Zone Availability Zone
• クラウド上のオブジェクトストレージ• 無限に置けるファイル置き場• 複数AZに自動で複製する耐久性
• S3単体でHTTPのファイル配信も• 画像や動画などのアセット配信• 静的サイトならEC2不要
• 使った分だけの従量課金• AWSのマネージドサービス
• ファイル置き場にもう悩まない
Amazon S3
Amazon Simple Storage Service (S3)
基本的なAWS上でのWeb+DBサーバの構成
Clients
Availability Zone Availability Zone
• クラウド上のCDN• 静的ファイルを高速配信する
ネットワーク• 自動で近くのエッジサーバから
配信• S3をオリジンに設定することも
• S3との通信は無料• 使った分だけの従量課金• AWSのマネージドサービス
Amazon CloudFront
CloudFront
基本的なAWS上でのWeb+DBサーバの構成
Clients
Availability Zone Availability Zone
• クラウド上のDNSサービス• 独自ドメインのレコードを設定• API経由でも簡単操作
• 使った分だけの従量課金• AWSのマネージドサービス
Amazon Route 53
Amazon Route 53
基本的なAWS上でのWeb+DBサーバの構成
AWS SDKs and CLI
• 各種言語むけのオフィシャルSDKやCLIを利用
Java Python PHP .NET Ruby nodeJS
iOS AndroidJavascript
in the Browser AWS CLI
アジェンダ
• Introduction
• 基本的なサービスのご紹介
• NoSQLとRDB
• AWS環境でのNoSQL
• まとめ
NoSQL?
「NoSQL(一般に”Not only SQL”と解釈される)とは、リレーショナルデータベース管理システム (RDBMS) 以外のデータベース管理システムを指すおおまかな分類語である。リレーショナルデータベースをやみくもに使用してきた長い歴史を打破し、それ以外のデータベースの利用・発展を促進させようとする運動の標語としての意味合いを持つ。」
NoSQL - ウィキペディア
https://ja.wikipedia.org/wiki/NoSQL
RDBMS?
• データは表形式で保存
• データベース言語SQLを利用してデータを操作
• トランザクション処理– 関連付けられた複数の処理が「すべて成功」か「すべて失敗」のどちらかであ
ることを保証
• データ一貫性
• スケールアウトが困難– 高負荷時、アクセスが集中した場合、構造的にスケールアウトが難しいのでレ
イテンシを稼ぐのが難しい
NoSQL
• RDBMSではないデータストアの特徴
– 固定されたスキーマに縛られないこと
– 関係モデルの結合操作を利用しないこと(場合によっては単にそのような機能が欠落しているだけ)
– 水平スケーラビリティが確保しやすい事が多いこと
– トランザクションを利用できないものが多いこと
NoSQL - ウィキペディアhttps://ja.wikipedia.org/wiki/NoSQL
よく見かけるNoSQLデータベース
• Neo4j
• Couchbase
• DynamoDB
• Redis
• MongoDB
• Riak
• HBase
• Cassandra
• BigTable
• HyperTable
NoSQLの4つのデータモデル• キーバリューストア(Key-Value Store)
– キーに対してバリュー(値)という単純な構造
– 高速なパフォーマンスとデータ分散が行えるため拡張性に優れている
– データの読込がRDBと比較して高速であることが特徴
– 例)Riak、Redis
• カラムストア(Column Store)– ワイドカラムストア(Wide-column Store)とも呼ばれます
– 列指向とも言われることもありますが、データはRDBのようにレコード(行)で管理される。アクセスはキーバリューと同じようにキーを使用して列単位
– 非定型の大規模データを格納することを主な目的としており、行ごとに任意の名前のカラム(列)を無数に(時には1行に数百万カラム)格納でき、RDBより柔軟性とパフォーマンス、拡張性で優れていていると言われ、データの書き込みが高速であることが特徴です
– 例)HBase、BigTable
NoSQLの4つのデータモデル• ドキュメントデータベース(Document Database)
– キーに対してバリューではなく、 JSONやXMLのスキーマレスでデータ構造が柔軟なより、複雑なドキュメントとしてデータを格納
– 複雑なデータ構造を扱うアプリケーションにおいては、生産性高く柔軟に開発できるメリットがありる
– 例)MongoDB、CouchDB
• グラフデータベース(Graph Database)– グラフ理論に基づき、相互に結びついた要素で構成され、それぞれの間に任意の数の
結びつきのあるデータ同士の関係をグラフとして表すのが適切なデータを対象とするように設計
– グラフデータベースは、従来のRDBでは不可能だった形でデータの関係をモデル化し探索するのに役立つように作られており、データをグラフ型で格納した場合、RDBと比較して高速に横断検索をすることが可能
– 例)Neo4J、Polyglot
NoSQL vs RDBMS
トランザクション特性➔BASE
得意/メリット➔スケーラビリティ
不得意/デメリット➔複雑なクエリ➔トランザクション
トランザクション特性➔ACID
得意/メリット➔柔軟なクエリ➔トランザクション
不得意/デメリット➔スケーラビリティ
NoSQL RDBMS
ACID?
Atomicity、Consistency、Isolation、Durability
• 原子性(atomicity、不可分性)– トランザクションに含まれるタスクが全て実行されるか、あるいは全く実行されない
ことを保証する性質
• 一貫性(consistency)– トランザクション開始と終了時にあらかじめ与えられた整合性を満たすことを保証す
る性質
– 整合性条件を満たさない状態を起こすようなトランザクションは実行が中断
• 独立性(isolation)– トランザクション中に行われる操作の過程が他の操作から隠蔽
• 永続性(durability)– トランザクション操作の完了通知をユーザが受けた時点で、その操作は永続的となり、
結果が失われないこと
BASE?
Basically Available, Soft-state, Eventually consistent
• 主に分散システム上でのスケーラビリティを確保するために厳密なトランザクションをあきらめている– Basically Available:サービス提供中であっても、古いデータが返ることや、
データ更新作業のためにクエリが失敗する可能性がある
– Soft-state:入力がない状態でも、結果整合性をたもつためのデータ更新作業により、状態の変化がある可能性がある
– Eventually consistent:データ更新モデルは結果整合性が取られており、入力後の即時更新は保証されない
• すべてのNoSQLが完全にBASEとは限らない(実装による)
NoSQLの使いドコロ?
RDBMS vs. NoSQL
• 日本ではSQL対応のデータベース(RDBMS)が多用されている。– RDBMSによる:トランザクション処理 or 分析処理(データウェアハウス)– ACID属性 vs. BASE属性
• 一般的にNoSQLの特徴として、下記の点があげられる– ストレージ容量をスケールさせやすい– スループットをスケールさせやすい– 実際にストレージやスループットが増えてきた時に性能劣化しにくい
NoSQLの使いドコロ
• NoSQLの利用価値は?– 低レイテンシ・高スループット、シンプルなAPI
– Webセッション管理
– Publish・Subscribeモデル、イベント処理
– JSON形式データの格納
– ソーシャル・グラフ、BOM(Bill of material)ツリーの検索
これらの特徴が必要とされるところがNoSQLの使いドコロ。
ただし、これもNoSQLの一般的な特徴として、自前で運用するのにはかなりの労力が必要とされる。
アジェンダ
• Introduction
• 基本的なサービスのご紹介
• NoSQLとRDB
• AWS環境でのNoSQL
• まとめ
Compute Storage
AWS Global Infrastructure
Application Services
Deployment & Administration
Networking
Database
Amazon DynamoDB
Amazon RDS
Amazon ElastiCache
Amazon Redshift
スケーラブルで高パフォーマンス AWS上で利用可能なデータベース・サービス
AWSデータベース・サービス
AWSデータベース・サービスの概要
• フルマネージド・データベースの特性に応じた使い分け
NoSQL
SQL
Amazon ElastiCache
• 低レンテンシ• インメモリ
Amazon DynamoDB
• 3拠点間でのレプリケーション
• SSDに永続化
Amazon RDS
• トランザクション処理
• RDBMSの容易な運用管理
Amazon Redshift
• 集計・分析処理• データウェアハウス
(大容量データ)
DynamoDBNoSQLデータベースサービス保証されたパフォーマンスとスケーラビリティ
ElastiCacheインメモリキャッシュサービスデプロイ、操作、スケールが簡単
NoSQLデータベース・サービス
Amazon ElastiCache
Amazon ElastiCacheとは
• 構築– キャッシュクラスタを数クリックで起動– EC2、RDSと同様、初期費用無し、時間単位の従量課金
• 移行– 2種類のエンジン(memcached, redis)をサポート– 既存アプリケーションの変更不要
• 運用– 可用性を向上させる機能– モニタリング、自動障害検出、復旧、拡張、パッチ管理
機能を提供
• セキュリティ– セキュリティグループ、VPC対応、
メモリ内キャッシュをマネージドで提供するサービス→キャッシュに読み込まれたオブジェクトを保存し、性能負荷を軽減する
アプリケーションの高速化
目的アプリを高速化する手法の一つ消えても良いデータを格納してDBアクセス・負荷を低減メモリにキャッシュしたデータを再利用し 低遅延化・負荷低減
ELB App
External APIs
ElastiCache用途クエリ結果を再利用 (DBサーバの負荷低減、高速化)揮発性の高いデータを格納 (セッション情報管理)複雑な計算結果・二次データを再利用 (APPサーバの負荷軽減)
メモリキャッシュとは?
• Web+DBアプリケーションの典型的な構成
App RDBMS
1. クライアントからのリクエスト
2. Appサーバが、DBサーバに問い合わせ
3. DBサーバが結果を戻す
4. Appサーバがレスポンスをクライアントに返す
メモリキャッシュとは?
• トラフィックが増えると
App RDBMS
5. Appサーバ,DBサーバをスケール6. 効果・効率・コスト的な面、DBをスケールさせる難易度は?⇒ RDBをスケール“アウト”させるのは難しい。
App RDBMS
メモリキャッシュとは?
• DB負荷を軽減するためにキャッシュにデータを載せる– アプリケーション側で、DBとキャッシュを使い分ける
App RDBMS
Appキャッシュ
メモリキャッシュとは?
• データ参照時の操作
キャッシュ
App RDBMS
■キーを検索軸に属性データがキャッシュにあるか?
取得して完了
②なければDBへクエリ
クエリ結果を取得
DBにクエリを実行した場合、クエリ結果をキャッシュ
繰り返し⇒(Point)キャッシュに最新結果が反映される
①あればキャッシュへ
メモリキャッシュとは?
• 更新時の操作
常にDBにInsert / Update
その結果をオブジェクト書き込み
キャッシュ
RDBMS
⇒(Point)キャッシュには最新結果が反映される
■キーを検索軸に属性データをキャッシュに配置する
App
繰り返し
セッション管理
• 共有キャッシュとして使った構成 複数のAppサーバで共有するセッション用メモリ空間を実現
多くの言語やフレームワークが対応済み
セッションレプリケーションやロードバランサに依存しない構成が可能
App
App
キャッシュLB
■セッションIDのキーを検索軸に属性データを参照
2 つのインメモリキャッシュエンジン
マルチノードクラスタ
オートディスカバリ
非永続化
リードレプリカ
バックアップリストア
永続化オプション
ElastiCache
Redis
memcached
memcachedとは?
• インメモリ key-value ストアキャッシュサーバ 2003年にDanga Interactiveが開発(BSDライセンス) ブログサービス「Live Journal」の負荷対策用に作られたもの 多くのサイトで採用 (YouTube, Wikipedia, mixi, etc. )
• 特徴 KVSのデファクトスタンダードプロトコル
• Key-valueのシンプルなデータ構造• パフォーマンス向上を重視
主要機能のみのシンプルな機能• アクセス制御などのセキュリティ機能無し• マスタノード、シャーディング、レプリケーションなどの機構無し
– データ削除は明示的、期限、LRUの3方式
Amazon ElastiCache for memcached
• 特徴– 対応バージョン 1.4.5、1.4.14 (2015.7.14現在)
– memcached プロトコル準拠
– Cache Clusterという論理グループに、Cache Nodeを複数台起動
– ノードの自動検出機能のAuto Discovery対応Client Libraryを提供
– バックアップ機能(Snapshot)は持たない
CacheCluster A CacheCluster B
ConfigrationEndpoint
ConfigrationEndpoint
NodeEndpoin
t
NodeEndpoin
t
NodeEndpoin
t
NodeEndpoin
t
Redisとは?
• In-memory Key-Value Store
• 高機能なデータ構造、データ操作– List, Set, Sorted Set, Hash
• 永続化機構– SAVE/BGSAVE
• Snapshot,フルダンプ
– Append only File
• 書き込みコマンドの記録
• 冗長化機構
– Replication
• Pub/Sub機能– 非同期メッセージング
• Lua scripting– 高度な計算をRedisで実行可能
http://redis.io/
ElastiCache for Redis• 特徴
– 対応バージョン: 2.6.13、2.8.6、2.8.19 (2015.7.14現在)– 複数のCluster Group から構成されるReplication Group を構成し複数ノードで同期が取
れる– S3上のスナップショット(RDB)プリロード機能でElastiCache 上へのデータ移行も容易– Multi-AZ配置での自動フェイルオーバーにも対応– Snapshotベースでのバックアップリスト機能にも対応– Redisの機能をほぼサポート
• Lua Scripting• Pub/Sub• Append Only File
• 対応しない機能– CONFIG, SLAVEOFなど一部コマンドのみ無効– パスワード (アクセス制御はセキュリティグループにて実施)
ElastiCache for Redisの高可用性と永続性
• マルチAZのための非同期レプリケーション機能• ElastiCache は自動的に障害を検知し、1 つのリー
ドレプリカへフェイルオーバーを行う
• クラスターのスナップショットを作成することでデータの保護に役立つ
• スナップショットは、新しい Redis 用 ElastiCacheクラスターをシードするためにも使用できる
ElastiCacheの料金体系
• オンデマンド キャッシュノード
– 初期費用無し、時間単位の従量課金モデル
– MemcachedとRedisでどちらも料金は変わらず
• リザーブド キャッシュノード
– 予約金を支払うことで時間当たり価格を割引(最大70%節減)
– アベイラビリティゾーンの指定が不要
時間あたりの料金(東京リージョン)※2015年7月14日現在
Standard Cache Nodes - Current Generation
cache.t2.micro $0.026
cache.t2.small $0.052
cache.t2.medium $0.104
cache.m3.medium $0.120
cache.m3.large $0.240
cache.m3.xlarge $0.485
cache.m3.2xlarge $0.965
Memory Optimized Cache Nodes - Current Generation
cache.r3.large $0.273
cache.r3.xlarge $0.546
cache.r3.2xlarge $1.092
cache.r3.4xlarge $2.184
cache.r3.8xlarge $4.368
ElastiCacheの料金体系
• バックアップストレージ
– Redis向け機能
– 各クラスタに対して1つのSnapshotは無料
– 2つ以上のSnapshotから毎月 0.085 USD/GBが課金
• AZ間データ転送量– 同AZ内でのEC2とElastiCache間の通信は課金対象外
– 同一リージョンの異なる AZにある EC2とElastiCache間のみ、0.01 USD/GB が課金
http://aws.amazon.com/jp/elasticache/pricing/http://aws.amazon.com/jp/elasticache/reserved-cache-nodes/
Availability Zone Availability Zone
Amazon ElastiCache
ElastiCache
AWS上でのWeb+DBサーバの構成(キャッシュサーバ)
• クエリ結果を再利用• DBサーバの負荷低減• 高速化
• 揮発性の高いデータを格納• セッション情報管理
• 複雑な計算結果、二次データを再利用• APPサーバの負荷軽減
Clients
マネックス証券様 Monex Insight
• Webベースのリアルタイム市場データ配信システム
– 投資家による取引の判断基準に使われるため、リアルタイム性が要求される。
– 指数情報、業種情報、通貨ペア、コモディティ等を表示
• 大規模な顧客基盤を支えるために高いスケーラビリティも求められる。
• 株式市場の取引時間に合わせて、リソースの増減を制御
* AWS Summit Tokyo 2014 マネックス証券様のセッションより引用
マネックス証券様 Monex Insight
• 各Tierが数分で自由にスケール可能
ElastiCacheの使いどころ
• キー・ベースでのアクセス
– set(key, value)、value = get(key)
• あくまでキャッシュであり、主はRDBMS等に永続化されることを前提とする
• 更新頻度が低く、アクセス頻度が高いデータをキャッシュ-> キャッシュ・ヒット率が高い
http://www.slideshare.net/AmazonWebServicesJapan/aws-black-belt-tech-amazon-elasticache
詳しくはAWS Black Belt ElastiCache 資料を参照
Amazon DynamoDB
Amazon DynamoDBの特徴
• 完全マネージド型の NoSQL データベースサービス– ストレージの容量制限がない
– OSやソフトウェアのパッチ等の運用管理の必要なし
– サーバーの設定、サーバのプロビジョニングも必要なし
• ハイスケーラブル、低レイテンシー
• 高可用性– 3x レプリケーション
• シンプル且つパワフルAPI
クライアント
Flexible
キーバリューデータストア
• テーブル内のそれぞれのアイテ
ムは属性と値のリストで保持さ
れる
• 1つ以上のAttributeを持ち、
アイテム間で不揃いであっても
問題ない
• 属性はあとから追加できる
ドキュメントデータベース
• Jsonデータのサポート
DynamoDBを使い始めるには
1. テーブルのKeyやIndexを決める
2. Read/Writeそれぞれのスループットを決める
That’s it, write your code!
Tabletable
items
attributes
HashKey
RangeKey
必須キーバリュー型のアクセスパターンデータ分散に利用される
オプション1:Nモデルのリレーションシップ豊富なQueryをサポート
ハッシュキー検索用
==, <, >, >=, <=“begins with”“between”sorted resultscounts先頭/末尾 N件ページ単位出力
name/value 型、JSON 型アイテム間で不揃いであっても問題ない
Local Secondary Index (LSI)• Range key以外に絞り込み検索を行うkeyを持つことができる
• Hash keyが同一で、他のアイテムからの検索のために利用
A1(hash)
A3(range)
A2(table key)
A1(hash)
A2(range)
A3 A4 A5
LSIs A1(hash)
A4(range)
A2(table key)
A3(projected)
Table
KEYS_ONLY
INCLUDE A3
A1(hash)
A5(range)
A2(table key)
A3(projected)
A4(projected)
ALL
Global Secondary Index (GSI)• Hash Key属性の代わりとなる
• Hash Keyをまたいで検索を行うためのインデックス
A1(hash)
A2 A3 A4 A5
GSIs A5(hash)
A4(range)
A1(table key)
A3(projected)
Table
INCLUDE A3
A4(hash)
A5(range)
A1(table key)
A2(projected)
A3(projected)
ALL
A2(hash)
A1(table key)
KEYS_ONLY
Data Types
• String (S)
• Number (N)
• Binary (B)
• String Set (SS)
• Number Set (NS)
• Binary Set (BS)
• Boolean (BOOL)
• Null (NULL)
• List (L)
• Map (M)
JSON用に定義
Documentデータ型 (JSON)
• データタイプ (M, L, BOOL, NULL) としてJSONをサポート
• Document SDKs
– 単純なプログラミングモデル
– JSONから、JSONへの変換
– Java, JavaScript, Ruby, .NET
Javascript DynamoDB
string S
number N
boolean BOOL
null NULL
array L
object M
プロビジョンドスループット
• テーブルごとにReadとWriteそれぞれに対し、必要な分だけのスループットキャパシティを割り当てる(=プロビジョンする)ことができる
• 例えば下記のようにプロビジョンする– Read : 1,000
– Write : 100
• 書き込みワークロードが上がってきたら– Read : 500
– Write : 1,000
• この値はDB運用中にオンラインで変更可能
• CreateTable
• UpdateTable
• DeleteTable
• DescribeTable
• ListTables
• GetItem
• PutItem
• UpdateItem
• DeleteItem
• Query
• Scan
• BatchGetItem
• BatchWriteItem• Liststreams
• DescribeStream
• GetShardIterator
• GetRecords
Table API
Streams API
DynamoDB
In preview
DynamoDBの料金体系
• プロビジョンドスループットで決まる時間料金– Read/Writeそれぞれプロビジョンしたスループットによって時間あたりの料金
がきまる
– 大規模に利用するのであればリザーブドキャパシティによる割引もあり
• ストレージ利用量– 保存したデータ容量によって決まる月額利用料金
– 計算はGBあたりの単価が適用される
– GBあたり$0.285(2015/07/14現在@東京リージョン)
http://aws.amazon.com/jp/dynamodb/pricing/
DynamoDBの料金体系• プロビジョンドスループット
– 書き込み
• $0.00742 :10 ユニットの書き込み容量あたり/1 時間
– 読み込み
• $0.00742 : 50 ユニットの読み込み容量あたり/1 時間
• キャパシティユニット上記で「ユニット」と呼ばれている単位のこと
– 書き込み
• 1ユニット:最大1KBのデータを1秒に1回書き込み可能
– 読み込み
• 1ユニット:最大4KBのデータを1秒に1回読み込み可能(強一貫性を持たない読み込みであれば1秒辺り2回)
DynamoDBが使われているユースケース
• KVSとして– Webアプリケーションの永続的なセッションデータベース
– ユーザー情報の格納するデータベース
• 広告やゲームなどのユーザー行動履歴DBとして– ユーザーIDごとに複数の行動履歴を管理するためのデータベース
• ソーシャルアプリのバックエンドとして– モバイルアプリから直接参照できるデータベースとして
• 他にも– バッチ処理のロック管理
– フラッシュマーケティング
– ストレージのインデックス
Availability Zone Availability Zone
Amazon DynamoDB
AWS上でのWeb+DBサーバの構成(NoSQL)
DynamoDB
• シンプルにKVSで管理が可能なレベルであれば・・• 3箇所冗長の可用性• 容量制限なし• OSやソフトウェアのパッチ等
の運用管理の必要なし• ダウンタイムゼロで変更可能
なスループット
Clients
Availability Zone Availability Zone
Amazon DynamoDB
AWS上でのWeb+DBサーバの構成(NoSQL、RDBMSハイブリット)
• NoSQL、RDBMS併用• トランザクション処理が必須• NoSQLを高速化のためのキャッシュ• NoSQLで大量データを扱うために使
用
例)ECショッピングサイトカート処理、商品情報
NoSQL(DynamoDB)在庫管理、決済関連
RDBMS(MySQL等)
Clients
DynamoDB
東急ハンズ株式会社様でのAWSご活用事例
参考 DynamoDBの紹介と東急ハンズでの活用についてより。詳細は以下をご参照ください。
https://www.hands-lab.com/tech/entry/99.html
• 毎年8月末にハンズ恒例の大セール
「ハンズメッセ」開催。
• ネットストア(ハンズネット)も同時開催
• セール開始時(00:00)にお客様が殺到
• サーバーが落ちる
• というのを2年くらい経験
コストを抑えつつ、セールの爆発的なトラフィックにも耐えられる仕組みの構築が急務
Amazon DynamoDB導入の背景
東急ハンズ株式会社様でのAWSご活用事例
株式会社マイネット様でのAWSご活用事例
DynamoDBをメインDBにすることで、可用性向上のための運用はAWSが実施。トラフィック増減もアーキテクチャを変えずにパラメータ変更だけで対応。
DynamoDBで管理が難しいデータはRDB(RDS)で管理するも、全体のボ
リュームは小さくなるため運用が容易に。
参考 AWS事例のページより。詳細は以下をご参照ください。
http://aws.amazon.com/jp/solutions/case-studies/mynet/
AWSの利用: 人気のドット絵ファンタジー「騎士とドラゴン」のインフラをAWSで運用
ビジネス効果:少数精鋭で開発を行う中で、運用面の負担を最小化、ゲームの開発リソースを最大化
株式会社リプレーション様でのAWSご活用事例
参考 AWS事例のページより。詳細は以下をご参照ください。
http://www.awsmicrosite.jp/game/case-studies/ripplation.html
短期間でのユーザー数の急上昇にもわずかなスケールパラメータの調整で対応
デイリーアクティブユーザーがわずか6日間で5,000/日から30,000/日に跳ね上がった時に行った作業
AWS EC2のインスタンス数を増やしてAmazon DynamoDBのスループットを上げただけ
DynamoDBの使いどころ
• キーとクエリーでのアクセス
• 3拠点でデータが保全されることによる堅牢なシステムの構築
• スループットの容易な増減によるピーク負荷への対応
• 事実上の容量無制限なデータベース-> サイジングが不要
http://www.slideshare.net/AmazonWebServicesJapan/aws-black-belt-tech-amazon-dynamodb
詳しくはAWS Black Belt DynamoDB資料を参照
NoSQL on EC2
NoSQL on EC2
• EC2上にNoSQLデータベース・ソフトをインストールし、自ら運用管理を行う
• AWS上では、スケーラブル、従量課金、高可用性で他のマネージドサービスとの連携することができ、また、ハードウェアを管理すことなく様々なNoSQL製品を使う事ができる
• マネージド・データベースのメリットは享受できないが特殊な要件が必要とされた場合– AWSで提供されていないNoSQLを利用したい– データベースのOSにログインし、ローカル・アクセスでバッチ処理を実行した
い 等々
• 運用管理コストが上がる点も考慮する– 構築から運用(バックアップや障害時切替など)を行う必要がある
Magazine Luizaレコメンデーション・システム
• Eコマース・サイト向けのレコメンデーションシステム
• ソーシャル・ネットワーク機能を実装
• 5万以上の製品
• 月間 2億PV
• ユーザの行動をグラフで表現・分析
• サイトとメールでのレコメンデーション
* AWS re:Invent 2013 セッションBDT303 より引用
Graph Databaseの活用
Magazine Luizaレコメンデーション・システム
• Graph DBのエンジンとしてTITANとFAUNUSを採用
Magazine Luizaレコメンデーション・システム
• 既存システムと比較して、10倍の高速化と60%のコスト削減に成功
• 6か月でレコメンデーションからの売上が約190%向上
アジェンダ
• Introduction
• 基本的なサービスのご紹介
• NoSQLとRDB
• AWS環境でのNoSQL
• まとめ
まとめ• ワークロードに適したデータベースを選択する
(複数DBを併用しても良い)
• NoSQLアプリケーションのコストを最小化するため、スケールする設計を行う
• マネージドサービスを上手に活用して運用コストを下げる
• AWSのマネージド・サービスでカバーしきれないシナリオの場合、NoSQL on EC2を活用• バックアップやパッチ適用作業等も考慮
Q&A
参照リンク
• ElasiCashe ユーザーガイド
– http://docs.aws.amazon.com/ja_jp/AmazonElastiCache/latest/UserGuide/WhatIs.html
• ElasiCashe FAQ
– http://aws.amazon.com/jp/elasticache/faqs/
• DynamoDBユーザーガイド
– http://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/Introduction.html
• DynamoDB FAQ
– http://aws.amazon.com/jp/dynamodb/faqs/
参照リンク
• ホワイトペーパー:Riak on AWS
– http://media.amazonwebservices.com/AWS_NoSQL_Riak.pdf
• ホワイトペーパー:MongoDB on AWS
– https://d0.awsstatic.com/whitepapers/AWS_NoSQL_MongoDB.pdf
• ホワイトペーパー:Amazon ElastiCache を使用したスケールに応じたパフォーマンス
– http://d0.awsstatic.com/whitepapers/performance-at-scale-with-amazon-elasticache.pdf
• AWSクラウド活用資料集
– http://aws.amazon.com/jp/aws-jp-introduction/
• 国内のお客様のAWS活用事例
– http://aws.amazon.com/jp/solutions/case-studies-jp/
詳しくは、http://aws.amazon.com/training をご覧ください
メリット
• AWS について実習や実践練習を通じて学習できる
• AWS を熟知したエキスパートから直接 AWS の機能について学び、疑問の答えを得られる
• 自信をもって IT ソリューションに関する決定を下せるようになる
提供方法
e ラーニングや動画
セルフペースラボ
クラスルームトレーニング
AWSトレーニングでは様々な学習方法をご提供しています
公式Twitter/FacebookAWSの最新情報をお届けします
@awscloud_jp
検索
最新技術情報、イベント情報、お役立ち情報、お得なキャンペーン情報などを日々更新しています!
もしくはhttp://on.fb.me/1vR8yWm
AWS初心者向けWebinar
• AWSをこれからご使用になる技術者向け、ソリューションカット
• 今後の配信予定
– 7/28(火) 【AWS 初心者向け Webinar】RDB の AWS への移行方法(Oracle を例に)
※18時~19時15分の時間帯です!
• 申し込みサイト
– http://aws.amazon.com/jp/about-aws/events/
AWS Black Belt Tech Webinar 2015
• AWS中上級者向け、サービスカット
• 今後の配信予定7月は「AWS 運用機能月間」です!– 7/15(水)12:00〜【緊急特番】Amazon API Gateway– 7/15(水)18:00〜 AWS CloudTrail & Config– 7/22(水)12:00〜【緊急開催】AWS Device Farm– 7/22(水)18:00〜 AWS CLI & AWS Tools for Windows PowerShell– 7/29(水)18:00〜 AWS CloudHSM & AWS Key Management
Service
• 申し込みサイト– http://aws.amazon.com/jp/about-aws/events/
•EC2上にNoSQLデータベース・ソフトをインストールし、自ら運用管理を行う
AWS Black Belt Tech Webinar 2015
• 今後の配信予定
8月は「AWS DB月間」です!
– 8/5 (水)18:00〜 Amazon DynamoDB
– 8/12(水)お盆のためお休み
– 8/19(水)18:00〜 Amazon ElastiCache
– 8/26(水)18:00〜 Amazon DynamoDB
• 申し込みサイト
– http://aws.amazon.com/jp/about-aws/events/
AWSの導入、お問い合わせのご相談
• AWSクラウド導入に関するご質問、お見積り、資料請求をご希望のお客様は、以下のリンクよりお気軽にご相談ください。https://aws.amazon.com/jp/contact-us/aws-sales/
ご参加ありがとうございました
Top Related