多产品架构,具有较大的共同部分

时间:2018-05-28 11:43:06

标签: git architecture devops

我的公司开发了一个“主要”产品 - 网络应用程序,用户:

  • 上传文件
  • 根据这些文件下载报告

所有这些都是通过Postgresql数据库,Python3后端和Angular / CSS / HTML前端完成的,分成几个docker容器。

问题在于我们几乎没有不同的产品(目前有3个,但数量预计会增长),这些产品共享约​​95-99%的代码,但有一些重要的产品特定差异。这种差异可能是:

  • 可用的不同报告
  • 不同的已接受输入文件类型集
  • 不同的用户帐户(例如,处理“我忘记了密码”请求)
  • 可能更多,更多

差异可能会影响代码的每个部分(数据库/后端/前端)。聪明的配置文件可能会解决一些问题。有些专用模块,或者 - 由于产品之间几乎有无限可能的修改 - 我们开始寻找更通用的解决方案,例如:

  1. 永不合并git branches。我们将拥有分支“base”,“product_x”,“product_y”等,共同开发将在“base”中完成(进一步合并到所有product_ *分支),特定于产品的开发将在product_ *分支中完成。
  2. 产品特定的目录+一些聪明的建筑。最简单的解决方案是“产品X的代码是基本目录中的所有内容,用product_x目录中的所有相应文件覆盖”
  3. 完全独立的存储库,代码会在需要时从“基础”仓库复制到产品仓库。
  4. (+更多或更少的愚蠢选项)。
  5. 我们能想到的每一个解决方案都有严重的缺点。所以,问题是:

    • 你会怎么做?
    • 我们应该谷歌/阅读什么才能做出最佳决定?

    我们知道可能没有完美无痛的解决方案,我们正在寻找的解决方案在一两年内不会变得非常痛苦:)

0 个答案:

没有答案