Масштабирование размещенного приложения ASP.NET

В настоящее время мы заканчиваем разработку веб-приложения для отслеживания времени, построенного на ASP.NET и WCF (для разных настольных клиентов). Наши клиенты могут зарегистрировать аккаунт и добавить неограниченное количество пользователей в свой аккаунт. Цены привязаны к количеству активных пользователей в учетной записи компании.

Для простоты и легкости масштабирования мы подумали, что будет хорошим архитектурным решением, если мы спроектируем каждую учетную запись для работы в качестве единого веб-сайта IIS с собственным пулом приложений, базой данных SQL-сервера и поддоменом.

К сожалению, мы быстро сталкиваемся с нехваткой памяти из-за того, что один рабочий процесс будет потреблять не менее 150 МБ, а это означает, что для каждого отдельного пробного аккаунта нам потребуется прибл. 200 МБ памяти больше...

Помимо больших затрат на такую ​​архитектуру (пробные аккаунты!), Мы не уверены, было ли это хорошим решением для масштабирования, чтобы спроектировать архитектуру таким образом.

  1. Как бы вы разработали такие SAAS-приложения?
  2. Единый пул приложений для многих сайтов?
  3. Единый сайт для многих аккаунтов с общей базой данных?
  4. Масштабирование по вертикали (больше мощности) по сравнению с масштабированием по горизонтали (больше серверов)?
  5. Какие-нибудь хорошие книги или блоги на эту тему?

Спасибо!

1 ответ

Решение

Каковы причины создания нового сайта и пула приложений для каждой учетной записи?

Один сайт с общей базой данных (номер 3 в вашем списке) - гораздо более простое решение, которое может масштабироваться намного лучше. Затем вы можете при необходимости увеличить количество веб-серверов или серверов баз данных. Эта архитектура используется, например, на Sharepoint и большинстве общедоступных веб-сайтов.

Другие вопросы по тегам