Amazon DynamoDBの紹介と東急ハンズでの活用について
-
Upload
taiji-inoue -
Category
Technology
-
view
4.129 -
download
5
Transcript of Amazon DynamoDBの紹介と東急ハンズでの活用について
![Page 1: Amazon DynamoDBの紹介と東急ハンズでの活用について](https://reader034.fdocuments.net/reader034/viewer/2022052509/55a9b25e1a28ab384f8b463b/html5/thumbnails/1.jpg)
Copyright © 2014. All rights reserved.
2015年2月7日
JAWS-UG KANSAI特別編
ハンズラボ株式会社井上泰治
DynamoDBの紹介と東急ハンズでの活用について
![Page 2: Amazon DynamoDBの紹介と東急ハンズでの活用について](https://reader034.fdocuments.net/reader034/viewer/2022052509/55a9b25e1a28ab384f8b463b/html5/thumbnails/2.jpg)
1
自己紹介
井上 泰治
ハンズラボ株式会社
主に、EC系(ハンズネット等)担当
日本酒とビールが好き。
![Page 3: Amazon DynamoDBの紹介と東急ハンズでの活用について](https://reader034.fdocuments.net/reader034/viewer/2022052509/55a9b25e1a28ab384f8b463b/html5/thumbnails/3.jpg)
2
もくじ
1. Amazon DynamoDBの紹介
2. 東急ハンズでの活用について
3. おまけ(DynamoDB最新情報)
![Page 4: Amazon DynamoDBの紹介と東急ハンズでの活用について](https://reader034.fdocuments.net/reader034/viewer/2022052509/55a9b25e1a28ab384f8b463b/html5/thumbnails/4.jpg)
3
1. Amazon DynamoDBの紹介
Amazon DynamoDBの特徴
1. AWS完全マネージドのデータストア2. スケーラビリティ3. 高信頼性4. 柔軟な料金体系5. データ・モデル
![Page 5: Amazon DynamoDBの紹介と東急ハンズでの活用について](https://reader034.fdocuments.net/reader034/viewer/2022052509/55a9b25e1a28ab384f8b463b/html5/thumbnails/5.jpg)
4
1. Amazon DynamoDBの紹介
- 構築不要- 自分でインストールする必要がない
- 運用不要- 落ちないように中の人が頑張ってくれる
- 万が一何かあったらAWSのせいにできる
エンジニアの精神衛生の向上!!
特徴1: AWS完全マネージドのデータストア
![Page 6: Amazon DynamoDBの紹介と東急ハンズでの活用について](https://reader034.fdocuments.net/reader034/viewer/2022052509/55a9b25e1a28ab384f8b463b/html5/thumbnails/6.jpg)
5
1. Amazon DynamoDBの紹介
- 必要に応じて自動的にスケールアウト- 必要性=データ容量 or スループット
特徴2: スケーラビリティ
レプリケーションやシャーディングなどを考慮する必要がない。▶ データ量、アクセス数が増えても、アプリケーションに手を入れなくて済む
Read Capacity
2,000
Read Capacity
10,000 :
scale
![Page 7: Amazon DynamoDBの紹介と東急ハンズでの活用について](https://reader034.fdocuments.net/reader034/viewer/2022052509/55a9b25e1a28ab384f8b463b/html5/thumbnails/7.jpg)
6
1. Amazon DynamoDBの紹介
- 1回の書き込みリクエストで、3ヶ所のAZ
に保存される
特徴3: 高信頼性
Availability Zone
Availability Zone
Availability Zone
instance
Write
![Page 8: Amazon DynamoDBの紹介と東急ハンズでの活用について](https://reader034.fdocuments.net/reader034/viewer/2022052509/55a9b25e1a28ab384f8b463b/html5/thumbnails/8.jpg)
7
1. Amazon DynamoDBの紹介
• スループットと容量により決定• 指定したスループットにより時間あたりの料金が決定。
• 容量による課金は、めちゃ安いので考えるのやめた。
• リザーブド(前払い)による割引あり。
特徴4: 柔軟な料金体系
![Page 9: Amazon DynamoDBの紹介と東急ハンズでの活用について](https://reader034.fdocuments.net/reader034/viewer/2022052509/55a9b25e1a28ab384f8b463b/html5/thumbnails/9.jpg)
8
1. Amazon DynamoDBの紹介
- スキーマレスKey-Valueストア(インデックス以外)
- 検索はインデックスでのみ可能- インデックスは事前に作成しておく- JSON形式のデータ型もサポート
user_id name age created_at
1 John 20 2015-01-03
2 David 33 2015-01-11
3 Anthony 18 2015-01-18
テーブル
項目(≒レコード)
属性(≒カラム)
特徴5: データ・モデル
GSIが後から作成できるようになりました!
(2015/1/27 発表)
![Page 10: Amazon DynamoDBの紹介と東急ハンズでの活用について](https://reader034.fdocuments.net/reader034/viewer/2022052509/55a9b25e1a28ab384f8b463b/html5/thumbnails/10.jpg)
9
1. Amazon DynamoDBの紹介
Amazon DynamoDBのデータ・モデル
1. データ型2. インデックスとクエリ
![Page 11: Amazon DynamoDBの紹介と東急ハンズでの活用について](https://reader034.fdocuments.net/reader034/viewer/2022052509/55a9b25e1a28ab384f8b463b/html5/thumbnails/11.jpg)
10
1. Amazon DynamoDBの紹介
• 属性(Attribute)は型を持つ• インデックスは指定した型の値を入れる必要がある• それ以外はレコード毎に型や属性名はバラバラでOK
• 利用できるデータ型は以下のとおり
1. データ型
名称 説明
String 文字列
Number 数値
Binary バイナリ
String Set 文字列の配列
Number Set 数値の配列
Binary Set バイナリの配列
名称 説明
List JSONの配列のような順序付き集合
Map JSONのオブジェクトのようなKey-Value
ペア
Boolean 真偽値
Null NULL値
※ インデックスに使用できるのは String、Number、Binaryのみ
![Page 12: Amazon DynamoDBの紹介と東急ハンズでの活用について](https://reader034.fdocuments.net/reader034/viewer/2022052509/55a9b25e1a28ab384f8b463b/html5/thumbnails/12.jpg)
11
1. Amazon DynamoDBの紹介
プライマリインデックス
グローバルセカンダリインデックス(GSI)
ローカルセカンダリインデックス(LSI)
• DynamoDBはインデックスでしか検索ができないため、検索したい項目にはインデックスを作成しておく必要がある。
• スキーマレスといいつつ、インデックスだけはちゃんと考えないとダメ。
• インデックスは、Hash Key と Range Keyという2つの属性の組み合わせで作成する。
• インデックスには下記3種類がある
2. インデックス
![Page 13: Amazon DynamoDBの紹介と東急ハンズでの活用について](https://reader034.fdocuments.net/reader034/viewer/2022052509/55a9b25e1a28ab384f8b463b/html5/thumbnails/13.jpg)
12
1. Amazon DynamoDBの紹介
プライマリインデックス
- テーブルに必ず1つ作成するインデックス- Hash Keyのみと、Hash Key + Range Key の2種類から選択- 各インデックスでユニークになる必要がある- データ型は、String / Number / Binary から選択
id name age
1 John 20
2 David 33
3 Anthony 18
user_id friend_id
1 2
1 3
2 1
HK HK RK
テーブル: users (HKの例) テーブル: friends (HK+RKの例)
2. インデックス
![Page 14: Amazon DynamoDBの紹介と東急ハンズでの活用について](https://reader034.fdocuments.net/reader034/viewer/2022052509/55a9b25e1a28ab384f8b463b/html5/thumbnails/14.jpg)
13
1. Amazon DynamoDBの紹介
ローカルセカンダリインデックス(LSI)
- プライマリインデックスのHash Key に別のRange
Keyを設定できるようなイメージ- 同じ Hash Key内でのみ検索、ソートが可能
user_id friend_id mute_flag
1 2 1
1 3 0
2 1 1
HK LSI:RK
SELECT * FROM friends
WHERE user_id = 1
AND mute_flag = 0
<Queryイメージ>RK
テーブル: friends
2. インデックス
![Page 15: Amazon DynamoDBの紹介と東急ハンズでの活用について](https://reader034.fdocuments.net/reader034/viewer/2022052509/55a9b25e1a28ab384f8b463b/html5/thumbnails/15.jpg)
14
1. Amazon DynamoDBの紹介
グローバルセカンダリインデックス(GSI)
- プライマリインデックスとは別にHash Key , Range
Key を追加できる- Hash Keyをまたいだ検索が可能
user_id name country age
1 John Japan 20
2 David US 33
3 Anthony Australia 18
GSI:RKGSI:HKHK
SELECT * FROM users
WHERE country = ‘US’
AND age >= 20
<Queryイメージ>
テーブル: users
2. インデックス
プライマリのHKとは関係ない
テーブル縦断したクエリが実行できる
![Page 16: Amazon DynamoDBの紹介と東急ハンズでの活用について](https://reader034.fdocuments.net/reader034/viewer/2022052509/55a9b25e1a28ab384f8b463b/html5/thumbnails/16.jpg)
15
1. Amazon DynamoDBの紹介
今紹介した、3つのインデックスを活用して、アプリケーションを実装することになります。
DynamoDBはインデックス設計がキモになります。
2. インデックス
![Page 17: Amazon DynamoDBの紹介と東急ハンズでの活用について](https://reader034.fdocuments.net/reader034/viewer/2022052509/55a9b25e1a28ab384f8b463b/html5/thumbnails/17.jpg)
16
1. Amazon DynamoDBの紹介
マネージメントコンソールからテーブル作成
DynamoDBの始め方
もちろん、aws cli からもできます。
テーブル名
Primary Key(インデックス)
- Hash Key
- Range Key
スループット- Read Capacity
- Write Capacity
![Page 18: Amazon DynamoDBの紹介と東急ハンズでの活用について](https://reader034.fdocuments.net/reader034/viewer/2022052509/55a9b25e1a28ab384f8b463b/html5/thumbnails/18.jpg)
17
1. Amazon DynamoDBの紹介
各言語のSDKがあるので、好きな言語で遊んでみる。
DynamoDBの始め方
Java Python PHP
.NETRuby Node.js など
Gophar君が仲間になりたそうにこっちをみている。
New !
![Page 19: Amazon DynamoDBの紹介と東急ハンズでの活用について](https://reader034.fdocuments.net/reader034/viewer/2022052509/55a9b25e1a28ab384f8b463b/html5/thumbnails/19.jpg)
18
1. Amazon DynamoDBの紹介 (1)
ローカルで開発するには、DynamoDB Localを
DynamoDBの始め方
• 無料で使えるDynamoDB疑似環境• Javaが動く環境であれば動く(はず)• JavaScript Shell が同胞されており、ブラウザから試せる
![Page 20: Amazon DynamoDBの紹介と東急ハンズでの活用について](https://reader034.fdocuments.net/reader034/viewer/2022052509/55a9b25e1a28ab384f8b463b/html5/thumbnails/20.jpg)
19
1. Amazon DynamoDBの紹介
2. 東急ハンズでの活用について
3. おまけ(DynamoDB最新情報)
![Page 21: Amazon DynamoDBの紹介と東急ハンズでの活用について](https://reader034.fdocuments.net/reader034/viewer/2022052509/55a9b25e1a28ab384f8b463b/html5/thumbnails/21.jpg)
20
2. 東急ハンズでの活用方法について
• 毎年8月末にハンズ恒例の大セール「ハンズメッセ」開催。
• ネットストア(ハンズネット)も同時開催• セール開始時(00:00)にお客様が殺到• サーバーが落ちる
• というのを2年くらい経験
Amazon DynamoDB導入の背景
コストを抑えつつ、セールの爆発的なトラフィックにも耐えられる仕組みの構築が急務
![Page 22: Amazon DynamoDBの紹介と東急ハンズでの活用について](https://reader034.fdocuments.net/reader034/viewer/2022052509/55a9b25e1a28ab384f8b463b/html5/thumbnails/22.jpg)
21
2. 東急ハンズでの活用方法について
参考: セール時のスパイクアクセス
0.00
50.00
100.00
150.00
200.00
250.00
300.00
350.00
400.00
450.00
500.00
20
14-0
8-2
7 2
3:4
0
20
14-0
8-2
7 2
3:4
4
20
14-0
8-2
7 2
3:4
8
20
14-0
8-2
7 2
3:5
2
20
14-0
8-2
7 2
3:5
6
20
14-0
8-2
8 0
0:0
0
20
14-0
8-2
8 0
0:0
4
20
14-0
8-2
8 0
0:0
8
20
14-0
8-2
8 0
0:1
2
20
14-0
8-2
8 0
0:1
6
20
14-0
8-2
8 0
0:2
0
20
14-0
8-2
8 0
0:2
4
20
14-0
8-2
8 0
0:2
8
20
14-0
8-2
8 0
0:3
2
20
14-0
8-2
8 0
0:3
6
20
14-0
8-2
8 0
0:4
0
20
14-0
8-2
8 0
0:4
4
20
14-0
8-2
8 0
0:4
8
20
14-0
8-2
8 0
0:5
2
20
14-0
8-2
8 0
0:5
6
20
14-0
8-2
8 0
1:0
0
20
14-0
8-2
8 0
1:0
4
20
14-0
8-2
8 0
1:0
8
20
14-0
8-2
8 0
1:1
2
20
14-0
8-2
8 0
1:1
6
20
14-0
8-2
8 0
1:2
0
20
14-0
8-2
8 0
1:2
4
20
14-0
8-2
8 0
1:2
8
20
14-0
8-2
8 0
1:3
2
20
14-0
8-2
8 0
1:3
6
20
14-0
8-2
8 0
1:4
0
20
14-0
8-2
8 0
1:4
4
20
14-0
8-2
8 0
1:4
8
20
14-0
8-2
8 0
1:5
2
20
14-0
8-2
8 0
1:5
6
セール開始
![Page 23: Amazon DynamoDBの紹介と東急ハンズでの活用について](https://reader034.fdocuments.net/reader034/viewer/2022052509/55a9b25e1a28ab384f8b463b/html5/thumbnails/23.jpg)
22
2. 東急ハンズでの活用方法について
以前のハンズネット の構成
WEB Servers API Servers
ELB ELB
データをファイルで持っていたため、サーバを増やすごとにファイル同期コストが増大
ユーザ
![Page 24: Amazon DynamoDBの紹介と東急ハンズでの活用について](https://reader034.fdocuments.net/reader034/viewer/2022052509/55a9b25e1a28ab384f8b463b/html5/thumbnails/24.jpg)
23
2. 東急ハンズでの活用方法について
改善後のハンズネットの構成
WEB Servers API Servers
ELB ELB
Data Layer
DynamoDB
S3
データ層は単一障害点にならないアーキテクチャの中から選定
Elastic Beanstalk
Beanstalk による Auto Scale
ユーザ
![Page 25: Amazon DynamoDBの紹介と東急ハンズでの活用について](https://reader034.fdocuments.net/reader034/viewer/2022052509/55a9b25e1a28ab384f8b463b/html5/thumbnails/25.jpg)
24
2. 東急ハンズでの活用方法について
データの種類・用途によるストレージの使い分け
ユーザーが生成するデータサービス提供側が生成するデータ
商品マスタ商品詳細情報店舗在庫数
セッション情報ショッピングカート購入履歴会員情報
順次作られる動的データ半静的データ、読み込み専用データ
お気に入り商品情報商品レビューネットストア在庫
価格特集コンテンツ画像
= 増え続けるデータ
DynamoDB S3 SQLite DynamoDB
= コントロール可能なデータ
![Page 26: Amazon DynamoDBの紹介と東急ハンズでの活用について](https://reader034.fdocuments.net/reader034/viewer/2022052509/55a9b25e1a28ab384f8b463b/html5/thumbnails/26.jpg)
25
DynamoDB所感
• データ容量の制限がないことや、大量アクセス時の安心感は大きい。• DynamoDBを使ったプログラムは、コード改修なしでスケールできる• DynamoDBは最初とっつきにくいので、一部から導入して、自信をつ
けたら範囲を広げていくのが良いかもしれない。
2. 東急ハンズでの活用方法について
→ ハンズでは、セッションから始めて商品データ、カートへと徐々に用途拡大して行った。
• DynamoDBだけで全部やろうとするとつらい。
→ 検索はCloudSearchにするなど、他のシステムとの併用も検討。
• 料金は安い。心配しないで使ってみて。
![Page 27: Amazon DynamoDBの紹介と東急ハンズでの活用について](https://reader034.fdocuments.net/reader034/viewer/2022052509/55a9b25e1a28ab384f8b463b/html5/thumbnails/27.jpg)
26
1. Amazon DynamoDBの紹介
3. おまけ(DynamoDB最新情報)
2. 東急ハンズでの活用について
![Page 28: Amazon DynamoDBの紹介と東急ハンズでの活用について](https://reader034.fdocuments.net/reader034/viewer/2022052509/55a9b25e1a28ab384f8b463b/html5/thumbnails/28.jpg)
27
3. おまけ
DynamoDB最新情報
• オンラインでGlobal Secondary Indexが作成できるように。• リザーブドキャパシティが 100Unitから購入できるように。
• 以前は4000Unitだったので、より小規模でも導入しやすく• 月額課金に比べて53%(1年)から76%(3年)のコスト削減が可
能• DynamoDB Streams が Preview リリース
• Redshiftや、CloudSearchなどとの連携がやりやすく
![Page 29: Amazon DynamoDBの紹介と東急ハンズでの活用について](https://reader034.fdocuments.net/reader034/viewer/2022052509/55a9b25e1a28ab384f8b463b/html5/thumbnails/29.jpg)
Let's work together!
・AWSエンジニア
・iOSエンジニア
・Webエンジニア
ハンズラボは積極的に技術者採用中です。
![Page 30: Amazon DynamoDBの紹介と東急ハンズでの活用について](https://reader034.fdocuments.net/reader034/viewer/2022052509/55a9b25e1a28ab384f8b463b/html5/thumbnails/30.jpg)
29
ぜひ手を動かして、触ってみてください!
ご清聴ありがとうございました。
Try ! DynamoDB