接下来会以 提高用户价值的流动效率 为核心,列出一些具体的研发流程优化实践
代码入库之前的开发活动,主要包括编码、调测调优、静态检查、自动化测试、代码审查等。这是开发者编写代码的步骤,自然是提高研发效能的关键环节。
代码集成越晚发现问题就越晚。这正是产品上线的最后关头合并混乱,产品质量差、返工率高的一个重要原因。
对应的有三个实践:
提供快速反馈,进行增量开发指的是,能够快速验证已经完成的开发工作,说白了就是边开发边验证。
问题:如果有跨多个发布周期开发的功能,有两种处理方式,一是功能开关,但会引进更多逻辑,二是放弃持续集成,那就需要开一个新的功能分支开发(功能分支模型)。所以团队中使用哪种分支模型需要按下图进行判断:
目标是,对每一个进入主干分支的代码提交,构建打包成为可以发布的产品。对每一个提交,把集成后的代码部署到“类生产环境”中进行验证。如果代码没有问题,后续可以手动部署到生产环境中。
值得一提的是,跟持续交付一样,Facebook 的持续部署也不是纯粹的持续部署。因为代码提交太多,他们并没有每个提交都单独部署,而是采用类似持续交付的方法,把一段时间之内的提交一起部署。这种不教条的方式,是 Facebook 到的一个重要的做事方法
CI/CD 流水线的测试只有尽量完整,代码和产品的质量才能有保证。所以,最主要的工程实践,就是在流水线中运行大量高质量的测试和检查。