Зараз у мене є декілька великих веб-продуктів, що базуються на багато орендарів, і дуже скоро я можу побачити, що буде багато налаштувань, що відповідають специфіці орендаря.
Тут або там додаткове поле, можливо, додаткова сторінка або якась додаткова логіка посеред робочого процесу - така річ.
Деякі з цих налаштувань можна перетворити на основний продукт, і це чудово. Деякі з них відрізняються високою специфічністю та отримують у всіх інших спосіб.
Я маю на увазі кілька ідей для управління цим, але жодна з них не здається масштабною. Очевидним рішенням є введення тонни налаштувань на рівні клієнта, що дозволяє включити різні "функції" на основі кожного клієнта. Недоліком цього, звичайно, є масивна складність і безладдя. Ви можете ввести справді величезну кількість налаштувань, і з часом різні типи логіки (презентація, бізнес) можуть вийти з ладу. Тоді виникає проблема специфічних для клієнта полів, яка вимагає чогось більш чистого, ніж просто додавання кулі змінних полів до існуючих таблиць.
Отже, що люди роблять для управління цим? Force.com, здається, є майстром розширюваності; Очевидно, вони створили платформу з самого початку, яка є надзвичайно розширюваною. За допомогою веб-інтерфейсу ви можете додавати майже все, що завгодно. FogBugz зробив щось подібне, коли вони створили надійну модель плагінів, яка, подумайте над цим, могла насправді бути натхненною Force. Я знаю, що вони витратили на це багато часу і грошей, і якщо я не помиляюся, наміром було насправді використовувати їх внутрішньо для подальшої розробки товару.
Це звучить як те, що я міг би спокусити побудувати, але, мабуть, не повинен. :)
Чи єдиний шлях до масштабних інвестицій у підключається архітектуру? Як ви вирішуєте ці проблеми та які результати ви бачите?
EDIT: Це виглядає , як ніби FogBugz обробив проблему шляхом створення досить надійної платформи , а потім з допомогою, щоб з'єднати їх екрани. Щоб розширити його, ви створюєте DLL-класи, що реалізують інтерфейси, такі як ISearchScreenGridColumn, і це стає модулем. Я впевнений, що це було надзвичайно дорого, будувати, враховуючи, що у них є велика кількість розробників, і вони над цим працювали місяцями, плюс їхня поверхня становить, можливо, 5% від розміру моєї програми.
Мені зараз серйозно цікаво, чи Force.com - це правильний спосіб вирішити це. І я важкий хлопець ASP.Net, тому це дивне становище.