私たちが作成した1人の顧客向けのWebアプリケーションは、製品化されて数十社に販売され、ホスティングを行います。
単一の(または非常に少数の)マルチテナントインスタンスを使用するのではなく、顧客ごとに個別のインスタンスを展開することの長所と短所に関するガイダンスを使用できます。
最初は、立ち上げるときに、新しい顧客ごとにアプリケーションの個別のインスタンスを展開する必要があります(一度に1つずつオンラインになります)。これが唯一の即時オプションだからです。メンテナンスに関しては、これはあまり拡張できないと思います。4つまたは5つを超えるインスタンスが存在すると、変更の展開は非常に面倒になり、エラーが発生しやすくなります。どういうわけかそれを自動化しない限り。
また、単一インスタンスの哲学は、人々がカスタマイズを必要とする場合、それがフォークの束につながる可能性があるようです。そして、それを避けるのはいいことです。
それで、これであなたの経験は何でしたか?
ボーナス質問#1:それぞれ2mのレコードを持つ10台のSQL Serverと、20mの巨大な1台のSQL Serverのパフォーマンスの違いは何ですか?それらがすべて1つのテーブルにあり、主に単一のレコードに対して挿入と選択を行っているとします。選択は、インデックス付きのvarchar(12)または日付フィールドにある場合があります。
ボーナス質問#2:フォークを回避するには、カスタマイズを構成可能にするか、プラグインアーキテクチャを構築する必要があると思います。ただし、それによってカスタマイズのコストが増える可能性があります。テキストボックスのサイズを変更するのに1週間かかるようなショップにはなりたくありません。また、インフラストラクチャに過剰な投資をしたくありません。それについて何か考えはありますか?
スケールの詳細
各顧客は、最大数百万のレコードまで、かなりの量のデータを持っています。
同時ユーザーの数は非常に少なく、顧客ごとに数人しかいません。さらに、社内の担当者も数人います。
各顧客がカスタマイズを必要とするかどうかは不明ですが、おそらく一部の顧客はカスタマイズを必要とし、おそらくそれらの変更の一部は他の顧客が見たくないものになるでしょう。