从今天这一篇文章开始,我们就进入这个专栏的最后一个系列:实践案例系列了。在这个系列里,我将通过4篇文章,以实际操作为主,带你快速构建一套持续交付系统。 当然,首先我们要做的是,一起整理一下思路,看看我们的系统具体要满足哪些实际的需求,需要具备什么功能。然后,建立需求的锚点,根据这些锚点,展开具体的搭建工作。 因此,在这篇文章中,我会以先介绍模拟团队和项目,再提出具体持续交付需求的思路,罗列一些要模拟的背景,并为你解说这些场景。这样做,可以帮助你在后面的三篇实践文章中找到对应的需求点,也可以让你与现在团队的持续交付体系作一番比较,找到相通之处,从而加深你对持续交付体系的理解。 ## 模拟团队介绍 我在第7篇文章[《“两个披萨”团队的代码管理实际案例》](https://time.geekbang.org/column/article/11323)中,和你分享了“两个披萨”团队的代码管理实践。基本上,我们可以把一个这样的团队看作是一个微型研发团队。虽然这样规模的一个团队也可以很好地运用我们即将搭建的持续交付系统,但是因为过于理想化而缺乏了典型性。 所以,为了更全面地介绍持续交付系统的搭建过程,我将要模拟的团队规模扩大至3个“两个披萨”团队的大小。即,整个产品的研发,需要由这3个团队合作完成。这3个团队的分工,如下图所示: 由这样3个团队组成的中小型研发组织架构,也是目前互联网公司比较流行的。 ## 模拟系统介绍 介绍完模拟团队的情况,接下来,我们需要再了解一下需要模拟的系统。对于持续交付体系来说,系统的业务逻辑并不是要解决的最重要的问题。因为不管业务逻辑如何,持续交付的过程大致都是相通的,都包括了代码管理、环境管理、集成编译管理、测试管理和发布管理这五大步骤。 反而,系统之间如何集成运作,以及依赖关系、交付形式,关系着这持续交付系统应该如何实现,才是更重要的内容。 在这里,我们要模拟的这个系统,最终表现为移动App持续交付体系的形式,需要中间件、业务后台,以及业务客户端这3个团队交付产物的协作,才算是完整: - 首先,用户通过团队3交付的移动App进行系统操作; - 其次,移动App需要调用团队2提供的业务后台服务War,获取数据和处理业务逻辑; - 最后,后台服务War需要依赖团队1提供的业务中间件Jar,完成底层操作,如配置读取、缓存处理等。 这三个团队的依赖关系和交付产物,也决定了他们要采用不同的交付方式:
  • 团队1,有两类交付方式: