云原生落地:企业级DevOps实践
上QQ阅读APP看书,第一时间看更新

1.6.3 CI/CD的优点

1.避免重复

我经历过比较低效的CI/CD流程,开发人员提交代码→主管审核并合并到主干→找测试人员进行Jenkins打包→测试验证→找配置工程师抽取部署包→发邮件给运维人员提交发布→找运维人员排队上线,往往这个流程结束时已经是凌晨。集成、合并代码、配置、提测、提交发布单、找人这些重复性的工作每次发布都要重新并频繁地进行。重复即意味着可优化,CI/CD的出现把这些重复的劳动全部交给平台自动完成,大大解放了生产力。有了CI/CD平台后,开发人员完全可以自助发布,1个小时内轻松完成一个应用的上线流程。

2.大大减少低级错误

之前我的团队经常遇到代码合并的问题,当从测试环境进入准生产环境时,要将代码合并到主干,这个过程经常出现少合、合错的问题,往往在新一轮的测试验证中发现重复的漏洞,到了生产环境可能又有因为人工参与导致的低级错误。有了CI/CD平台后,代码合并、分支都是平台管理的,避免出现手工合并代码导致的漏洞。

3.更高的标准化程度

提到CI/CD不得不提环境问题和代码分支模型,很多公司有测试环境、预发环境、生产环境、集成环境、二套环境等,每个人的认知和过往经验对环境的认知都是不一样的,这样就会导致团队间的语言不统一。除了环境,另一个不统一的概念是分支模型,有的团队是基于主干开发,有的团队是基于开发(Develop)分支,有的团队是基于特性分支。因为分支开发模式的千差万别,导致分支的管理和运维成本急剧上升。通过CI/CD平台,所有的环境和分支模型都被平台化,开发人员无须关注任何一个细粒度的底层操作,团队间的认知也提升到了一个统一的位置,发布效率也随之大大提升。

4.敏捷提效

在发布流程之前,我还经历过通过邮件提交上线计划、手工抽取部署包的原始发布流程,这种低效的发布流程往往会导致排队上线到凌晨。为了保证上线质量,流程上往往会规范周二、周四才允许上线的窗口期。有了CI/CD平台后,开发人员可以在任意时间自主发布,我所在的团队每天平均发布500次,如果没有CI/CD平台的支持,如此高频的发布是无法想象的。

5.更高的产品质量

在CI/CD流水线中,往往会有些钩子的扩展,如项目管理、测试用例、代码审查、代码Bug清单、安全Bug清单等扩展功能,会极大提升代码交付的质量。同时可以提供灰度发布、分批发布、金丝雀发布、蓝绿部署等多种校验形式,便于代码更高质量的验证与交付。