Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Makuake の急成長を支える Aurora 移行事例 / AWS Solution Day...
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Yoshiaki Yoshida
July 05, 2017
Technology
12k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Makuake の急成長を支える Aurora 移行事例 / AWS Solution Days 2017
Yoshiaki Yoshida
July 05, 2017
More Decks by Yoshiaki Yoshida
See All by Yoshiaki Yoshida
技術ブロガーを育てる!ブログメンタリングで何を教えているのか / Passion for Blog Mentoring
kakakakakku
8
38k
プログラミング初心者に教えるときは「身近な比喩」が重要なのだ! / Metaphor is Important for Beginner Programmer
kakakakakku
2
5.8k
プロジェクトの成功を支える ZenHub と モブプログラミング / ZenHub and Mob Programming
kakakakakku
1
6k
楽しく!アウトプットを習慣化しよう / Let's Enjoy Output
kakakakakku
3
7.1k
さぁ!今すぐプロジェクトリーダーに立候補しよう / Be a Project Leader
kakakakakku
3
10k
プロジェクトをリードする技術 (Kyash 社 再演) / Project Leading is Skill for Kyash
kakakakakku
4
2.3k
プロジェクトをリードする技術 / Project Leading is Skill
kakakakakku
49
53k
Mackerel で ECS をどこまでモニタリングできるのか / Monitoring ECS with Mackerel
kakakakakku
0
14k
[2018/01/30] Redash 初心者向けハンズオン / Redash Meetup #0.1
kakakakakku
0
2.5k
Other Decks in Technology
See All in Technology
事業価値と Engineering 2026年度版
recruitengineers
PRO
51
25k
その“隠したつもり”が命取り ── 自前と平文をやめて「正解」に委ねる
kuroneko13
0
130
Genie Codeハンズオン応用編
taka_aki
0
120
2026-08-15 JAWS-UG 茨城 #16 Secrets ManagerにおけるSecret値の管理(Terraformの場合) / Secrets Manager Secrets
masasuzu
0
230
Agent 時代の Kaggle 展望 / kaggle-in-the-agentic-era
upura
1
800
AI-DLC実践録_フルサイクル開発への挑戦
miyuc
0
240
Reference-Free Image Quality Assessment for Virtual Try-On via Human Feedback
zozotech
PRO
0
590
Bill One 開発エンジニア 紹介資料
sansan33
PRO
7
20k
Model Studio CLI × Token Plan
maigo999
0
190
案件に一番詳しいAIを Amazon Bedrock AgentCore で作る ― 知見が知見を生むチームへ / Compounding Knowledge with AgentCore
yusukeshimizu
1
140
Apache Icebergインフラストラクチャ:ストレージ・カタログ・エンジンの選択肢とClouderaプラットフォームでの実装
tsugiyama
0
120
Service Connect 上のサービスに ECS Service の外側から到達できなかった話
ota1022
1
270
Featured
See All Featured
Code Reviewing Like a Champion
maltzj
528
40k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
Being A Developer After 40
akosma
91
590k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.1k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
New Earth Scene 8
popppiees
3
2.5k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
960
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
420
Mobile First: as difficult as doing things right
swwweet
225
10k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.9k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.3k
Transcript
Makuake の急成長を支える Aurora 移行事例 AWS Solution Days 2017 ~ AWS
DB Day ~ 2017.07.05
吉田 慶章 @kakakakakku - CyberAgent Crowd Funding, Inc. - 開発本部所属
- DevOps エンジニア & サーバサイドエンジニア - エンジニアリングマネージャー - 趣味 : 技術ブログを毎週書くこと - http://kakakakakku.hatenablog.com/
Makuake - 2013年8月リリース - 国内最大の「クラウドファンディング・プラットフォーム」 - プロジェクト情報, 決済情報, コミュニケーション情報など 多種多様なデータを扱っている
課題感
データベースのライフサイクルは長い ウェブサーバと比較すると, スケールアウトも難しく, SPOF になりがち
課題感 - RDS ではなく MySQL 5.5 on EC2 を運用していた -
サービスをリリースしてから, 1度も止まらずに稼働していた - uptime 1000 days 以上 ( ゚д゚)!!! - ボトルネックになる「アーキテクチャの課題」と「運用の課題」 - サービスの急成長を支える新基盤にリプレイスを検討していた
「アーキテクチャの課題」と「運用の課題」 - 「アーキテクチャの課題」 - フェールオーバーができなかった ( MHA などの考慮なし ) -
バージョンアップが難しかった - 1TB 以上の EBS (Magnetic) がアタッチされていた - 「運用面の課題」 - 重い分析クエリが発行されてスレーブが高負荷になっていた - スロークエリを確認するために, 直接サーバに接続していた
Amazon Aurora そこで !!!
なぜ Aurora を採用したのか
なぜ Aurora を採用したのか - クエリパフォーマンスの高さ - Auto Scaling ストレージ (10
GB 単位) - 限りなくゼロに近い, Reader のレプリカラグ - 高速なフェイルオーバー - MySQL 5.6 完全互換
Aurora 移行の前に考えたこと
1. データを削減するアプローチ 「本当にこのデータは必要なのか?」と考えた
データ削減 - 思っている以上に, 不要なデータが大量に残っている (はず) - データ削減をすると, データ見積もりが容易になる - さらに,
データ移行時間を短くできるなど様々なメリットがある - 実績 - 約20テーブルを削除した - 不要なレポート系のデータを約1000万レコード削除した
2. メトリクスを見てスペックを見積もる 「適切な RDS インスタンスクラスはどれなのか?」と考えた
max_connections - MySQL で connections 関連のメトリクスを取得した - Max_used_connections を指標の1個にした
max_connections - パラメータグループのデフォルト値 - GREATEST({log(DBInstanceClassMemory/ 805306368)*45},{log(DBInstanceClassMemory/ 8187281408)*1000}) - インスタンスクラスごとのサイズを見て, 適切なクラスを見積もる
- db.r3.large 1000 - db.r3.xlarge 2000
innodb_buffer_pool_size - MySQL で InnoDB 関連のメトリクスを取得した - Buffer Pool Size
の使用量を指標の1個にした last(mysql.innodb[buffer_pool_pages_free]) / last(mysql.innodb[buffer_pool_pages_total]) * 100
innodb_buffer_pool_size - パラメータグループのデフォルト値 - {DBInstanceClassMemory*3/4} - インスタンスクラスごとのサイズを見て, 適切なクラスを見積もる - db.r3.large
7.45 GiB - db.r3.xlarge 18.72 GiB
パラメータグループのコツ - 「適用タイプ : static」のパラメータを最優先に考える - 反映に再起動が必要になるため - 基本的にはデフォルト値のまま使う -
Aurora Team がチューニングして厳選した値のため - default.aurora5.6 をコピーして環境ごとに用意しておく - 稼働中にどうしても変更したい場合に備えて
Aurora 移行
移行概要 - MySQL 5.5 on EC2 -> Aurora に移行 -
データ量を削減した「レポート DB」を「メイン DB」に統合 - 移行を「5フェーズ」に分類した - システムメンテナンスあり
app db (master) Read / Write batch 日次 mysqldump db
(report) db (slave) Read / Write レプリ Read Read フェーズ1 リストア リストア S3 Aurora Reader Aurora Reader 同期 Aurora Writer .dump.sql
app db (master) Read / Write batch db (report) Aurora
Reader Read / Write Aurora Reader レプリ 同期 Read Read フェーズ2 多段レプリ Aurora Writer db (slave) レプリ
app db (master) Read / Write batch db (report) db
(slave) Read / Write Aurora Reader レプリ レプリ Read フェーズ3 Reader Read 同期 参照系を Aurora にする Aurora Writer Aurora Reader
app db (master) batch db (report) db (slave) Aurora Reader
Aurora Reader レプリ レプリ 同期 Read メンテナンス = 更新なし メンテナンス = 更新なし mysqldump を 直接流し込む (DB 統一) フェーズ4 Writer Read / Write Aurora Writer Read / Write
app Read / Write batch Aurora Writer Aurora Reader Read
/ Write Aurora Reader 同期 Read Amazon ES + Kibana aggregator Redash スロークエリ集計 分析 フェーズ5 最終型
Aurora 移行後の効果
効果 - クエリパフォーマンスの向上 - スロークエリを可視化できるように - データドリブンな意思決定ができるように
クエリパフォーマンスの向上 - 発行回数 TOP 5 のクエリ全てが2倍以上のパフォーマンスに - SELECT 系 (単一テーブル,
JOIN など) - NewRelic で計測している - Aurora スゴイ
スロークエリを可視化できるように - fluent-plugin-rds-slowlog と fluent-plugin-aws-elasticsearch-service を使って スロークエリを Amazon ES Kibana
で可視化できるようにした - 事前にパラメータグループで設定しておく
データドリブンな意思決定ができるように - 分析用の Aurora Reader を立てたことにより, サービス影響を気にせずにクエリを発行できるようになった - 新しく Redash
を導入したことにより, KPI など, データドリブンな意思決定ができるようになった ( ダッシュボード 27個 ) ( クエリ 146個 )
忘れてはいけないこと
Aurora は「銀の弾丸」ではない
忘れてはいけないこと - 全てのクエリパフォーマンスが向上するわけではない - 手動で全機能テストを実施して, 問題ないことを確認した - 障害時に無停止でフェールオーバーができるわけではない - ALTER
SYSTEM CRASH で障害シュミレーションをして 障害時の動作確認をした
忘れてはいけないこと - 無停止でバージョンアップが行えるわけではない - 戦略的にメンテナンスを選択する気持ちを大切に - 定期的にバージョンアップが行えるような組織文化を作る - データベースも定期的に健康診断が必要
まとめ
まとめ - Makuake を支える新基盤として Aurora を採用した - MySQL 5.5 on
EC2 から多段レプリを活用した 移行フローで, 完璧に移行ができた - クエリパフォーマンスが2倍以上も改善した - データドリブンな組織文化を築けたのも Aurora のスゴさ
詳しくは CyberAgent Developers Blog に! https://developers.cyberagent.co.jp/blog/archives/6588/