ITイベント・勉強会はせいぜい1~2か月に1回の参加で、資格・検定の話ばかり書いていてもしょうがないので、今回は社内勉強会の話です。
といっても、「勉強会」という形式ではなく、「訓練」です。
私の職場では、毎年、システム障害対応訓練を行っています。最近は、大体9月のシルバーウィークごろに行っています。
昨年
「平日に障害が発生し、システムが止まってしまった(原因は機器の故障)」
という想定で実施しました。作業手順書に従い、正しい手順で予備系への切り替え作業を行うとともに、原因追求を行い、復旧、時間があれば切り戻しまで行う、というものです。
予備系への切り替えはうまくいったのですが、その後の原因追求がなかなか進まず、途中で時間切れ。原因追求や復旧、切り戻し作業時に「隠れキャラ」が出現するよう仕込んでおいたのですが、ほぼ出現させることなく訓練終了、という、出題側からすると少し悲しい結果となりました。
今年の予定
「サービスを停止してシステムメンテナンスを実施し、サービスを再開しようとしたら正しく動かなかった」
という想定で、2チームに分け、対抗戦で復旧までのスピードを競う、という形で実施する予定です。
チームリーダーとして、アプリケーション開発とインフラ管理の両方を担当しているメンバー2名を指名し、普段アプリケーション開発しか行っていないメンバーと上手に連携して障害原因を探り、復旧させるものです。
障害原因としては、
・OSやミドルウェア等のメンテナンス作業ミス
・新しいアプリケーションを(システムメンテナンスの中で)リリースする際のミス
などを含める予定です。
今週、アプリケーション側の出題担当者と軽く打ち合わせを行い、大筋の出題内容を決めました。
インフラ側の出題も、「アプリケーション開発者には理解不能」なものばかりではいけないので、アプリケーションの動作に密接に絡むものをいくつか含める予定にしています。
Webアプリケーション開発者が、WebサーバやWebアプリケーションサーバ、リバースプロキシのことを全く意識せずに開発してしまうと、思わぬトラブルにつながります。もちろん、RDBのテーブル設計やインデックスなどにも気を使わないといけません。
訓練では、ブラウザからアクセスしてみたときに表示されるエラー(常時/間欠、すぐに表示/時間がたってからの表示、など)、各サーバ・機器に出力されるログ(エラーに限らず)の内容によって、
・外部向けネットワーク
・内部ネットワーク(LAN)
・物理サーバまたはIaaS環境、PaaS環境
・リバースプロキシ
・Webサーバ
・Webアプリケーションサーバ
・その他データストア
・DNS、メールサーバ等(今回は対象外だが重要項目)
のどこで、どんな問題が発生しているのか(設定の問題か、インストール/デプロイの問題か、はたまた機器の物理トラブルか)を切り分けることになります。
形としては「障害対応訓練」ですが、Webアプリケーションを開発するのに役立つ内容(「手を動かしながらの勉強会」)にしたいと思います。
また、どうしても
「困ったときのWeb検索(行き当たりばったり)」
が多く、普段から知識のストックを作っておくようなことがなかなかできていないので、
「Qiitaの投稿から出題する(かもしれない)よ。読んどいてね」
「先にチームメンバーで事前対策とか役割分担とか決めておいてね」
と伝えて、メンバーに事前準備を促しています。
もっとも、現在考えている出題内容のうち、Qiitaの投稿でカバーしている範囲がかなり少ないので、当日までに投稿を増やしておかないといけません。ダミーも含めて。
これから出張続きなので、その時間が取れるか心配です。
MySQLのTipsなどは、わざわざ私が下手な手抜き文章を書くまでもなく、有用な情報がたくさん日本語で存在しているので、自力で集めてくれるとうれしいのですが。