コンテンツにスキップ

メンテナンスモード切り替え機能

ステータス:承認済み(開発中)

この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等に静的ファイルを置くか)。 -> 林さんに相談して決める。
  • 今回のスコープ外:
  • 各画面ごとの個別メンテナンス(全トラフィック一括切り替えを対象とする)。