| ||||||||||||
| 前のページ 1 2 3 次のページ | ||||||||||||
| 障害対応を考えて開発していますか? | ||||||||||||
第1回目の今回は、障害対応について解説していきましょう。 | ||||||||||||
| トラブル事例 | ||||||||||||
最初からバグのないシステムを作ることは、残念ながらできません。運用がはじまるといつかは障害対応をする機会が必ずありますが、その際にこんな経験をしたことはないでしょうか。
表2:障害発生時のトラブル事例 | ||||||||||||
| ケース1の対応法:ログ出力ルールの策定 | ||||||||||||
運用・保守担当者は、表2のケース1をほぼ間違いなく、経験しているのではないでしょうか。 時間をかけて調べてみると、テスト環境と本番環境のわずかな差異が原因だったり、「0.01秒間にXとYの処理を実行すると、エラーが発生する」といった、故意に起こすのが難しい原因だったりと、理由は様々です。 ただ理由は何であれ、早急に原因を究明し、何からの暫定対応を行わなければいけません。そのためには、原因を究明する材料、つまり障害発生時の状況をログとして出力する必要があります。Webアプリケーションを例に、原因究明に必要な内容をあげます。
表3:障害の原因究明に必要な内容(Webアプリケーションを例にしたもの) そこで、再現の可能性を高めるためにも、障害が発生したときに実行することが多い、例外処理(try〜catch文)についてログ出力の記述ルールを策定する必要があります。以下は例です。 リスト1:例外処理の記述例 try{上記の例ではSystemクラスを使用しておりますが、現在は、logging APIやLog4Jといったログ出力ツールが充実しておりますので、通常はこれらのログ出力ツールを使って開発すると思います(各ツールによって記述方法が異なりますので、詳細は各ツールのマニュアルをご覧ください)。 また、ログ出力ツールについても、出力ルールを定めておくのが良いでしょう。以下はLog4Jを使った場合の、ログ出力のルール例です。
表4:ログ出力ルール例(Log4Jの場合) ※注1:実は筆者はこのレベルをソースに記述したことがありません。このような障害は、OSのログなど、別のログでも出力されるので、そちらのほうがより詳細の内容がわかるためです。 この出力ルールに従うと、リスト1は以下のように修正できます。 リスト2:Log4Jを使った例外処理の記述例 try{ | ||||||||||||
| 前のページ 1 2 3 次のページ | ||||||||||||
| ||||||||||||
| ||||||||||||
| ||||||||||||
| ||||||||||||

