Масштабирование размещенного приложения ASP.NET
В настоящее время мы заканчиваем разработку веб-приложения для отслеживания времени, построенного на ASP.NET и WCF (для разных настольных клиентов). Наши клиенты могут зарегистрировать аккаунт и добавить неограниченное количество пользователей в свой аккаунт. Цены привязаны к количеству активных пользователей в учетной записи компании.
Для простоты и легкости масштабирования мы подумали, что будет хорошим архитектурным решением, если мы спроектируем каждую учетную запись для работы в качестве единого веб-сайта IIS с собственным пулом приложений, базой данных SQL-сервера и поддоменом.
К сожалению, мы быстро сталкиваемся с нехваткой памяти из-за того, что один рабочий процесс будет потреблять не менее 150 МБ, а это означает, что для каждого отдельного пробного аккаунта нам потребуется прибл. 200 МБ памяти больше...
Помимо больших затрат на такую архитектуру (пробные аккаунты!), Мы не уверены, было ли это хорошим решением для масштабирования, чтобы спроектировать архитектуру таким образом.
- Как бы вы разработали такие SAAS-приложения?
- Единый пул приложений для многих сайтов?
- Единый сайт для многих аккаунтов с общей базой данных?
- Масштабирование по вертикали (больше мощности) по сравнению с масштабированием по горизонтали (больше серверов)?
- Какие-нибудь хорошие книги или блоги на эту тему?
Спасибо!
1 ответ
Каковы причины создания нового сайта и пула приложений для каждой учетной записи?
Один сайт с общей базой данных (номер 3 в вашем списке) - гораздо более простое решение, которое может масштабироваться намного лучше. Затем вы можете при необходимости увеличить количество веб-серверов или серверов баз данных. Эта архитектура используется, например, на Sharepoint и большинстве общедоступных веб-сайтов.