Какую архитектуру мне выбрать для веб-приложения CRM? - PullRequest
0 голосов
/ 27 июня 2010

Я планирую веб-приложение CRM.

Целевыми пользователями будут небольшие фирмы с несколькими сотнями клиентов. Я планирую использовать Rails Framework и Rackspace Cloud Server / Amazon EC2 для размещения.

Поскольку данные будут конфиденциальными, я бы предпочел не использовать одну базу данных для всех пользователей. Означает ли это, что мне придется запустить новый экземпляр моего приложения rails с отдельной базой данных для каждого клиента, причем каждое приложение привязано к поддомену? Или есть обходной путь?

Еще один вопрос. Если мне нужно создать новый экземпляр приложения rails для каждого клиента, сколько экземпляров может поддерживать экземпляр EC2 приличного размера [около 2 ГБ ОЗУ, 2 ГГц ЦП]? [100 операций чтения / записи на экземпляр в день].

Ответы [ 3 ]

2 голосов
/ 27 июня 2010

Это не относится к Rails, но вы действительно должны прочитать о multitenancy , который я рекомендую для вашего приложения. Вместо того, чтобы поддерживать экземпляр вашего кода для каждого клиента, вы поддерживаете один экземпляр, который знает, что он поддерживает несколько клиентов. Я не просматривал его, но мне удалось найти конференцию о написании приложений с несколькими арендаторами в Ruby / Rails. Вы можете найти больше информации в ответах на этот вопрос: Любые мысли о мультитенантных и многопользовательских приложениях в Rails

1 голос
/ 28 июня 2010

Большинство мультитенантных приложений в мире SAAS, похоже, работают в одной базе данных, используя уникальный идентификатор (идентификатор клиента или учетной записи) для разделения данных.Код довольно прост и работает.Вы можете создавать тесты и аудит для процесса развертывания, чтобы обеспечить конфиденциальность данных.

Однако я бы также посоветовал взглянуть на схемы Postgresql.Использование схемы позволяет вам разбить одну базу данных на несколько уникальных схем с контролируемым доступом.

Подробнее здесь: Стоит ли использовать несколько баз данных? .

Что касается второй части вашего вопроса относительно количества экземпляров - это действительно будет зависеть от самого приложения и от того, сколько ОЗУ оно использует.100 операций чтения / записи в день настолько малы, что не имеют значения, поэтому оперативным фактором является оперативная память.«Среднее» приложение Rails будет использовать что-нибудь от 20-100 МБ на экземпляр, поэтому сервер 2 ГБ должен быть в состоянии запустить довольно много.Конечно, ваше развертывание станет довольно сложным, так как вам нужно будет работать в среде виртуального хостинга, чтобы получить эту настройку эффективно.

Мой голос определенно был бы за одно приложение.

1 голос
/ 27 июня 2010

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

Я бы не рекомендовал бы создавать отдельные экземпляры баз данных / rails для каждого клиента. С хорошей авторизацией, как я и ожидал, приложение, которое вы описываете, может обеспечить любой доступ к неавторизованным элементам без особых проблем.

Кроме того, запуск многих экземпляров Rails "забьет" вашу систему в основном потраченными впустую ресурсами.

EC2 хорошего размера должен быть в состоянии поддерживать ваше приложение, однако на самом деле все сводится к тому, насколько дорогим является выполнение вашего кода (за время процессора) и насколько дороги ваши запросы. Мы не можем дать действительно точную оценку.

...