現在、いくつかの大きなWebベースのマルチテナント製品がありますが、すぐにテナント固有のカスタマイズが多数行われることがわかります。
あちこちの余分なフィールド、おそらく余分なページ、またはワークフローの途中の追加のロジック-そのようなこと。
これらのカスタマイズの一部は、コア製品に組み込むことができ、それは素晴らしいことです。それらのいくつかは非常に具体的であり、他の人の邪魔になります。
これを管理するためのいくつかのアイデアを念頭に置いていますが、どれもうまく拡張できないようです。明らかな解決策は、クライアントレベルの設定を多数導入し、クライアントごとにさまざまな「機能」を有効にすることです。それの欠点は、もちろん、非常に複雑で混乱していることです。本当に膨大な数の設定を導入でき、時間の経過とともにさまざまなタイプのロジック(プレゼンテーション、ビジネス)が手に負えなくなる可能性があります。次に、クライアント固有のフィールドの問題があります。これは、既存のテーブルに多数のNULL可能フィールドを追加するだけでなく、よりクリーンなものを要求します。
では、これを管理するために人々は何をしているのでしょうか?Force.comは拡張性のマスターのようです。明らかに、彼らは一からプラットフォームを作成し、それは超拡張可能です。WebベースのUIを使用して、ほぼすべてに追加できます。FogBugzは、実際にForceに触発された可能性のある堅牢なプラグインモデルを作成するのと似たようなことをしました。私は彼らがそれに多くの時間とお金を費やしたことを知っています。もし私が間違っていなければ、意図は将来の製品開発のために実際に内部で使用することでした。
構築したいと思われるかもしれませんが、おそらくそうすべきではないようです。:)
プラガブルアーキテクチャへの大規模な投資が唯一の方法ですか?これらの問題をどのように管理し、どのような結果を目にしていますか?
編集: FogBugzはかなり堅牢なプラットフォームを構築し、それを使用して画面をまとめることで問題を処理したかのように見えます。それを拡張するには、ISearchScreenGridColumnなどのインターフェイスを実装するクラスを含むDLLを作成し、それがモジュールになります。多数の開発者がいて、数か月間作業したことを考えると、構築するのに莫大な費用がかかったと確信しています。さらに、その表面積はおそらく私のアプリケーションのサイズの5%です。
現在、Force.comがこれを処理する正しい方法かどうかを真剣に考えています。そして、私はハードコアASP.Netの男なので、これは自分自身を見つけるのに奇妙な立場です。