2011年7月12日火曜日

(小ネタ)webアプリケーションからの時間取得について

webアプリケーションで、現在日時を取得する場面は多いと思います。

その際注意しなければいけないのは、「どこから時間を取得するか?」という事です。

通常考えられる時間の取得場所は

・DBサーバ(sql文からsysdate等の関数を利用して)
・APサーバ(プログラム開発言語からOS時間を取得)

になると思いますが、アプリケーション側からの一貫した時間取得方法を明確にしておく事は大きな意味があります。

1. インフラレベルで時間が同期できていなかったら?という観点から時間を取得する場所は一定にするべき

無論ntpdで同期しておけば...という話がありますが、意外と合っていない場合があります。

2. テストの観点から「日時を固定、もしくは作為的にある日に設定」をしなければいけない場合がある

業務上の特定日(例 締め日)に固定し、テストしたい事は良くあります。
その場合も日時の取得方法を一貫性のある設計にしておけば、簡単に問題解決を図る(例 mock化)事ができます。

上記を確実に実施する為に、下記のような事を考えておけば良いのではないでしょうか。

・どこでどのように時間を取得するかアーキテクチャ上明確にし規約化する
・規約に反した時間取得方法を行っているプログラムを抽出する為に、規約チェックツールを作成する
  例) / SYSDATE/等でgrepする

ではでは

0 件のコメント:

コメントを投稿