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
メインサービスのDBを1年でAurora1から段階的にAurora3へアップグレードした話
Search
inamuu
March 21, 2024
1
190
メインサービスのDBを1年でAurora1から段階的にAurora3へアップグレードした話
inamuu
March 21, 2024
Tweet
Share
More Decks by inamuu
See All by inamuu
エンジニアの副業のすゝめ / engineer-sidejob-20200130
kzm0211
0
820
ランサーズのSendGrid活用事例
kzm0211
0
1.2k
元ドラッグストア店員の転職LT
kzm0211
0
1.7k
AmazonConnectで作るサーバレス電話確認システム
kzm0211
1
1.1k
さよならBIND
kzm0211
3
230
Featured
See All Featured
Testing 201, or: Great Expectations
jmmastey
38
7.1k
Keith and Marios Guide to Fast Websites
keithpitt
409
22k
For a Future-Friendly Web
brad_frost
175
9.4k
Adopting Sorbet at Scale
ufuk
73
9.1k
GraphQLとの向き合い方2022年版
quramy
43
13k
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.5k
Designing Experiences People Love
moore
138
23k
Raft: Consensus for Rubyists
vanstee
136
6.6k
What's new in Ruby 2.0
geeforr
343
31k
Optimising Largest Contentful Paint
csswizardry
33
2.9k
The Pragmatic Product Professional
lauravandoore
31
6.3k
Designing for Performance
lara
604
68k
Transcript
メインサービスのDBを1年でAurora1から段 階的にAurora3へアップグレードした話 JAWS-UG SRE支部 #8 春のAurora祭り🌸 マクアケSREチーム 稲村 一真
自己紹介 氏名 : 稲村一真 会社名 : 株式会社マクアケ 所属チーム : SRE
ロール : チームリード Xアカウント : kzm0211 MySQL経験 : =インフラエンジニア歴 但しDBAのような経験は 無し
代表者 中山 亮太郎 設立 2013年5月1日 上場市場 東京証券取引所 グロース市場 従業員数 約190名 所在地
東京都渋谷区渋谷2-16-1 Daiwa渋谷宮益坂ビル 10F 他、関西/名古屋/北陸/中四国/九州/韓国 株式会社マクアケ アタラシイものや体験の応援購入サービス 想いをもつ事業者と生活者を結びつける新しいプラットフォーム
デプロイフロー メインDB Aurora1 タイムライン 2022.10 入社 2022.11 Aurora2 検証開始 2023.02
Aurora2 切り替え メンテナンス 2023.08 Aurora3 検証開始 2023.12 Aurora3 切り替え メンテナンス 主にやったこと 1.MySQL, AWS公式ドキュメント , 各社ブログの調査 2.CI, 開発, 本番環境などインフラ作成 3.開発チームスケジュール調整 4.QAチーム依頼(動作チェック) →修正依頼 5.社内調整(メンテナンス日やリリース調整等) 6.メンテナンス作業実施(当日のメンテナンスは 4人で実施)
デプロイフロー メインDB Aurora1 主にやったこと 1.MySQL, AWS公式ドキュメント, 各社ブログの調査 2.CI, 開発, 本番環境などインフラ作成
3.開発チームスケジュール調整 4.QAチーム依頼(動作チェック)→修正依頼 5.社内調整(メンテナンス日やリリース調整等) 6.メンテナー(メンテナンスは4人)
デプロイフロー メインDB Aurora1 検討した切り替え手法 手法 メリット デメリット MySQLのbinlog切り替え MySQLの運用に慣れていれば最も サービスダウン時間を軽減可能
binlog運用に慣れていなければ運用リ スクがある 切り戻しフローを検討する必要がある インプレースアップグレード 上記同様、シンプル 切り戻しフローを検討する必要がある 枯れていない, 失敗事例がある Blue Green 上記同様(詳細調査は未実施) 枯れていない, 事例が少ない xxx dump シンプル データ量によっては厳しい スナップショットから新規作成 (Terraform) シンプル、旧環境を残しておける サービスダウン時間が長くなる Aurora2, Aurora3の検証時に都度AWS SAの方に相談 採用
デプロイフロー メインDB Aurora1 TerraformによるIaC化で作業のシンプル化 1.スナップショット作成 2.クラスター作成(スナップショットから) 3.インスタンス作成(Writer) 4.インスタンス作成(Reader) 5.カスタムエンドポイント作成 •
検証が容易になった→メンテナンス時間の計画が立てやすくなった • 旧環境のクラスターが残せる→切り戻しのしやすさを優先 IaCされていなかったDB→早々にIaC化を実施
デプロイフロー メインDB Aurora1 Route53によるクラスターエンドポイント切り替え プライベートホストゾーン TTLを低く設定 • Route53でレコード変更→エンドポイント切り替えに複数デプロイが不要 • TTL低く→フェイルオーバーの遅延時間は
許容範囲 • クラスターエンドポイントに含まれるランダム識別子は、アカウントとリージョンで固定なので 事前に準備可能 App DB
切り替え前 モノリス結合データベース メインDB Aurora1 5年物 App A App B App
C App D モノリシック フレーワムワーク メンテナンスのときの デプロイ大変かも... クラスターエンドポイント URL
Route53でエンドポイント変更 メインDB Aurora2 New!! メインDB Aurora1 5年物 App A App
B App C App D Route53で作成したエンドポイント URL 不要 Route53のレコード 切り替えのみでOK
デプロイフロー メインDB Aurora1 パラメータグループの比較と統合 • 手動で何を変えたか、影響があるかどうかを調査 • インスタンスパラメータグループが存在していたが、本当に必要かを判断してクラスターパラメータグループに 統合
◦ クラスターパラメータグループ →インスタンスパラメータグループ( default) 比較画面のサンプル
デプロイフロー メインDB Aurora1 PerformanceInsights Sample • 7日間なら無料なので要有効果 • 半信半疑で有効化したが現状 は大量アクセスなどがあった際
にトップクエリなどをチェック→ スロークエリチェック • 但し、有効化にはインスタンス 再起動が必要なので注意
デプロイフロー メインDB Aurora1 SSMオートメーションによる自動起動の停止 停止 7日後 起動 停止 切り戻しに備えてしばらくはクラスターを停止して様子見 EventBridge
SSM Automation
デプロイフロー メインDB Aurora1 Aurora3, ReaderのTempTableの仕様 引用: https://aws.amazon.com/jp/blogs/database/use-the-temptable-storage-engine-on-amazon-rds-for-mysql-and-amazon-aurora-mysql/ MySQL8.0.28 Aurora3.04 Reader
デプロイフロー メインDB Aurora1 • まとめ • これからアップグレード検討している方へ ◦ MySQL, AWS公式ドキュメント、各社事例ブログチェックは必
須 ◦ アップグレードには複数の選択肢があるので、自社の状況にあ わせて最適な方法を選択すると吉 • やってよかった ◦ AWS SAへ相談→解像度UP ◦ IaCによる作業→手順のシンプル化 ◦ Route53による切り替え→デプロイ時間の短縮化 ◦ 事前メンテナンスリハーサル→手順書ブラッシュアップ
デプロイフロー メインDB Aurora1 ご清聴ありがとうございました😊