Я рассматриваю ваш вопрос в основном как вопрос, касающийся дизайна с несколькими арендаторами. Как вы разрабатываете единую систему для использования несколькими пользователями? это часто встречается в продуктах «программное обеспечение как услуга», таких как Basecamp и т. д.
Я не знаю каких-либо окончательных ответов, но моя обычная рекомендация похожа на socha23: спроектируйте свое решение так, чтобы оно могло поддерживать несколько баз данных, но делайте это только в случае необходимости.
В общем, иметь одно решение для каждого пользователя НАМНОГО проще в управлении. Вы должны сделать резервную копию только одной базы данных. Вам нужно только развернуть одну кодовую базу. Ваши файлы конфигурации легко синхронизировать.
Наличие отдельной инфраструктуры (аппаратного или программного обеспечения) для отдельных клиентов сразу же делает все намного более сложным - и вы должны инвестировать в тяжелую автоматизацию, чтобы справиться с этой сложностью (я рекомендую подход "непрерывной доставки" - http://continuousdelivery.com/). стоимость выходит далеко за рамки лицензий на оборудование или программное обеспечение, поэтому вы должны понести эти затраты только в том случае, если для этого есть веская причина.
Вероятно, поэтому большинство поставщиков SaaS имеют многоуровневые сервисы. В вашем случае вы можете предложить «золотому» клиенту собственную базу данных, если он готов заплатить за дополнительную производительность.