2011年6月22日水曜日

(小ネタ)何故例外メールのアドレスや件名をDBに持ってはいけないのか?

設計小話。

webシステムを設計する際、メール送信の仕組みをデータベース化し、文面のテンプレート化、From/To/Cc/Bccの管理を行うようなケースは多いと思います。より抽象化したメッセージング機構とかがあっても良いかもしれません。
画面でGUIを設けてあげると、顧客自身でメンテナンスする事ができる為大変喜ばれるでしょう。

しかし例外メール(a.k.a. 障害報告メール。railsでいうExceptionNotifier)の送信先とかを、データベースに持たせる事は絶対にしてはいけません。

何故でしょう?
(分からない方は1分程度考えてみてください)

.
..
...
....
..... 終了!

例外メールが送信されるべき場合は
・プログラムバグに起因する想定外の動きをした場合
・ネットワーク、DBのトラブルに起因する設計時点より備えなければいけない場合
前者は特に問題になりませんが、後者が重要です。

DB障害が発生した

例外メールを出さなければいけない

送信先を取得する為に、DBを参照しなければいけない

接続できない!

送信できない!!!

# エンジニアはこういう小学生でも分かりそうなミスを時折犯してしまう場合があります。

環境に応じて、事前に顧客と合意したアドレスにシンプルに送信するのが吉だと思います。
場合によっては記載内容を吟味しないとセキュリティ的にまずい場合があるので気をつけて下さい。

# 当たり前な事ですが割りと質問が多いので記事にしておきます。
# ログを見張る別の系を用意できる場合は今回のケース外という事で(汗)

0 件のコメント:

コメントを投稿