解析服务器Saas(角色或多个安装)

时间:2018-04-26 20:36:34

标签: parse-platform parse-server

我需要一些帮助。我计划开发一个Saas项目,并为500-1000个客户提供服务。每位客户将拥有大约1000名会员,每位会员可以使用移动应用程序跟踪健身信息。

所以我的问题!部署,交付或实现项目的最佳方式是什么?

A)每个客户都有一个解析服务器安装,登录时用户必须输入customerId,email和密码。 customerId映射到子域,子域映射到解析服务器。这里的示例customerId 100123映射到100123.example.com

B)使用角色并将每个对象的角色设置为customerId

解决问题的最佳方法是什么?在解决方案A)中,是管理,配置和设置的开销。但另一方面,每个客户都有自己的数据库。在解决方案B)中,它易于扩展,解析服务器可以托管在heroku上,只需点击一下,我就可以自动扩展新客户。

有经验吗?是否有500K或1M用户可以使用一个解析服务器。

1 个答案:

答案 0 :(得分:1)

我们有一个Parse Server安装(选项B),超过1500个'Customers / Companies',并使用多个角色来管理每行的ACL。这非常有效并且可以轻松扩展(我们使用Sashido和back4App进行自动缩放)。

我们这样做(使用您的术语)就是拥有一个Customer类,其中包含该客户的主记录。然后,我们使用Customer.id作为角色名称的前缀创建多个角色,例如对于客户wDEuKFGTBo,我们创建了角色:wDEuKFGTBo_adminwDEuKFGTBo_user等。每个User都会被分配/添加到其相应的角色中。

然后我们确保每个其他类都有一个Customer列,该列具有指向相应Customer条目的指针。

然后我们为每个类添加以下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();

});