New Cloud Design Pattern
using Amazon Aurora
Amazon RDS for Aurora
東京ローンチ記念セミナー
classmethod.jp 2
2015年11月10日 クラスメソッド株式会社
AWSコンサルティング部 大栗 宗
自己紹介
大栗 宗(おおぐりはじめ)
@maroon1st
AWS環境におけるインフラ環境の
コンサルティング、設計、構築
http://dev.classmethod.jp/author/oguri-hajime/
classmethod.jp 3
クラスメソッド株式会社
• 2004年設立
• 主な事業内容
– AWSコンサル/監視
– モバイルアプリ開発
– データ分析環境開発
• APN プレミアコンサルティングパートナー
• APN コンピテンシー:ビッグデータ、モバイル
classmethod.jp 4
• 社員執筆による技術ブログ
http://dev.classmethod.jp
• Aurora関連34本
• re:Invent 2015関連200本
• AWS関連:2000本以上
classmethod.jp 5
Developers.IOの負荷問題
• アクセス数 → re:Invent等イベント
• 投稿数 → 4800本以上
• 投稿者 → 社員全員
• ランク制 → SNSポイントの集計
classmethod.jp 6
Developers.IOの構成
• Elastic Beanstalk+WordPressが基本構成
• eb cloneで新環境
• Snapshotで移行
classmethod.jp 7
移行結果
classmethod.jp 8
MySQL Aurora
最小値 40 ms 18 ms
最大値 110 ms 35 ms
中央値 50 ms 25 ms
MySQL Aurora
insert 30~50 ms 9 ms
other 3 ms 2 ms
select 5 ms 3 ms
delete 25~30 ms 7 ms
update 25~30 ms 6 ms
Top database operations
by time consumed
Databese response time
移行結果
• 移行前:db.m3.medium (MySQL Multi-AZ)
移行後:db.r3.large (Aurora)
$ 172.8 → $ 252
• 標準でデータが6重化されるため十分な対障害性
があるのでSingle-AZで十分と判断
• 約1.5倍のコストで2~5倍の性能
classmethod.jp 9
AURORA移行中の事例
SNSサイトでの移行
classmethod.jp 10
SNSサイトのDB
• RDS(db.r3.8xlarge)
• エンジンはMySQL
• 9台のレプリカ
• 継続的な書き込み
• EC2−Classic環境
classmethod.jp 11
Auroraに対する期待
• 高性能化による台数削減
→ ランニングコスト減少
管理対象の減少
• 高可用性
→ 現状はコスト削減のためSingle-AZ
障害時に高速な回復
classmethod.jp 12
classmethod.jp 13
鋭意移行検証中
NEW CDPの提案
DB Scheduled Scale Up
classmethod.jp 14
CDP
AWSクラウドデザインパターン (AWS Cloud
Design Pattern, 略してCDPと呼ぶ)とは、
AWSクラウドを使ったシステムアーキテク
チャ設計を行う際に発生する、典型的な問題と
それに対する解決策・設計方法を、分かりやす
く分類して、ノウハウとして利用できるように
整理したものである。
http://aws.clouddesignpattern.org/index.php/ より
classmethod.jp 15
DBの良くある悩み
• DBは性能向上をScale Upで行うためサー
ビス期間中には切替えられません。その
ためピーク時の負荷に合わせたサイジン
グを行います。
常時ピーク性能のスペックを使用するの
で高コストになりがちです。
classmethod.jp 16
解決方針
• Auroraは高速なフェイルオーバーが可能。
サービス中に、スペックの異なるインス
タンスへ入れ替えが可能ではないか?
→ DB Scheduled Scale Up
classmethod.jp 17
DB Scheduled Scale Up
• 負荷のピーク前にScale Upでスペックを
上げて、ピーク後にScale Downでスペッ
クを下げる。
• 高速なフェイルオーバーと定時起動が必
要となる。
classmethod.jp 18
高速なフェイルオーバー
• フェイルオーバーを更に高速に
→ MariaDB Connector/J
• Auroraのグローバル変数(innodb_read_only)
でwriterとreaderを判断するJDBCドライバ。
• 1〜2秒で切り替えが可能。
classmethod.jp 19
定時起動
• 決まった時刻にAPIを実行したい
→ Lambdaでスケジュール実行
• コードの記述のみ(OSの管理無し)で実行可能な
コンピューティング リソース
• cron形式でスケジュールを記述可能
classmethod.jp 20
構造
1. 大きなスペックのAuroraを
readerとして起動する
classmethod.jp 21
構造
2. 両方のAuroraへ向くように
接続情報を更新する
classmethod.jp 22
構造
3. Auroraをフェイルオーバー
EC2の接続先も切り替わる
classmethod.jp 23
構造
4. 大きいインスタンスのみに
接続情報を更新する
classmethod.jp 24
構造
5. 小さいインスタンスを削除
classmethod.jp 25
注意
• 現状ではJavaアプリケーションのみ対応。
(MariaDB Connector/JはJDBCドライバ)
• 接続情報の更新は、Run CommandやElastic
BeastalkのB/Gデプロイ等が考えられる。
• MariaDB MaxScaleで対応してくれるとアプリ
の言語に依存しない。
classmethod.jp 26
まとめ
classmethod.jp 27
まとめ
• Single-AZでも十分な対障害性。
• エンタープライズDBだけでなくOSS DB
と比較して低価格の場合も。
• 高速なフェイルオーバーでダウンタイム
を極小化。MariaDB Connector/Jで更に
高速に。
classmethod.jp 28
New Cloud Design Pattern using Amazon Aurora

New Cloud Design Pattern using Amazon Aurora