こんにちは。
システム開発をしていると、つきものなのが不具合対応です。
試験段階での不具合も多いのですが、問題なのはリリース後の不具合です。
リリース後の不具合は、利用者に迷惑を掛けるし、企業の信用が掛かっているので、できるだけ早く改善する必要があります。
その時、必要となるのがログです。
一般的にリリース後のログには、利用者がどのような操作をしたのかといった内容が出力されています。
その情報を元に不具合が発生する手順などを確認します。
最近では、フレームワークにログ出力が含まれていることが多いので、詳細なログ設計を行わないこともあります。
しかし、フレームワークのログでは、不具合の詳細が分からないことも多いです。
なので、ログ設計は、きちんと行なっておく必要があります。
システム開発で忘れがちなログ設計
導入にも書きましたが、最近では、フレームワークにログの出力が含まれているため、開発時にはログ設計を行わないことがあります。
しかし、フレームワークが出すログは、あくまでフレームワークが動作したログなので、開発された箇所のログは含まれていません。
そのため、不具合が発生した時にフレームワークからの呼び出し以降は、ソースコードを読む必要が出てきます。
不具合が発生するたびにソースコードを読んでいると、対応までに時間がかかってしまうため、利用者からの信用を失う可能性があります。
なので、開発するソースコードにも、必要なログを出力するように設計する必要があるのです。
だからと言って、多くのログを出力すると、今度は、サーバーに多くのストレージが必要になります。
例えば、利用者が1回操作するたびに、1KBのログが出力されるとしましょう。
すると、100人の利用者が100回操作すると、約10MBのストレージが必要となってしまいます。
開発段階では問題にならないかもですが、リリース後だと大きな問題となってしまいます。
また、ログに個人情報が出力されていると、不具合対応のために取得したログから個人情報が流出する可能性も出てきます。
なので、ログと言うのは、きちんと設計する必要があるのです。
ログ設計の方法
では、ログ設計は、開発のどの工程で行うのでしょうか?
答えは、詳細設計の最初です。
ログは、システム全体で統一されていないと、解読し辛くなってしまいます。
そのため、詳細設計で各機能の設計を行う前に設計する必要があります。
そして、ログ設計で必要となるのは、以下の3点です。
- 出力方法
- 出力内容
- タイミング
出力方法
フレームワークを使っている場合は、フレームワークが提供しているログ出力メソッドを使用します。
ほとんどのフレームワークで、debug、info、errorが分かれています。
開発段階では、全て出力して良いのですが、リリース後のログには出力量が多くなるので、debugを出力しないのが一般的です。
また、開発段階で必要なログというのもありますので、その辺も考慮しておく必要があります。
出力内容
出力内容は、いつ、どこを、どんなデータが通ったのかがわかる内容になっている必要があります。
システムは、複数の利用者に利用されるため、ミリ秒単位で出力するのが一般的です。
また、ログにデータを出力する際には、セキュリティにも注意する必要があります。
タイミング
ログの出力タイミングは、利用者が行なった操作が分かるようなタイミングで出力する必要があります。
例えば、ログインボタンを押したときの、最初の処理でログを出力するなどです。
各機能でタイミングが異なると思いますが、ログ設計の段階で明文化しておくことで、システム全体の統一が図れます。
セキュリティについて
ログで1番注意しないといけないのがセキュリティです。
ログに、IDやパスワード、個人情報が出力されていると、データベースは暗号化されていても、流出の原因となってしまいます。
良くあるミスとしては、開発段階で確認のためにログへ出力していたログがdebugではなくinfoで出力されているミスです。
リリースでdebugのログ出力と止めても、infoでセキュリティデータが出力されていると意味がありません。
なので、ログ設計の内容は、開発の時にプログラマへきちんと共有されないといけません。
まとめ
今回は、システム開発で忘れがちなログ設計について書きました。
最近では、フレームワークのログ出力が充実しているので、あまりログ設計をしないこともあります。
しかし、ログは、リリース後の不具合を修正するのに必要な内容になります。
ログ設計で必要なのは、以下になります。
- 出力方法
- 出力内容
- タイミング
ログの出力は、フレームワークで用意されているメソッドがあると思います。
しかし、開発とリリースでは、ログの出力内容を変えるようにしましょう。
ログを出力するタイミングは、利用者がどのような操作をしたのかが分かるようなタイミングで出力する必要があります。
そして、ログに出力する内容は、ログイン情報や個人情報などが出力されないように注意する必要があります。
ログ設計は、システム開発をする上でとても重要なので、きちんと設計するようにしましょう。
では、今日はこの辺で。
システム開発の設計については、以下ブログで詳しく説明しています。
>>>システム開発で設計書は必要なの?【アジャイル開発でも設計書は必要!!】
コメント