msawady’s learning memo

ただのJavaエンジニアが、学んだことをログっていくところ

障害対応はエンジニアの地力である「問題解決能力」が試される

最近、障害対応で思ったことをポエムしておく

  • 自分は開発か要件定義・設計を担当することが多く、保守の仕事をあまりしてきませんでした
  • 最近、障害対応が増えたので、感想というかポエムをつぶやいておきます

障害対応は、エンジニアとしての地力が試される

障害対応のとき、エンジニアには以下のことが求められます。

  • 冷静さを保つ
  • 問題を正確に切り分ける
  • 過不足なくオペレーションを行う

冷静さを保つ

当然ですが、障害が発生したら焦ります。

場合によってはタフな時間に対応を行うことが求められます。

そのようなときでも、決してヤケにならず、悲観的になりすぎず、

  • 問題を正確に切り分ける
  • 過不足なくオペレーションを行う

の2点を遂行し続ける精神力が必要になります。若干フィジカルかつメンタルな話では有りますが、これはエンジニアのポータブルな能力の一つだと思います。

常に落ち着いている人が1人いるだけで、チームとしての落ち着きが変わります。

全体のパフォーマンス向上という面から見ても、「常に冷静」というのはとても大事なエンジニアの能力なのではないかと思います。

問題を正確に切り分ける

障害というのは当然イレギュラーな状況です。その状況においてファクトを正確に収集することが、障害対応では必要不可欠です。

  • 何がイレギュラーな状態なのか
  • 何をきっかけにイレギュラーな状態になっているか
  • 逆にどこまでがマトモな状態なのか

そしてファクトを分析し、事実関係・根本原因を推察する能力も必要です。

  • 何が根本原因なのか、何がボトルネックなのか
  • 再発するのか、するとしたら次はいつになるか
  • 何がトリガーになったのか、なぜ今まで発生しなかったのか

ファクトの収集・分析はシステムの知識を持っているエンジニアにしか出来ないことです。また、正確に仮説検証を繰り返しながら根本原因を探るという能力も試されます。

過不足なくオペレーションを行う

調査段階においても、実際の対応においても、「過不足なく」オペレーションを行うことが重要です。

オペレーションが不足してはいけないのはもちろん、過剰なオペレーションも避けなくてはいけません。

システムがイレギュラーな状態になっているので、思いもよらぬ副作用をもたらし複雑骨折する可能性が有るからです。

だからといって、何もしないわけには行きません。慎重かつ迅速に調査・復旧を行う必要があります。

  • 目的に適うオペレーションを行うこと
  • オペレーションの前提条件を確認すること
  • オペレーションのリスク、副作用を把握すること
    • リスクを軽減するための方策は無いか確認すること

上記のようなオペレーションを行うためには、問題の切り分けが出来ることが不可欠です。加えて、漏れなく影響を把握する視野の広さ、システム全般に対する広く深い理解が求められます。

まとめ

障害を対応するためには、「冷静に状況と向き合い、正確に問題を切り分け、必要十分なオペレーションをする」ことが求められます。

「プログラミング能力とは別に物凄い勢いでキーボードを叩いてプログラムを完成させてしまう能力のことではない」というツイートが話題になりました。私も同感でエンジニアの能力はあくまで「問題解決能力」だと考えています。

togetter.com

障害対応は、まさしく問題解決能力を試されるものです。勿論、障害なんて無い方が良いに決まってるんです。ただ起こってしまったとしても「これは俺のエンジニアとしての力が試されている...!」と思うと、ちょっと気分が上がって、辛さが薄れるんではないかなぁ、と思ったのでこの記事を書きました。

以上です。皆さんが今夜も?ゆっくりお休み出来ることを心よりお祈りしています。おやすみなさいませ。