chore(#124): DB 運用 Runbook を追加し Cloud SQL 関連の設定を整理 - #140
Conversation
Issue #124 の STG 計測で、Cloud Run (asia-northeast1) と DB (Neon us-east-1) の クロスリージョン RTT が p50 1.5sec の主因であると判明した。本コミットでは Neon を ap-southeast-1 (Singapore) に切り替えるための運用手順書と、Cloud SQL を使わない ことを前提にした設定整理を含める。実作業 (Neon Project 作成・pg_dump/restore・ Secret 切替・Cloud Run 再デプロイ) は本 PR マージ後に手動で行う。 - docs/db-migration.md: STG / PROD 共通の DB リージョン移行 SOP pg_dump + psql のフルダンプ/リストア、メンテナンス計画、Secret 切替、 Cloud Run 再デプロイ、検証、ロールバック手順、注意点を網羅 - docs/requirements.md: DB を MySQL から PostgreSQL (Neon) に、インフラを Railway から GCP Cloud Run に書き換え (実装と整合) - .github/workflows/deploy-backend.yml: Cloud Run デプロイで --clear-cloudsql-instances を明示し、古いリビジョンの未使用 Cloud SQL アノテーションをデプロイのたびに必ず外す - scripts/setup-gcp.sh: Cloud SQL インスタンス作成・DB 作成・DATABASE_URL 生成の ロジックを削除し、外部 DB (Neon) を前提とした構成に整理。Secret 自体の登録は 手動で行う前提とし、存在チェックと IAM 権限付与のみ実施 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Summary of ChangesHello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! 本 PR は、Issue #124 で判明したクロスリージョンレイテンシーの改善を目的として、DB を Neon の ap-southeast-1 リージョンへ移行するための準備作業です。実作業のための SOP を整備し、既存のインフラセットアップスクリプトから Cloud SQL 関連のロジックを整理・削除することで、外部 DB 利用への移行をスムーズにするための変更を行っています。 Highlights
New Features🧠 You can now enable Memory (public preview) to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console. Ignored Files
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize the Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counterproductive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here. Footnotes
|
|
Warning Gemini encountered an error creating the review. You can try again by commenting |
|
Visit the preview URL for this PR (updated for commit 87bbc9d): https://tabi-share-8ef6b--pr140-chore-issue-124-db-m-fw25vsxd.web.app (expires Sat, 30 May 2026 15:13:14 GMT) 🔥 via Firebase Hosting GitHub Action 🌎 Sign: 9f2a87ede127df7673322845e34cf22c1372d720 |
リージョン移行に限定した SOP ではなく、DB に対する破壊的・大規模な変更 全般 (リージョン移行 / プロバイダ移行 / メジャーバージョン更新 / 大規模 データ再構築) に使える Runbook として書き直す。Singapore 移行 (Issue #124) の検証作業はそのまま Case Study として末尾に残し、Runbook の 妥当性を裏付ける。 - docs/db-migration.md -> docs/db-operations.md にリネーム (git mv) - 共通フロー 12 ステップを抽出し、リージョン移行特有の記述は Case Study セクションに切り分け - 想定ユースケース表を追加し、Alembic で完結する無停止スキーマ変更とは 別物であることを明記 - Case Study に「Runbook へのフィードバック」項目を追加し、検証中に 気付いた落とし穴 (pooler 接続での pg_dump 失敗、Secret latest が disabled でも変わらない件、--update-secrets 同値での再リビジョン化) が Runbook 本文のどこに反映されたかを示す - docs/requirements.md の参照リンクを db-operations.md に変更 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
このPRは不要になったので、closeする、 |
概要
Issue #124 の STG 計測で「Cloud Run (asia-northeast1) ⇄ Neon DB (us-east-1) のクロスリージョン RTT が p50 1.5sec の主因」と判明したので、まず DB に対する破壊的・大規模な変更全般に使える 運用 Runbook を整え、合わせて Cloud SQL を使わないことを前提とした設定整理をする。
Runbook の妥当性は Issue #124 の検証作業 (us-east-1 → Singapore Neon → us-east-1 への往復) で確認済み。今回の Singapore 移行はそのまま Runbook の Case Study として残してある。
実際の DB 移行 (production を含む正式切替) はこの Runbook に沿って別途実施する。
詳細
追加:
docs/db-operations.mdDB に対する破壊的・大規模な変更全般の Runbook。Alembic で完結する無停止スキーマ変更は対象外。
想定ユースケース:
us-east-1→ap-southeast-1等)asia-northeast1等)pg_dump→ 変換 → リストアが必要なとき)共通フロー 12 ステップ:
Case Study として Issue #124 の Singapore 移行検証 (前後の p50/p95 数値、Runbook へのフィードバック) を末尾に収録。
修正
docs/requirements.md: 仕様書の DB 記述を「MySQL」「Railway」から「PostgreSQL (Neon)」「GCP Cloud Run」に修正し、Runbook への参照を追加.github/workflows/deploy-backend.yml: Cloud Run デプロイステップに--clear-cloudsql-instancesを追加。古いリビジョンに残るrun.googleapis.com/cloudsql-instancesアノテーションがデプロイのたびに引き継がれてしまうため、毎回明示的にクリアするscripts/setup-gcp.sh: Cloud SQL インスタンス / DB / ユーザー作成と DATABASE_URL 生成のロジックを削除し、外部 DB (Neon) 前提に整理。Secret 自体の登録は手動とし、本スクリプトでは存在チェックと IAM 権限付与のみを行う。sqladmin.googleapis.comの有効化やroles/cloudsql.clientの付与も Cloud SQL を使う場合の参考としてコメントだけ残す動作確認
bash -n scripts/setup-gcp.shで構文 OKINSTANCE_NAME/DB_USER等) が残っていないことをgrepで確認Issue #124 の検証で取れた数値 (n=30、参考)
/trips/url/{url_id}/trips/{trip_id}/trips/{trip_id}/pages/pages/{page_id}/blocks/blocks/{block_id}すべて約 -50% (≒ 太平洋越え RTT 半減ぶん)。詳細は PR #139 (計測スクリプト) の本文を参照。
確認項目