django中的SaaS产品的后端架构

时间:2016-09-17 03:13:03

标签: python django saas

我正在为django中的SaaS应用程序编写后端。需要一些关于架构的指导。 因此,该产品将提供两种产品:一种是所有用户将共享同一数据库的通用产品,另一种是具有专用数据库的优质产品。我如何计划将其翻译成django如下:

  • 在django项目中,有一个应用程序可用于普通产品。
  • 对于每个高级客户,都将是一个单独的应用程序。
  • 每个应用都有相同的型号。
  • 每个应用与一个单独的数据库通信。使用以下内容实现此目的:stackoverflow postdjango documentation
  • 我会为项目的views.py中的所有API编写视图,而不是在任何应用程序内部,并根据应用程序模型进行通信的标记来决定。

我现在看到的这个架构存在的问题:

  • 在所有观点中,一旦高级客户数量增加,我就必须写很多条件语句。
  • 新的高级客户端的入职需要相当多的代码更改。
  • 所有不同应用的models.py中的代码重复。但它几乎类似于每次高级客户注册时编写用于在新数据库中创建表的语句。评论

请告知我整个架构。在走这条路之前我经历了很多文章和堆栈溢出帖子,但没有一个完全具体到django所以我不是100%自信。非常感谢提前。

1 个答案:

答案 0 :(得分:0)

如果免费和高级产品的功能完全相同,您不需要任何代码重复。这当然是一个很大的中频,因为您可以在高级服务中添加额外的功能。

如果功能完全相同,那么您需要做的就是将所有新的高级数据库添加到settings.py并使用中间件来确定模型应与哪个数据库进行通信(使用using属性),对于共享数据库,为每个表添加owner列,记录该行的所有者是谁,以便您可以适当地过滤查询集。