Как организованы SaaS-приложения? - PullRequest
3 голосов
/ 27 апреля 2010

Рассмотрим веб-приложение (MVC, например, Rails) для нескольких клиентов как услугу.

Как спроектировать это?

  • один экземпляр приложения на клиента? (+ одна база данных на клиента)

  • один экземпляр для всех клиентов (+ одна база данных для всех клиентов)

Бывший простой, но ... "неэффективный". Как насчет последнего? (лучшие практики, шаблоны проектирования) Как отделить данные клиента? Например: работник «А» клиента «1» имеет два документа, работник «Б» клиента «2» имеет три документа. Как построить ассоциации моделей для защиты данных других пользователей (и клиентов)? Я думаю, что объединение каждого запроса с моделью клиента не является хорошим решением.

Ответы [ 2 ]

0 голосов
/ 10 мая 2011

Эта статья MSDN хорошо объясняет мультитенантные архитектуры данных.

Вероятно, очевидно, но я все равно отмечу это; стандартная конфигурация экземпляров Rails для хранения информации о сеансе на стороне клиента в файлах cookie обеспечивает одинаковую способность всех экземпляров приложения обслуживать запросы.

Другая статья в этой серии также информативна с точки зрения определения общих служб, таких как мониторинг, который вам потребуется.

0 голосов
/ 27 апреля 2010

Я бы посоветовал взглянуть на более ранний ответ для мультитенантных приложений в Ruby on Rails .

Это действительно зависит от вашего варианта использования, но самый простой способ справиться с этим - это отдельная база данных с областью действия для конкретных приложений. Вы можете отправиться оттуда в зависимости от ваших требований / бюджета.

Я большой поклонник системы схем postgresql, подробно описанной в этой ссылке: P

...