解析服务器 SaaS(角色或多个安装)
Parse Server Saas (Roles or Multiple Installations)
我需要一些帮助。我计划开发一个 Saas 项目并为 500-1000 个客户提供服务。每个客户将有大约 1000 名成员,每个成员都可以使用移动应用程序来跟踪健身信息。
所以我的问题!部署和交付或实现项目的最佳方式是什么。
A) 每个客户都安装了解析服务器,登录时用户必须输入客户 ID、电子邮件和密码。 customerId 映射到子域,子域映射到解析服务器。这里的示例 customerId 100123 映射到 100123.example.com
B) 使用角色并将每个对象上的角色设置为 customerId
解决问题的最佳方法是什么。在解决方案 A) 中,这是管理、配置和设置的开销。但另一方面,每个客户都有自己的数据库。在解决方案 B) 中,扩展很容易,解析服务器可以托管在 heroku 上,只需点击几下,我就可以扩展并自动交付新客户。
有经验吗? 500K 或 1M 用户是否可以使用一台解析服务器。
我们有超过 1500 个 'Customers/Companies' 的单个 Parse Server 安装(选项 B),并使用多个角色来管理每一行的 ACL。这完美地工作并且可以轻松扩展(我们将 Sashido 和 back4App 与它们的自动缩放一起使用)。
我们这样做(使用您的术语)的方法是拥有一个 Customer
class,其中包含该客户的主记录。然后我们使用 Customer.id 作为角色名称的前缀来创建多个角色,例如对于客户 wDEuKFGTBo
,我们创建角色:wDEuKFGTBo_admin
、wDEuKFGTBo_user
等。每个 User
获得 allocated/added 到他们适当的角色。
然后我们确保每个其他 class 都有一个 Customer
列,该列具有指向适当客户条目的指针。
然后我们给每个Class添加下面的beforeSave
钩子:
Parse.Cloud.beforeSave("CLASS", function(request,response) {
var acl = new Parse.ACL();
var comp = request.object.get('Customer').id;
acl.setRoleReadAccess(comp + '_admin', true);
acl.setRoleWriteAccess(comp + '_admin', true);
acl.setRoleReadAccess(comp + '_user', false);
acl.setRoleWriteAccess(comp + '_user', false);
request.object.setACL(acl);
response.success();
});
我需要一些帮助。我计划开发一个 Saas 项目并为 500-1000 个客户提供服务。每个客户将有大约 1000 名成员,每个成员都可以使用移动应用程序来跟踪健身信息。
所以我的问题!部署和交付或实现项目的最佳方式是什么。
A) 每个客户都安装了解析服务器,登录时用户必须输入客户 ID、电子邮件和密码。 customerId 映射到子域,子域映射到解析服务器。这里的示例 customerId 100123 映射到 100123.example.com
B) 使用角色并将每个对象上的角色设置为 customerId
解决问题的最佳方法是什么。在解决方案 A) 中,这是管理、配置和设置的开销。但另一方面,每个客户都有自己的数据库。在解决方案 B) 中,扩展很容易,解析服务器可以托管在 heroku 上,只需点击几下,我就可以扩展并自动交付新客户。
有经验吗? 500K 或 1M 用户是否可以使用一台解析服务器。
我们有超过 1500 个 'Customers/Companies' 的单个 Parse Server 安装(选项 B),并使用多个角色来管理每一行的 ACL。这完美地工作并且可以轻松扩展(我们将 Sashido 和 back4App 与它们的自动缩放一起使用)。
我们这样做(使用您的术语)的方法是拥有一个 Customer
class,其中包含该客户的主记录。然后我们使用 Customer.id 作为角色名称的前缀来创建多个角色,例如对于客户 wDEuKFGTBo
,我们创建角色:wDEuKFGTBo_admin
、wDEuKFGTBo_user
等。每个 User
获得 allocated/added 到他们适当的角色。
然后我们确保每个其他 class 都有一个 Customer
列,该列具有指向适当客户条目的指针。
然后我们给每个Class添加下面的beforeSave
钩子:
Parse.Cloud.beforeSave("CLASS", function(request,response) {
var acl = new Parse.ACL();
var comp = request.object.get('Customer').id;
acl.setRoleReadAccess(comp + '_admin', true);
acl.setRoleWriteAccess(comp + '_admin', true);
acl.setRoleReadAccess(comp + '_user', false);
acl.setRoleWriteAccess(comp + '_user', false);
request.object.setACL(acl);
response.success();
});