Разработвам търговско Asp.Net MVC уеб приложение. Приложението е стандартно, работи на IIS Web Server и използва SQL Server база данни. Нашият бизнес модел е такъв, че внедряваме нашето приложение на място в интранет или център за данни на нашите клиенти. Тоест, за всеки такъв клиент (акаунт) ние доставяме пълната настройка, обикновено инсталирана в специален самостоятелен сървър. Всеки такъв акаунт има собствено лично съдържание, потребители, конфигурации и така нататък.
Искаме да разширим и да предложим нашата услуга в WWW (обществен Интернет). След известно проучване избрах облачната платформа Azure на Microsoft за хостване на нашето приложение. С някои незначителни усилия (основно обучение на приложението да работи с файловото хранилище на Azure с помощта на петна) успях да внедря напълно в облака, използвайки три облачни услуги: уеб сайт, база данни и файлово съхранение.
Моля, обърнете внимание, че използвам една и съща кодова база за двата типа внедряване (интранет и облак), като използвам различни конфигурации за отстраняване на грешки, издаване – интранет, етап – Azure, производство – Azure.
Въпреки това, приложението (както е написано сега) може да обслужва само един клиентски акаунт, докато имам нужда от нашата облачна версия, за да обслужва многобройни акаунти (надявам се много;) ... всеки със собствен набор от лични данни.
Въпрос: коя от следните стратегии трябва да използвам тук?
Променете приложението, така че да поддържа множество акаунти. Това означава промени както в модела на данни (добавяне на обект на акаунт в слоя данни, обвързването му с всички типове съдържание и т.н.), така и в бизнес логиката.
Създайте за всеки акаунт собствен сайт в облака (уеб сайт + база данни + услуги за съхранение на файлове). Това означава внедряване няколко пъти на едно и също приложение в различни услуги на Azure.
Очевидно е, че степента на развитие, необходима за първия подход тук, е много голяма, както и рискът за стабилността на системата, докато вторият подход изисква много по-малко усилия.
Не ми е ясно обаче как да управлявам набор от много идентични услуги (приложения), всяка от които обслужва различен клиентски акаунт. Започнах да търся някои инструменти, които да ми помогнат тук (напр. Red Gate) и ще се радвам да чуя повече.
Друг въпрос е цената – такова решение, използващо много облачни услуги вместо само няколко, по-скъпо ли е от по-стандартния подход „едно приложение за всички акаунти“.
благодаря,