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
RDS Serverless のバージョンアップ作業の懺悔
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
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
760
Other Decks in Technology
See All in Technology
AzureでのIaC - Bicep? Terraform? それ早く言ってよ会議
torumakabe
1
600
AIエージェントに必要なのはデータではなく文脈だった/ai-agent-context-graph-mybest
jonnojun
1
240
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
15
93k
広告の効果検証を題材にした因果推論の精度検証について
zozotech
PRO
0
210
Oracle Cloud Observability and Management Platform - OCI 運用監視サービス概要 -
oracle4engineer
PRO
2
14k
CDK対応したAWS DevOps Agentを試そう_20260201
masakiokuda
1
400
We Built for Predictability; The Workloads Didn’t Care
stahnma
0
150
私たち準委任PdEは2つのプロダクトに挑戦する ~ソフトウェア、開発支援という”二重”のプロダクトエンジニアリングの実践~ / 20260212 Naoki Takahashi
shift_evolve
PRO
2
190
ブロックテーマでサイトをリニューアルした話 / 2026-01-31 Kansai WordPress Meetup
torounit
0
480
Oracle AI Database移行・アップグレード勉強会 - RAT活用編
oracle4engineer
PRO
0
110
StrandsとNeptuneを使ってナレッジグラフを構築する
yakumo
1
120
プロダクト成長を支える開発基盤とスケールに伴う課題
yuu26
4
1.4k
Featured
See All Featured
The agentic SEO stack - context over prompts
schlessera
0
650
The Invisible Side of Design
smashingmag
302
51k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
2
950
Test your architecture with Archunit
thirion
1
2.2k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
230
Game over? The fight for quality and originality in the time of robots
wayneb77
1
120
Six Lessons from altMBA
skipperchong
29
4.2k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3k
Practical Orchestrator
shlominoach
191
11k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
350
Unsuck your backbone
ammeep
671
58k
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/