lv1から始める - amazon web serviceslv1から始める webサービスのインフラ構築...
TRANSCRIPT
![Page 1: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/1.jpg)
Lv1から始めるWebサービスのインフラ構築
2014-09-09 AWS Cloud Storage & DB Day
株式会社マイネット
伊藤 祐策
![Page 2: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/2.jpg)
自己紹介
名前 伊藤 祐策
勤務先 株式会社マイネット
肩書 アーキテクト
事業内容 スマートフォン向けゲームの開発・運営
お仕事内容
・自社ゲームタイトルのサーバーインフラ構築
・アプリケーション開発
・主にサーバーサイド設計(特にDB設計!)
![Page 3: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/3.jpg)
自己紹介
大好きなAWSサービスは?
1位.Amazon DynamoDB
2位.Amazon S3
3位.Amazon CloudFront
![Page 4: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/4.jpg)
自己紹介
まあでも青いアイコンのサービスはだいたい大好きです。
![Page 5: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/5.jpg)
今日のお話はこんな人におすすめ
Webサービスを作って
スタートアップしたい人
ユーザー数1人から100万人までをAWSで!
![Page 6: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/6.jpg)
もくじ
第一部
Lv1から始めるWebサービス
第二部
スケーラブルな構成にするには?
第三部
DynamoDBの正しい使い方
![Page 7: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/7.jpg)
第一部
Lv1から始めるWebサービス
![Page 8: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/8.jpg)
シナリオ
あなたはとあるWeb系会社のエンジニアです。
ある日、社長が突然こんなことを言い出しました。
「我が社もソーシャルゲーム事業に参入するぞ!」
一瞬目眩がしましたが、あなたは覚悟を決めてシステム設計を開始しました・・・。
※このシナリオは全てフィクションです
![Page 9: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/9.jpg)
シナリオ
サービスリリースまでのステップ
1. アプリケーション開発
2. 社内アルファテスト(ユーザー数10人)
3. ベータテスト(同500人~???)
4. 正式オープン(同1万人~???)
![Page 10: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/10.jpg)
シナリオ
先輩社員の助言によりAWSを採用することは決定しましたが、あなたはAWSは全くの未経験でした。
そこでまずはAWSのアカウントを取るところから始めることにしました。
【最初の目標】
アルファテスト用の環境を構築する
![Page 11: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/11.jpg)
Step1 アカウント取得
AWSアカウントを取得する
★ここがポイント
必ず2アカウント用意しよう!
・本番環境用アカウント
・開発環境用アカウント(兼試験環境)
テストや訓練に費用を惜しまないこと!
![Page 12: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/12.jpg)
Step2 IAM
IAMで子アカウントを作成する
グループは以下の2種類を作る
・AWSコンソールにアクセスする「人間ユーザー」
→ Administratorテンプレートをそのまま使う
・アプリケーションユーザー
→ 必要最低限のアクセス権限だけを付与する
※IAMを作ったらrootアカウントは封印しましょう
![Page 13: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/13.jpg)
Step3 VPC
VPCを構築する
サブネットとゲートウェイを作成して関連付ける
★ここがポイント
・サブネットは適切に切る(後述)
・"Auto-Assign Pulibc IP"をONにする
→ EIPを使う数を節約できる
![Page 14: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/14.jpg)
Step3 VPC
サブネットはこんな分割方法がオススメ
10.1.0.0/17 ← まずは半分をAZ-aに
10.1.128.0/18 ← 残りを半分をAZ-cに
10.1.192.0/19 ← さらもう半分をAZ-a に
領域を使いきってしまうとあとで困る!
![Page 15: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/15.jpg)
Step4 セキュリティグループ
セキュリティーグループを構築する
サーバーの役割種別ごとにセキュリティーグループを1個作る。
【例】
・Webサーバー
外部から80番、443番。内部から22番。
・RDS(MySQL)サーバー
内部から3306番。
![Page 16: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/16.jpg)
Step5 EC2
EC2インスタンスを作成する
★ここがポイント
・配備先AZに気をつけて!
→ リザーブドインスタンスを買う時に困る
→ たまにインスタンスタイプが枯渇する
※AWSの営業の人に相談しよう
・セットアップが完了したらAMIをとっておこう!
![Page 17: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/17.jpg)
Step6 EIP
EIPを取得する
外部に公開するインスタンスのENIにアタッチする。
★ここがポイント
・EIP取得数の制限に注意!(申請で解除可能)
・インスタンスタイプ別にも関連付け可能数の制限がある
![Page 18: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/18.jpg)
Step6 EIP
必要なEIPはいくつ?
1個目 一般公開サイト用
2個目 運営管理サイト用
3個目 SSHゲートウェイサーバー用
だいたい3個もあれば十分なのです!
![Page 19: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/19.jpg)
Step7 Route53
Route53でゾーン設定をする
取得したEIPをホスト名登録する
★ここがポイント
・メール送信するときはSPFの設定を忘れずに!
・さらにEIPに対するメール送信制限解除申請も必要なので一緒に済ませておこう!
![Page 20: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/20.jpg)
システム構成図(Lv1)
t2.micro
約 2,000円/月
![Page 21: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/21.jpg)
シナリオ
アプリケーションも完成に近づき、いよいよ一般ユーザーへサービスを公開することにしました。
しかし先輩社員はこんなことを言いだしました。
「この構成でインスタンスタイプ
上げるだけじゃダメなの?」
![Page 22: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/22.jpg)
問題
この構成のままインスタンスタイプを上げるだけでは商用環境としてダメな理由を答えなさい。
![Page 23: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/23.jpg)
解答
データの保全性が確保されていないから。
![Page 24: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/24.jpg)
Webサービスとは
サービスアプリ
ケーション データ+=
Webサービスは「生き物」です!
![Page 25: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/25.jpg)
保全性について
「アプリケーション」はsubversionやgithub等にマスターがあるので保全性が確保されている。
![Page 26: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/26.jpg)
保全性について
一方「データ」はEC2のEBS上にあるのである日突然失われる可能性がある。
データが消失 → サービス終了!
![Page 27: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/27.jpg)
商用環境の最低ライン
「隕石が直撃しても大丈夫」
データセンターが1つ壊滅してもサービスを復旧できること。
![Page 28: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/28.jpg)
システム構成図(商用Lv1)
約 10,000円/月
db.m1.small
db.m1.small
t2.small
Multi-AZ 配置
EIP
AMI
同期
![Page 29: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/29.jpg)
システム構成図(商用Lv2)
約 13,000円/月
db.m1.small
db.m1.small
t2.small
ログ出力
Multi-AZ 配置
EIP
AMI
S3
ELB
同期
![Page 30: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/30.jpg)
データセンター
隕石
ちょっと隕石当ててみましょう
![Page 31: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/31.jpg)
システム構成図(隕石直撃前)
db.m1.small
db.m1.small
t2.small
ログ出力
Multi-AZ 配置
EIP
AMI
S3
ELB
同期
![Page 32: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/32.jpg)
システム構成図(AZ壊滅後)
db.m1.small
db.m1.small
t2.small
ログ出力
Multi-AZ 配置
EIP
AMI
S3
ELB
同期
![Page 33: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/33.jpg)
問題
以下のAWSストレージ系サービスうち、デフォルトでデータの保全性が確保されているものはどれか?
S3 EBS DynamoDBRDS
Multi-AZ ElastiCache
![Page 34: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/34.jpg)
解答
以下のAWSストレージ系サービスうち、デフォルトでデータの保全性が確保されているものはどれか?
S3 EBS DynamoDBRDS
Multi-AZ ElastiCache
![Page 35: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/35.jpg)
まとめ
「大事なデータ」は保全性が確保されているストレージサービスに保存しましょう。
データさえ生き残っていればサービスは何度でも蘇ります!
![Page 36: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/36.jpg)
この式は見覚えありますよね?
MTBF
MTBF + MTTRA =
A .......... 可用性MTBF ... 平均故障間隔MTTR ... 平均復旧間隔
![Page 37: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/37.jpg)
まずはMTTRを∞にしない保証を作ること
MTBF
MTBF + MTTRA =
A .......... 可用性MTBF ... 平均故障間隔MTTR ... 平均復旧間隔
コレの件
・・・というお話でした。
![Page 38: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/38.jpg)
質問タイム
2分ほど休憩
![Page 39: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/39.jpg)
第二部
スケーラブルな構成にするには?
![Page 40: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/40.jpg)
シナリオ
保全性の確保された構成の構築方法はわかったのですが、この「商用Lv2」の構成ではベータテストの負荷には耐えられそうにありません。しかし、ベータテストでは何人のユーザーが押し寄せるのかが全く検討もつきません。
【次の目標】
想定以上の負荷が来ても
すぐに対応できる環境を構築する
![Page 41: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/41.jpg)
用語おさらい
「スケーラブル」とは?
1. 増大する負荷に容易に対応できる
2. 負荷に合わせて自動的に拡張される
![Page 42: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/42.jpg)
用語おさらい
「スケーラブル」とは?
1. 増大する負荷に容易に対応できる
↑こっちの話をします
2. 負荷に合わせて自動的に拡張される
↑これはややこしいのでまた今度...
![Page 43: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/43.jpg)
用語おさらい
スケールアップ
ノードの性能を上げること
=インスタンスタイプを上げること
スケールアウト
ノードの数を増やすこと
=インスタンスを追加すること
![Page 44: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/44.jpg)
理想パターン
・EC2インスタンスを追加すると全体性能があがる。
・RDSのリードレプリカを増やすと全体性能があがる。
・DynamoDBの性能予約を買い足すと全体性能があがる。
![Page 45: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/45.jpg)
将来が不安なパターン
・インスタンスタイプを上げると全体性能があがる。
・EBSのIO性能を上げると全体性能があがる。
→ コスト効率が悪くなる
→ 性能拡張に上限がある
![Page 46: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/46.jpg)
つまりこういうこと
スケールアウトできる形にする
スケールアップで全体性能があがるのは当たり前!
![Page 47: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/47.jpg)
スケーラブルな構成(基本形)
EC2
EC2
EC2
マスターDB
リードレプリカ
ELB
![Page 48: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/48.jpg)
スケーラブルな構成(基本形)
EC2
EC2
EC2リードレプリカ
マスターDB
ELB
CPU負荷
DB読み込み負荷
DB書き込み負荷
スケールアウトスケールアウト
スケールアップ
![Page 49: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/49.jpg)
サーバー負荷の傾向と対策
ボトルネックになるのは
いつだってデータベース負荷
マスターDB
\もう限界/
![Page 50: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/50.jpg)
各種ストレージサービス解説
Amazon RDS
フルマネージドリレーショナルDB
Amazon DynamoDB
フルマネージドKVS型分散DB
Amazon ElastiCache
ただのキャッシュサーバ
![Page 51: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/51.jpg)
Amazon RDS
ここがすごい!・メンテナンスフリー!
自動的に定期バックアップ
AZ間でレプリケーション ※Multi-AZ配備時
・リードレプリカをボタン1発で作成!
読み込み性能を簡単スケーリング
![Page 52: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/52.jpg)
Amazon RDS
ここは注意!・一度起動すると止められない
稼働停止=データ削除
EC2のように休止ができない
・スケールアップ時にアクセス不可になる
だいたい10分~30分くらい
メンテナンスモード必須
![Page 53: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/53.jpg)
リレーショナルDB特有の問題
マスターDBへの負荷は
どうあがいてもボトルネックになる。
書き込み処理が激しいアプリケーションではいずれ限界が・・・。
...しかしそこへ救世主が登場!
![Page 54: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/54.jpg)
Amazon DynamoDB
ここがすごい!・メンテナンスフリー!
・すごい耐障害性 ※3箇所以上に分散保存
・性能予約課金
・動的な性能調整が可能
・負荷による性能劣化を起さない
![Page 55: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/55.jpg)
Amazon DynamoDB
Amazon DynamoDBは
マスターDBへの書き込み負荷が
ヤバい時の救世主!?
![Page 56: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/56.jpg)
Amazon DynamoDB
ここは注意!・一貫性のあるバックアップを動的にとれない
「一貫性」か「動的」のどちらかを諦める
・性能上限に達すると一時的にアクセス不可になる
ちょっと余裕を持って予約する必要がある
・単純な機能しかない
集計とかは無理です
![Page 57: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/57.jpg)
Amazon DynamoDB
どう使うか?
負荷分散のための補助データベースとして使う
NoSQL初心者にはこちらがオススメ。
メインデータベースとして使う
鬼門。死ヲ覚悟セヨ。(※第三部で解説)
![Page 58: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/58.jpg)
Amazon ElastiCache
ここがすごい!
・とにかく速い
※中身はただのMemcachedです。
※でも最近Redisも対応しました!
![Page 59: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/59.jpg)
Amazon ElastiCache
どう使うか?
・大事なデータの格納はNG
・ストレージの読み込み負荷を軽減させるためのキャッシュとして使う
![Page 60: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/60.jpg)
まとめ
スケールアウト可能な構成をがんばって構築しましょう。
しかし、それでもいつかはマスターDBの負荷が限界にくることでしょう。
![Page 61: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/61.jpg)
質問タイム
2分ほど休憩
![Page 62: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/62.jpg)
第三部
DynamoDBの正しい使い方
![Page 63: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/63.jpg)
シナリオ
無事リリースされたサービスは幸運にも大ヒットし、ユーザー数を急速に伸ばしていきました。しかしマスターDBの負荷は増大し、インスタンスタイプをdb.cr1.8xlargeまで上げたのにも関わらず性能の限
界が来てしまいました。そこであなたが決断した最後の手段とは・・・。
【次の目標】
DynamoDBを使ってピンチを乗り切る
![Page 64: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/64.jpg)
Amazon DynamoDBとは何か
・分散データベースである。
・Key Value Storeである。
・NoSQLである。
・スキーマレスである。
・フルマネージド型サービスである。
![Page 65: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/65.jpg)
Amazon DynamoDBの特徴
・ハッシュキーを基に負荷が分散される。
・読込性能、書込性能それぞれの予約した性能量に対して課金される。
・1レコードは64kBまで格納可能。
※キー名も容量に含まれるので注意
![Page 66: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/66.jpg)
使い方別難易度
【Easy】
ユーザー単位で独立しているデータだけをDynamoDBに移行して補助的に使う。
【Nightmare】
全てのデータをDynamoDBに載せてメインデータベースとして使う。RDSは補助データベースとして使う。
![Page 67: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/67.jpg)
テーブル設計の勘所
★ここがポイント
テーブル設計は
プライマリーキーの設計が命
![Page 68: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/68.jpg)
プライマリキー設計
プライマリキーの仕様
・プライマリキーの形式は2種類から選べる
1.ハッシュキーのみ
2. ハッシュキー+レンジキー
・処理の分散はハッシュキーによって行われる
・レンジキーでのみ範囲検索が可能
![Page 69: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/69.jpg)
プライマリキー設計
設計例1ユーザー固有情報
HashKey : ユーザーID
RangeKey : なし
・アカウント情報
・プロフィール情報
![Page 70: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/70.jpg)
プライマリキー設計
設計例2ユーザーの対ユーザー関係
HashKey : ユーザーID
RangeKey : 対象ユーザーID
・フォロー、遮断
![Page 71: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/71.jpg)
プライマリキー設計
設計例3ユーザーの行動履歴
HashKey : ユーザーID
RangeKey : ログID
・ゲーム内アイテムの購入
・攻撃コマンドの実行
・etc
![Page 72: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/72.jpg)
ログIDの作り方
・ログの発生時刻から文字列で生成する。
・乱数も混ぜるといいかも。
・万が一衝突したらもう一度トライ。
例:"2014090916301234"※桁数は固定しましょう
![Page 73: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/73.jpg)
プライマリキー設計
設計例4ユーザーの所有オブジェクト
HashKey : ユーザーID
RangeKey : オブジェクトID
・所有カード
・投稿記事
※オブジェクトIDはログIDと同じ方法で生成
![Page 74: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/74.jpg)
プライマリキー設計
設計例5 ユーザー間関係情報
HashKey : ユーザーID+対象ユーザーID
RangeKey :なし
・フレンド
※ユーザーIDは小さい方を先にする
![Page 75: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/75.jpg)
シナリオ
マスターDBへ一番書き込んでいたのは実はユーザーの行動履歴でした。そこで、ユーザー行動履歴をDynamoDBに移行させたところ、大幅に書き込み負荷が減って無事ピンチをのりきりました。めでたしめでたし。
おしまい
※面倒くさいのでここでシナリオは打ち切りです
![Page 76: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/76.jpg)
鬼門の入口
ここからはNightmareモードです。
![Page 77: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/77.jpg)
リレーショナルDBの限界
レコード同士の整合性を保証する代償として、複数のノード上で処理を分散できないという制約を受けている。
整合性の保証
![Page 78: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/78.jpg)
分散データベースの特徴
レコード同士の整合性を解消し、複数のノードで処理を分担できるようにしたのが分散DB。
整合性の解消
![Page 79: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/79.jpg)
整合性保証を失うということ
要するに
「トランザクション」
が使えなくなる
![Page 80: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/80.jpg)
トランザクションが使えないということ
同時に2つ以上のレコードを
整合性をたもったまま
更新することができない
![Page 81: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/81.jpg)
トランザクションがないとこうなる
100ゴールドする薬草を買います。
所持金 1,000 G
薬草 0個
![Page 82: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/82.jpg)
トランザクションがないとこうなる
所持金を -100 します。
所持金 900 G
薬草 0個
-100
![Page 83: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/83.jpg)
トランザクションがないとこうなる
薬草を +1 します。
所持金 900 G
薬草 1個 +1
![Page 84: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/84.jpg)
トランザクションがないとこうなる
・・・がしかし、サーバー障害が発生して更新に失敗してしまいました。
所持金 900 G
薬草 0個
![Page 85: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/85.jpg)
もし整合性保証があれば・・・
ロールバックしてしまえば所持金も元に戻るのでユーザーの被害はない。つまり、
ALL or Nothingが保証されている
![Page 86: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/86.jpg)
ではどうするのか?
アプリケーション側で
トランザクションを実装する
そりゃ鬼門と言われても仕方がないですね
![Page 87: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/87.jpg)
トランザクションの構図(RDBMS)
アプリケーション
MySQL
テーブル テーブル テーブル
トランザクション
![Page 88: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/88.jpg)
DynamoDBDynamoDBDynamoDB
トランザクションの構図(DynamoDB)
アプリケーション
テーブル テーブル テーブル
トランザクション
![Page 89: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/89.jpg)
トランザクションの作り方
・更新処理の開始から完了までを1つのトランザクションと捉える。
・各レコードの更新には楽観的ロックを用いる。
・全ての更新処理に冪等性を持たせる。
・処理の途中で失敗したら最初からやりなおす。
・結果が収束するまで何度もやりなおす。
![Page 90: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/90.jpg)
用語解説
楽観的ロック
【意味】読み込んだレコードを更新するとき、他の並行プロセスによって変更がされていないことを期待して更新をする方式。
並列性を高めるためにとても重要な概念
![Page 91: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/91.jpg)
用語解説
CAS操作【意味】Compare and Swapの略。更新対象
のレコードの状態が期待した状態のときのみ更新を実行し、そうでない場合は何もしない操作。
楽観的ロックに必要な概念
![Page 92: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/92.jpg)
CAS操作をSQLで表すと
UPDATE user
SET status=1,updated_at=NOW()
WHERE id=100 AND status=0
※初期状態はstatus=0とする。
![Page 93: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/93.jpg)
用語解説
冪等性【意味】ある操作を1回行っても複数回行っても結果が同じであること。
整合性を確保するためにとても重要な概念
![Page 94: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/94.jpg)
冪等性のある処理の作り方
処理済?CASで更新
完了
開始
更新失敗
読込
更新成功
NO
YES
![Page 95: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/95.jpg)
冪等性のある処理の作り方
冪等性の確保された処理はいくつ連結しても冪等性を保てる。
function()
function()function() function()
✔
✔
![Page 96: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/96.jpg)
実装例
更新依頼書ID:123
所持金 : -100薬草 : +1
所持金1,000G
薬草0個
レコードを準備
![Page 97: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/97.jpg)
実装例
更新依頼書ID:123
所持金 : -100薬草 : +1
所持金900G-100
ID:123
薬草0個
所持金を更新
![Page 98: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/98.jpg)
実装例
更新依頼書ID:123
所持金 : -100薬草 : +1
所持金900G
ID:123
薬草1個+1
ID:123
薬草の数を更新
![Page 99: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/99.jpg)
実装例
更新依頼書ID:123
所持金 : -100薬草 : +1状態:完了
所持金900G
ID:123
薬草1個
ID:123
完了済みにする
![Page 100: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/100.jpg)
実装例
更新依頼書ID:123
所持金 : -100薬草 : +1状態:完了
所持金900G
薬草1個
掃除して完了
![Page 101: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/101.jpg)
SQSと組み合わせて使う
1. 依頼書をレコードとして作る
2. SQSへ依頼書IDが書かれたメッセージを発行
3. バックグラウンドでSQSからメッセージを受け取り、結果が収束するまで何度も実行する。
![Page 102: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/102.jpg)
全体フローチャート
依頼書作成
完了
開始
キュー発行
開始
冪等処理
冪等処理
完了
エラー発生
エラー発生
![Page 103: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/103.jpg)
ロールバック処理
更新依頼書ID:123
所持金 : -100薬草 : +1
所持金1,000G
薬草0個
レコードを準備
![Page 104: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/104.jpg)
所持金1,000G
ロールバック処理
更新依頼書ID:123
所持金 : -100薬草 : +1
薬草99個+99
別の並行処理が邪魔をする
![Page 105: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/105.jpg)
ロールバック処理
更新依頼書ID:123
所持金 : -100薬草 : +1
所持金900G-100
ID:123
薬草99個
所持金を更新
![Page 106: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/106.jpg)
ロールバック処理
更新依頼書ID:123
所持金 : -100薬草 : +1
所持金900G
ID:123
薬草99個
+1上限エラー
薬草の数を更新
![Page 107: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/107.jpg)
ロールバック処理
更新依頼書ID:123
所持金 : -100薬草 : +1状態:失敗
失敗済みにする所持金900G
ID:123
薬草99個
![Page 108: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/108.jpg)
ロールバック処理
更新依頼書ID:123
所持金 : -100薬草 : +1状態:失敗
所持金1,000G+100
薬草99個
所持金を戻す
![Page 109: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/109.jpg)
ロールバック処理
更新依頼書ID:123
所持金 : -100薬草 : +1状態:失敗
薬草の数も一応処理所持金1,000G
薬草99個
![Page 110: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/110.jpg)
ロールバック処理
更新依頼書ID:123
所持金 : -100薬草 : +1状態:失敗
完了(状態収束)所持金1,000G
薬草99個
![Page 111: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/111.jpg)
まとめ
分散DBをメインDBとして使う場合、トランザクションの再実装をしなければいけないので大変。
しっかりフレームワークを組んでから挑むことを強く推奨。
![Page 112: Lv1から始める - Amazon Web ServicesLv1から始める Webサービスのインフラ構築 2014-09-09 AWS Cloud Storage & DB Day 株式会社マイネット 伊藤祐策 自己紹介](https://reader034.vdocuments.pub/reader034/viewer/2022042405/5f1e7944bd406953d220a533/html5/thumbnails/112.jpg)
質問タイム
お疲れ様でした