2014-09-06 102 views
0

我正在领导一个SaaS应用程序。假设这是通过Rest API提供的Java数据分析系统。我有几个开发商,和我们使用组织一个saas项目

  • 存储库(如混帐,汞,说的到位桶或github上),
  • 的Scrum敏捷流程(例如使用JIRA敏捷,youtrack)
  • 持续集成(例如詹金斯,竹)
  • 行家

我想知道什么是最好的做法(和优点/缺点)在分裂大项目为子项目(如果有的话)。

一般来说,我可以看到以下的逻辑模块:

  • 其余接口
  • DataAnalytics API(未实施)
  • 排名模块:模块1,单词数,..
  • 分类模块:模块1 ,Module2
  • visualization
  • etc

我想让它成为一个拥有多个子项目的大型仓库吗?但随后

  • 我需要跟踪的版本,并
  • 确保CI服务器建立只有相关的子项目当一些承诺(我可能不希望构建并重新测试REST接口时,分类模块被更新)

或者我想为每个项目创建一个存储库吗?

任何其他的可能性/我应该考虑的事情?

回答

1

我想让它成为一个拥有多个子项目的大型仓库吗?

这是经常讨论的话题。根据您的问题,您的一些要求可以帮助您确定。

I need to keep track of versions, and 

可以将您的服务进行部署和版本不同,即。您是否可以继续使用版本x运行服务A,然后使用版本y在服务B上部署修订,而不更改服务A.如果是这样,将它们保存在单独的存储库中会有所帮助。

确保CI服务器建立只有当 一些致力于相关的子项目>(我可能不希望构建并重新测试 其余的接口时,分类模块更新)

再次,这是没有将所有内容捆绑到一个存储库中的一个原因。您不希望对可视化进行更改以要求重新构建其余API。所以他们是单独回购的候选人。这也有助于分组和分散的团队。

但是,如果代码库和团队规模太小,可能会导致分解为太多回购的开销。