AI開発収益化ラボ
Web本番障害シミュレーター

Web本番障害シミュレーター ができるまで — 壊れた疑似本番環境で障害対応を訓練するサービスの設計

Web本番障害シミュレーター ができるまで

障害対応の学習は、知識だけではなかなか身につきません。

画面が落ちた。
ログは出ている。
でも、どこから見るべきか分からない。

実務ではこの瞬間に、

  • 焦り
  • 情報不足
  • 先入観
  • 時間圧

が一気に重なります。

この「知識はあるのに、現場だと崩れる」感覚を、
ブラウザだけで繰り返し練習できる形にしたかった。
それが Web本番障害シミュレーター です。

何を体験させるサービスか

このサービスの主役は、クイズではありません。
主役は 切り分けの順番 です。

ユーザーは壊れた疑似環境に入り、

  • curl を打つ
  • ログを見る
  • 設定ファイルを読む
  • 権限やポートや環境変数を疑う
  • 直したつもりが別の副作用を生む

という、本番障害で実際に起きる判断の流れを体験します。

つまり、

正解を知っているか

よりも、

どの順番で疑い、何を証拠にして絞り込むか

を鍛えるためのサービスです。

なぜブラウザ完結にしたか

実際の Linux 環境や Docker を配る方法もあります。
ただ、それだと学習の入口が一気に重くなります。

今回はあえて、

  • 登録不要
  • インストール不要
  • ブラウザだけで即開始

を優先しました。

その代わり、OS を本物のように見せるよりも、

  • いま何が壊れているか
  • どんなコマンドが効くか
  • どこまで復旧すればクリアか

をきちんと設計することに力を使っています。

実装のコア

中身は「ターミナル風 UI」だけではありません。
本体は 状態機械ベースの疑似本番環境エンジン です。

各シナリオは、

  • 初期ファイル群
  • 疑似ログ
  • プロセス状態
  • コマンドの返り値
  • クリア条件

を持っています。

ユーザーがコマンドを打つと、

  1. そのコマンドを解釈する
  2. 現在のシナリオ状態に対して結果を返す
  3. 必要なら状態を更新する
  4. クリア判定を行う

という流れで進みます。

これにより、

  • cat では設定が見える
  • grep で怪しい値を絞れる
  • chmod で権限が変わる
  • 再起動後に初めて直ったことが分かる

という、単発のクイズではない体験を作れました。

シナリオ設計の考え方

シナリオは、ありがちな障害をそのまま並べるだけでは弱いです。

重要だったのは、

  • 最初に疑いやすい誤答がある
  • でも証拠を見れば切り分けられる
  • 直した後に「なぜそれが真因だったか」が腹落ちする

という構造です。

たとえば、

  • 環境変数 typo
  • ポート競合
  • 権限不足
  • CORS 設定ミス
  • stale キャッシュ
  • ロールバック副作用

のような題材は、それぞれ「最初に勘違いしやすい場所」が違います。

そこを意図的に残すことで、

直感ではなく、観測で進める

という筋肉がつくようにしました。

UI の狙い

見た目はかなり本物っぽく見せていますが、
目的はリアルさだけではありません。

必要だったのは、

  • 今どこを見ているか
  • 何が入力できるか
  • どこまで状況が進んだか

が迷わず分かることです。

そのため、画面は

  • ターミナル
  • ステータス
  • ヒント
  • シナリオ説明
  • クリア後解説

の役割を明確に分けています。

全部を黒い画面に詰め込むと雰囲気は出ますが、
学習サービスとしては読み解きづらくなるからです。

学習サービスとしてのポイント

このサービスはゲームにも見えますが、
実際にはかなり教育寄りです。

意識したのは次の3つです。

  1. 失敗してもすぐやり直せる
  2. ヒントを出しても学びが残る
  3. クリア後に再発防止まで言語化する

特に 3 は重要でした。

障害対応は「直した」で終わると再現性が低いです。
なので、

  • 真因
  • 切り分けの観点
  • ありがちな誤認
  • 再発防止策

まで含めて、クリア後の解説に落としています。

技術的においしい点

このサービスは、見た目に対して内部設計がかなりおいしいです。

  • シナリオ追加で横展開しやすい
  • 状態機械なので挙動が決定的
  • 疑似ファイル / 疑似ログ / 疑似プロセスを差し替えるだけで新題材を作れる
  • AI なしでも十分に体験が成立する

つまり、派手な生成処理に頼らず、
設計で面白さを出せるタイプのサービスです。

その分、

  • コマンド結果の自然さ
  • 失敗ルートの納得感
  • ヒントの粒度

が雑だと、すぐに“作り物感”が出ます。
そこはかなり丁寧に詰める必要がありました。

今後の拡張

まだ広げる余地はあります。

  • 障害の複合シナリオ
  • 初動 10 分の優先順位だけを問う短編モード
  • チーム共有向けの解説出力
  • 初級 / 中級 / 上級の到達管理

特に複合シナリオは相性がよくて、
「直したら別のものが壊れた」を再現できると、かなり実務に近づきます。

まとめ

Web本番障害シミュレーターは、知識確認ではなく 現場感覚の訓練 を目指したサービスです。

障害対応は、答えを知ることよりも、

  • 何を先に見るか
  • 何を証拠に切り分けるか
  • どこで思い込みを捨てるか

の方が大事です。

その練習を、安全に、繰り返し、ブラウザだけでできるようにしたかった。
このサービスは、そこにかなり真っ直ぐ向いています。