データベースとビルドタイム
http://martinfowler.com/bliki/DatabaseAndBuildTime.html
対照的でとても面白い事例を最近手に入れました。 2つのエンタープライズアプリケーションプロジェクトがありまして、どちらも同じような規模なんですね(〜100k行)。環境も似ている(Javaと.NET)。ビルド(テスト込)を行うのに、一方は1時間かかるのですが、もう一方は2,3分で済んでしまうのです。
この違いは何なのでしょうか?今のところ、データベースアクセスの部分ではないかという分析結果が出ています。どちらのプロジェクトも大規模なテストスイートを使っていて、ビルドにかかる時間のほとんどはテストの部分です。特にデータベースにアクセスするテストですね。これがテスト時間の50%を占めています。
2,3分で済んでいるプロジェクトは、O/Rマッピングレイヤー(neo)を使っています。これは、アプリケーションをデータベースから分離させるものです。データベースにアクセスするのは、neo用のテストだけで済みます。その他のテストはすべてメモリ内で処理が行われますから、結果として速くなるというわけです。