Я разрабатываю коммерческое веб-приложение Asp.Net MVC. Приложение является стандартным, работает на веб-сервере IIS и использует базу данных SQL Server. Наша бизнес-модель такова, что мы развертываем наше приложение на месте во внутренней сети или центре обработки данных наших клиентов. То есть для каждого такого клиента (аккаунта) мы поставляем полную установку, обычно устанавливаемую на выделенном автономном сервере. У каждой такой учетной записи есть свой личный контент, пользователи, конфигурации и так далее.
Мы хотим расширяться и предлагать наши услуги в WWW (общедоступном Интернете). После некоторых исследований я выбрал облачную платформу Microsoft Azure для размещения нашего приложения. С небольшими усилиями (в основном, с обучением приложения работать с хранилищем файлов Azure с помощью больших двоичных объектов) мне удалось полностью развернуться в облаке с использованием трех облачных служб: веб-сайта, базы данных и хранилища файлов.
Обратите внимание, что я использую одну и ту же кодовую базу для двух типов развертывания (Интранет и Облако), используя разные конфигурации для Отладки, Выпуска — Интранет, Промежуточного этапа — Azure, Производство — Azure.
Однако приложение (в том виде, в каком оно написано сейчас) может обслуживать только одну учетную запись клиента, тогда как мне нужна наша облачная версия для обслуживания множества учетных записей (надеюсь, много ;) … каждая со своим собственным набором личных данных.
Вопрос: какую из следующих стратегий мне здесь следует использовать?
Измените приложение, чтобы оно поддерживало несколько учетных записей. Это означает изменения как в модели данных (добавление объекта Account на уровне данных, привязка его ко всем типам контента и т. д.), так и в бизнес-логике.
Создайте для каждого Аккаунта свой сайт на облаке (веб-сайт + база данных + сервисы хранения файлов). Это означает развертывание одного и того же приложения несколько раз в разных службах Azure.
Очевидно, что объем разработки, необходимый для 1-го подхода, здесь очень велик, как и риск стабильности системы, а 2-й подход требует гораздо меньших усилий.
Однако я не понимаю, как управлять набором множества идентичных сервисов (приложений), каждое из которых обслуживает разные учетные записи клиентов. Я начал искать инструменты, которые помогут мне в этом (например, Red Gate), и мне бы очень хотелось услышать больше.
Другой вопрос — стоимость. Является ли такое решение, использующее множество облачных сервисов вместо нескольких, более дорогостоящим, чем более стандартный подход «одно приложение для всех учетных записей».
спасибо,