我需要一些帮助。我计划开发一个Saas项目,并为500-1000个客户提供服务。每位客户将拥有大约1000名会员,每位会员可以使用移动应用程序跟踪健身信息。
所以我的问题!部署,交付或实现项目的最佳方式是什么?
A)每个客户都有一个解析服务器安装,登录时用户必须输入customerId,email和密码。 customerId映射到子域,子域映射到解析服务器。这里的示例customerId 100123映射到100123.example.com
B)使用角色并将每个对象的角色设置为customerId
解决问题的最佳方法是什么?在解决方案A)中,是管理,配置和设置的开销。但另一方面,每个客户都有自己的数据库。在解决方案B)中,它易于扩展,解析服务器可以托管在heroku上,只需点击一下,我就可以自动扩展新客户。
有经验吗?是否有500K或1M用户可以使用一个解析服务器。
答案 0 :(得分:1)
我们有一个Parse Server安装(选项B),超过1500个'Customers / Companies',并使用多个角色来管理每行的ACL。这非常有效并且可以轻松扩展(我们使用Sashido和back4App进行自动缩放)。
我们这样做(使用您的术语)就是拥有一个Customer
类,其中包含该客户的主记录。然后,我们使用Customer.id作为角色名称的前缀创建多个角色,例如对于客户wDEuKFGTBo
,我们创建了角色:wDEuKFGTBo_admin
,wDEuKFGTBo_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();
});