Web本番障害シミュレーター ができるまで — 壊れた疑似本番環境で障害対応を訓練するサービスの設計
Web本番障害シミュレーター ができるまで
障害対応の学習は、知識だけではなかなか身につきません。
画面が落ちた。
ログは出ている。
でも、どこから見るべきか分からない。
実務ではこの瞬間に、
- 焦り
- 情報不足
- 先入観
- 時間圧
が一気に重なります。
この「知識はあるのに、現場だと崩れる」感覚を、
ブラウザだけで繰り返し練習できる形にしたかった。
それが Web本番障害シミュレーター です。
何を体験させるサービスか
このサービスの主役は、クイズではありません。
主役は 切り分けの順番 です。
ユーザーは壊れた疑似環境に入り、
curlを打つ- ログを見る
- 設定ファイルを読む
- 権限やポートや環境変数を疑う
- 直したつもりが別の副作用を生む
という、本番障害で実際に起きる判断の流れを体験します。
つまり、
正解を知っているか
よりも、
どの順番で疑い、何を証拠にして絞り込むか
を鍛えるためのサービスです。
なぜブラウザ完結にしたか
実際の Linux 環境や Docker を配る方法もあります。
ただ、それだと学習の入口が一気に重くなります。
今回はあえて、
- 登録不要
- インストール不要
- ブラウザだけで即開始
を優先しました。
その代わり、OS を本物のように見せるよりも、
- いま何が壊れているか
- どんなコマンドが効くか
- どこまで復旧すればクリアか
をきちんと設計することに力を使っています。
実装のコア
中身は「ターミナル風 UI」だけではありません。
本体は 状態機械ベースの疑似本番環境エンジン です。
各シナリオは、
- 初期ファイル群
- 疑似ログ
- プロセス状態
- コマンドの返り値
- クリア条件
を持っています。
ユーザーがコマンドを打つと、
- そのコマンドを解釈する
- 現在のシナリオ状態に対して結果を返す
- 必要なら状態を更新する
- クリア判定を行う
という流れで進みます。
これにより、
catでは設定が見えるgrepで怪しい値を絞れるchmodで権限が変わる- 再起動後に初めて直ったことが分かる
という、単発のクイズではない体験を作れました。
シナリオ設計の考え方
シナリオは、ありがちな障害をそのまま並べるだけでは弱いです。
重要だったのは、
- 最初に疑いやすい誤答がある
- でも証拠を見れば切り分けられる
- 直した後に「なぜそれが真因だったか」が腹落ちする
という構造です。
たとえば、
- 環境変数 typo
- ポート競合
- 権限不足
- CORS 設定ミス
- stale キャッシュ
- ロールバック副作用
のような題材は、それぞれ「最初に勘違いしやすい場所」が違います。
そこを意図的に残すことで、
直感ではなく、観測で進める
という筋肉がつくようにしました。
UI の狙い
見た目はかなり本物っぽく見せていますが、
目的はリアルさだけではありません。
必要だったのは、
- 今どこを見ているか
- 何が入力できるか
- どこまで状況が進んだか
が迷わず分かることです。
そのため、画面は
- ターミナル
- ステータス
- ヒント
- シナリオ説明
- クリア後解説
の役割を明確に分けています。
全部を黒い画面に詰め込むと雰囲気は出ますが、
学習サービスとしては読み解きづらくなるからです。
学習サービスとしてのポイント
このサービスはゲームにも見えますが、
実際にはかなり教育寄りです。
意識したのは次の3つです。
- 失敗してもすぐやり直せる
- ヒントを出しても学びが残る
- クリア後に再発防止まで言語化する
特に 3 は重要でした。
障害対応は「直した」で終わると再現性が低いです。
なので、
- 真因
- 切り分けの観点
- ありがちな誤認
- 再発防止策
まで含めて、クリア後の解説に落としています。
技術的においしい点
このサービスは、見た目に対して内部設計がかなりおいしいです。
- シナリオ追加で横展開しやすい
- 状態機械なので挙動が決定的
- 疑似ファイル / 疑似ログ / 疑似プロセスを差し替えるだけで新題材を作れる
- AI なしでも十分に体験が成立する
つまり、派手な生成処理に頼らず、
設計で面白さを出せるタイプのサービスです。
その分、
- コマンド結果の自然さ
- 失敗ルートの納得感
- ヒントの粒度
が雑だと、すぐに“作り物感”が出ます。
そこはかなり丁寧に詰める必要がありました。
今後の拡張
まだ広げる余地はあります。
- 障害の複合シナリオ
- 初動 10 分の優先順位だけを問う短編モード
- チーム共有向けの解説出力
- 初級 / 中級 / 上級の到達管理
特に複合シナリオは相性がよくて、
「直したら別のものが壊れた」を再現できると、かなり実務に近づきます。
まとめ
Web本番障害シミュレーターは、知識確認ではなく 現場感覚の訓練 を目指したサービスです。
障害対応は、答えを知ることよりも、
- 何を先に見るか
- 何を証拠に切り分けるか
- どこで思い込みを捨てるか
の方が大事です。
その練習を、安全に、繰り返し、ブラウザだけでできるようにしたかった。
このサービスは、そこにかなり真っ直ぐ向いています。