こんにちは。ソフトブレーン開発 保守Tの小松です。
本日は保守Tで行っている調査業務についてお話します。
調査業務とは、お客様からお問い合わせ頂いた問題(エラー、意図しない挙動、処理が遅い)や
障害等の原因特定を行う業務となります。
調査では如何に素早く原因特定できるかが求められますが、
アプリケーションを構成する要素は非常に多くあるため、どこに絞って調査すべきか、
切り分けが非常に重要になってきます。
構成要素ですが、例えばWebアプリケーションの場合は以下のものがあります。
・クライアント
・サーバ
・Webサーバ
・アプリケーションサーバ
・DBサーバ
例えばアプリケーション上でボタンを押しても反応しないといった問題が発生した場合、
それがクライアントサイド(jsエラーとか)なのか、サーバサイドなのか特定したい場合、
サーバ側のログを見て、処理がサーバに到達しているかどうかで切り分けができます。
しかし、そもそもいつ発生したのか分からないと、ログの確認範囲の絞り込みができないので、
初動での情報取得が重要になってきます。
・いつ発生したのか
・どこの環境で発生したのか
・ユーザーは誰か
・必ず発生するのか
・何をしたら発生するのか …など
お客様の窓口となるサポートのチームに、上記事項を必ず情報取得してもらうことで、
スムーズに調査開始できるようにしています。
調査員は上記の情報やログ等から切り分けていくのですが、
如何に素早く切り分けできるかによって、対応スピードが変わります。
・画面上にエラーが表示される
⇒サーバ側のログにエラーが出ているはずと推測できる
⇒エラー時のスタックトレースからすぐに原因のコードを特定できる
・特定のデータで問題が発生する
⇒データやそのデータを処理するコードを調査すればよいと推測できる
⇒さらにデータ構造やどのクラス、メソッドで処理しているか把握していると、すぐに特定できる
・画面遷移が遅い
⇒サーバ側のログに処理時間が出ているはず
⇒サーバ側の処理が早ければ、クライアント側の遅延(画面遷移直後のJS処理とか)を疑ってみる
⇒ブラウザの開発者ツールを使ってプロファイラやネットワーク情報を取得する
…等々
取得した情報や発生事象から、次にどれを確認すれば切り分けできそうか
判断がすぐに出来るかどうかによって対応速度が変わります。
また、取得した情報を正しく理解することも重要となります。
例えば、サーバ上のログにアプリケーションの処理時間が出ていたとして、
それはどこからどこの間の時間なのか、ということを正確に理解しないと、
判断を間違えてしまうかもしれません。
調査業務においては、
・初動時の情報取得
・迅速な切り分け判断
・情報に対する正確な理解
が重要というお話でした。