メンテナンスモード切り替え機能¶
ステータス:承認済み(開発中)
このPRDは承認され、現在開発が進められています。 👉 関連する開発チケット: https://linear.app/soarig/issue/SOA-43/メンテナンスモードに切り替えできるようにロードバランサーを設定
1. メタデータ¶
- 作成者: 秋田隼豊
- 作成日: 2026/03/26
- 承認日: 2026/03/27
2. 目的と背景 (Why)¶
- なぜこれを作るのか?: 現在、システムメンテナンス実施時にユーザーへ適切な案内(メンテナンス画面)を出す仕組みが標準化されていません。手動での切り替え作業はミスを誘発しやすく、工数もかかるため、インフラ層(ロードバランサー)で迅速かつ安全にメンテナンス画面へルーティングを切り替える仕組みが必要です。
- 目指すゴール: ロードバランサーの設定(Terraformの変数等)を変更するだけで、安全かつ瞬時に全トラフィックをメンテナンスページに切り替えられる状態にする。 登録されているIP(開発者、管理者)からのリクエストはメンテナンスページを回避してアクセスできるようにする
3. ターゲットユーザー (Who)¶
- 直接のユーザー: 開発チーム・インフラ担当者(メンテナンス作業を実施するメンバー)
- 間接的なユーザー: サービスを利用するすべてのエンドユーザー(エラー画面ではなく、適切なメンテナンス案内を受け取れる)
4. ユーザーメリットと想定効果 (Value & ROI)¶
- ユーザーが得られる価値:
- 【運用者】Terraform経由で設定を適用(
terraform apply)するだけで切り替えが完了し、運用負荷とオペレーションミスのリスクが大幅に軽減される。 - 【エンドユーザー】システム停止時に「ページが見つかりません(404)」「サーバーエラー(50x)」などではなく、いつ再開するかが分かる親切な案内画面を見ることができる(UXの向上)。
- 想定効果: メンテナンス開始・終了時の切り替え作業工数の削減。および、インフラ構成管理(IaC)の徹底。
5. 機能要件 (What)¶
- 主要な機能 / ユーザーストーリー:
- 運用者 は メンテナンスを開始 するために Terraformの変数(例:
is_maintenance_mode = true)を変更・適用して、全アクセスをメンテナンス用コンテンツへルーティング できる。 - 運用者 は メンテナンスを終了 するために 変数を
falseに戻して、通常のバックエンドサービスへルーティングを戻す ことができる。 - 特定のIPを持ユーザー(開発者、管理者)は、メンテナンスモードを回避してページにアクセスしてテストを行うことをできる
- 管理者IPはCloud Armorのルールで許可リスト管理し、
tfvarsで定義する - メンテナンスモードON時、ロードバランサーはステータスコード
503 Service Unavailableとともに、用意された静的なメンテナンス用HTML(Sorryページ)を返す。
6. 非機能要件・やらないこと¶
- システム要件:
- すべてのインフラ変更はTerraformコードとして記述し、Gitでバージョン管理されること。
- メンテナンス用コンテンツのホスティング先(ロードバランサーの固定レスポンス機能を使うか、Cloud Storage / S3等に静的ファイルを置くか)。 -> 林さんに相談して決める。
- 今回のスコープ外:
- 各画面ごとの個別メンテナンス(全トラフィック一括切り替えを対象とする)。