クライアントのサイジングと容量計画を実行するように求められることがよくあります。当社のクライアントが当社の製品 (基本的には J2EE Web アプリケーション) を購入するとき、それらの製品を実行するために必要なハードウェアをよく尋ねられます。私たちの推奨事項は、多くの場合、高額なハードウェアの取得につながります。
これまでのところ、私が開発した最良のヒューリスティックは、使用予測 (アプリケーションが参加する必要がある登録ユーザーと同時ユーザーの数) を、既存のインストールで収集されたデータと比較することです。例: インストール A が X ハードウェアを使用して 100 人の同時ユーザーに対応する場合、インストール B には 200 人の同時ユーザーに対応するために 2*X ハードウェアが必要です。
ただし、このアプローチには多くの問題があります。多くの場合、クライアントは異なるハードウェアおよびソフトウェア プラットフォームを使用します。彼らが私たちから購入する製品のセットは、通常決して同じではなく、通常、アプリケーションの一部は特定のクライアントの注文に基づいて構築されます。ソフトウェアのバージョンが変更されていることや、サイジングのタスクを非常に困難にするパラメータが非常に多いことを考慮してください。
私はこのテーマに関する本をいくつか調べましたが、複雑な数学的モデルを使用することを提案しているものもあります。これらのアプローチが入力として必要とするパラメーターの数 (たとえば、アプリケーション機能の詳細な分類) を考えると、これらはほとんど役に立たないと思います。ハードウェアは通常、基本的な要件が定義される前に注文されます。これらはアプリケーションの開発とライフサイクルを通じて変化することは言うまでもありません。では、サイジングとキャパシティ プランニングはどのように行うのでしょうか? ヒントやハウツーをいただければ幸いです。