Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
RDS Serverless のバージョンアップ作業の懺悔
Search
tchibana
October 06, 2023
Technology
1
290
RDS Serverless のバージョンアップ作業の懺悔
tchibana
October 06, 2023
Tweet
Share
More Decks by tchibana
See All by tchibana
SNSとLambdaのEDAで ecsの負荷が激減した話
tchibana
0
92
EDAって何がおいしいの?
tchibana
0
740
Other Decks in Technology
See All in Technology
因果AIへの招待
sshimizu2006
0
980
ExpoのインダストリーブースでみたAWSが見せる製造業の未来
hamadakoji
0
140
生成AI活用の型ハンズオン〜顧客課題起点で設計する7つのステップ
yushin_n
0
230
AI駆動開発における設計思想 認知負荷を下げるフロントエンドアーキテクチャ/ 20251211 Teppei Hanai
shift_evolve
PRO
2
420
生成AIを利用するだけでなく、投資できる組織へ / Becoming an Organization That Invests in GenAI
kaminashi
0
100
新 Security HubがついにGA!仕組みや料金を深堀り #AWSreInvent #regrowth / AWS Security Hub Advanced GA
masahirokawahara
1
2.1k
AIプラットフォームにおけるMLflowの利用について
lycorptech_jp
PRO
1
170
Lambdaの常識はどう変わる?!re:Invent 2025 before after
iwatatomoya
1
610
SREには開発組織全体で向き合う
koh_naga
0
360
Jakarta Agentic AI Specification - Status and Future
reza_rahman
0
110
AWS Security Agentの紹介/introducing-aws-security-agent
tomoki10
0
300
.NET 10の概要
tomokusaba
0
110
Featured
See All Featured
GitHub's CSS Performance
jonrohan
1032
470k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
The Pragmatic Product Professional
lauravandoore
37
7.1k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.8k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Building an army of robots
kneath
306
46k
Imperfection Machines: The Place of Print at Facebook
scottboms
269
13k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
970
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
Docker and Python
trallard
47
3.7k
Building Applications with DynamoDB
mza
96
6.8k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Transcript
RDS Serverless のバージョ ンアップ作業の懺悔 ハッカーズチャンプルー2023
わたし 知花 司(ちばな つかさ) @chibana_555 趣味: 全く効果のでない筋トレダイエット BP: 105kg, SQ: 160k, DL:
160kg 放送大学学生: 心理学や法学なども勉強中。 仕事は今は大阪の会社でテックリードしてます。
お家がきちんと建っているかな?って見に行くサービ スを提供しております。 3 防湿シートの破れ 土台アンカーボルトの芯ずれ Copyright© 2021 NEXT STAGE Co.,
Ltd. All Rights Reserved.
いつドラが鳴ってもいいように、最初にまとめの共有。 • ポスグレ(PostgreSQL)をメンテナンスしたらANALYZEを実行 しましょう(ドキュメント読みましょう) • IaCで環境作っていても全く同じ環境を再現できるとは限らな いので、環境は常に2つ以上作りましょう
ポスグレをメンテナンスしたらANALYZEを実行し ましょう(ドキュメント読みましょう)っていう話
当初の構成 普通のJamStackな構成
今 リリースから一年がたち、RDSの用途が多様化 RDSのリードレプリカが欲しくなってきた RDSがAurora Serverless v1 でした。
Aurora Serverless v1をv2の違い Aurora Serverless v1 リードレプリカ対応してない 論理レプリケーションも非対応
Aurora Serverless v1をv2にあげるためには 1. ポスグレをv2対応のバージョンに上げる 2. サーバーレスクラスターを通常のクラスターに変換する 3. Serverless v2インスタンスを追加してフェールオーバーさせる
4. クラスター変換で作成されたインスタンスを削除する
まずはポスグレのバージョンを上げないといけない
ポスグレをv2対応のバージョンへアップグレード 実行クエリの検証: ユニットテストの環境のDBをアップグレードして検証済み 性能: スロークエリのしきい値2秒をクリアしているので多少はおっけー アップグレードをどうやって実施するか? 開発環境でやってみよー
ポスグレをv2対応の13.9にアップグレード マネコンでめっちゃカジュアルに実行できる 開発環境だし、ということでぽちぽちっと 数分で無事完了 念の為1ヶ月ほど様子見したが問題なし
ポスグレをv2対応の13.9にアップグレード 建築現場向け2Bのサービスなので夜間に利用している人はほぼ いない 数分だったらRDSのメンテナンス機能で夜間にやってしまえ。 えいやー
翌朝
本番環境が仮死状態に 早朝からスロークエリーのアラートが飛びまくり 30秒以上かかるクエリが多発 api gatewayのtime outでリクエストが切られてサービス停止状態 に
原因と対応 テーブルの統計情報が全部飛んでた 手動でANALYZEを実行して解消
統計情報引き継がれないの? 統計情報はデータベースエンジンに格納されるのでメジャーアップ グレードしたら引き継がれない ポスグレをメンテナンスしたら手動でANALYZEしましょう AWSのマネコン操作だけではそこまではやってくれない
ドキュメントを読みましょう 以上の内容はすべてawsのドキュメントに書いてました。 ドキュメント読みましょう(自戒) https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/USER_ UpgradeDBInstance.PostgreSQL.html#USER_UpgradeDBInstance.PostgreSQL. MajorVersion
環境は常に2つ以上作ろうっていう話 ドキュメント読んでもわかんないこともあるよ
Aurora Serverless v1をv2にあげるためには 1. ポスグレをv2対応のバージョンに上げる 2. サーバーレスクラスターを通常のクラスターに変換する 3. Serverless v2インスタンスを追加してフェールオーバーさせる
4. クラスター変換で作成されたインスタンスを削除する 1の作業は実施済み
1の作業は実施済み 2 3 4
ポスグレ仮死状態の失敗を活かし・・・ ドキュメントは読みました。 cdkで環境管理しているので、検証用に環境を複製しました。 複製した環境で手順を検証しました。 ダウンタイムはフェールオーバーのタイミングで5秒程度。 利用者が急激に減る20時以降なら無視できると判断 開発環境でリハーサルを実施してみたら。。。
最初のクラスター変換で失敗した クラスター変換が実行できない インスタンスの名前が長すぎるってエラー になる このステップでコケた
最初のクラスター変換で失敗した クラスターの変換プロセスの中でふつうのRDS インスタンスが作成される RDSインスタンスは `{クラスター ID}-instance1` という名前が付与される インスタンス名コントロールできなくて詰んだ cdkで複製した環境での検証で気 づけなかったのはなぜ?
稼働中の環境のクラスターIDが長い プロダクションの環境はcdk v1で構築され ていた サービスロンチ後にcdk v2にアップグレー ドしていた 複製はcdk v2で構築しているので、全く同 じ環境ではなかった
検証のために複製した環境 稼働中の環境
cdkで複製した環境での検証で気づけなかったのはなぜ? プロダクションの環境はcdk v1で構築されていた サービス公開後にcdkをv2にアップグレードしていた 複製はcdk v2で構築しているので、全く同じ環境ではなかった cdk v1で構築したクラスターIDが長すぎた
じゃ、どうするの? クラスターの変換プロセスの中でRDSインスタンスが作成される インスタンス名はコントロールできない、クラスターIDは変更できる 開発環境だし、やってみるかw えいやー (嫌な予感しかしないw)
クラスターID変更したらエンドポイントが変わった でしょうねw
開発環境のRDSにアクセスしているサービスが全壊 プロジェクト関係者の皆さん、ごめんなさいw
さすがに計画停止が必要 影響を受けるすべてのサービスのconfigの修正が必要 影響をうけるサービスが10以上ある 各サービスのconfig修正して動作検証まで1時間はかかる サービス停止時間が長くなると休日深夜にやれって話になる(やりたくない) サービス停止は短いほうが良いよね
クラスター変換を無停止作業と計画停止作業に分割 事前準備(無停止、日中作業) RDSのエンドポイントにCNAMEを設定 事前準備で各サービスのDBアクセスをCNAME経由に変更 サービス停止作業日 クラスターID変更、CNAME張り替え、クラスター変換 サーバーレスインスタンス追加、フェールオーバー、クリーンアップ
RDSのアクセスを事前にDNS経由にしましたよ
サービス停止は10分程度で済みました。 サービス停止 クラスターID変更、CNAME張り替え、(CNAMEのTTLの時間待機) サービス再開 (とは言っても夜間なのでアクセスは非常に少ない) クラスター変換 (5秒程度の接続断) サーバーレスインスタンス追加 フェールオーバー (5秒程度の接続断)
不要インスタンスの削除
最後にもう一回まとめ • ポスグレ(PostgreSQL)をメンテナンスしたらANALYZEを実行 しましょう • ドキュメント読みましょう • ドキュメント読んでも想定外は起きるので、環境は常に2つ以 上作りましょう
ご清聴ありがとうございました。 (たぶん、途中で時間切れでここまで辿り着けない)
参考文献 Aurora PostgreSQL の PostgreSQL DB エンジンのアップグレード https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.upgrade.html Aurora Serverless
v2 の開始方法 https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.upgrade.html よくお世話になっている某ブログ https://dev.classmethod.jp/articles/moving-from-aurora-serverless-v1-tov2/