|
||||||||||||
| 前のページ 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 次のページ |
||||||||||||
|
|
||||||||||||
|
|
||||||||||||
|
||||||||||||
|
|
||||||||||||
|
||||||||||||
|
|
||||||||||||
|
||||||||||||
|
|
||||||||||||
|
||||||||||||

