首页 » 软件优化 » 程序员为什么要懂持续集成和持续交付?(持续集成交付部署过程)

程序员为什么要懂持续集成和持续交付?(持续集成交付部署过程)

雨夜梧桐 2024-11-02 14:31:17 0

扫一扫用手机浏览

文章目录 [+]

持续交付(Continuous Delivery)是指频繁地将软件的新版本交付给质量团队或者用户,以供评审,如果评审通过,代码就进入生产阶段。

持续部署(Continuous Deployment)是持续交付的下一步,指的是代码通过评审以后,自动部署到生产环境中。

通过上面的定义我们不难发现,持续突出的就是一个快字,商业软件的快速落地需求推动了软件工程的发展。
可持续的、快速迭代的软件过程是当今主流开发规约。
尤其在互联网行业,快速响应即是生命线。
从一个想法到产品落地都处在冲锋的过程中,机会稍纵即逝。
响应用户反馈也是万分敏捷,早晨的反馈在当天就会上线发布,快得让用户感觉倍受重视。
“快”已经成为商业竞争力。
这一切都要求企业具备快速响应的能力,这正是推动持续集成、持续交付、持续部署的动力。

程序员为什么要懂持续集成和持续交付?(持续集成交付部署过程) 软件优化
(图片来自网络侵删)

产品或者项目的参与者应该能够深刻体会到团队协作时,工作交接(系统集成)部分最容易出问题,会消耗大量的沟通成本与时间成本,直接拖慢进度。
所以,一个行之有效的项目管理过程(包括沟通管理、流程管理)在大型项目中效果明显。
当前敏捷开发是主流,持续集成、持续交付与持续部署正好能够帮助高效地实施敏捷过程,促进开发、运维和质量保障(QA)部门之间的沟通、协作与整合。

1.2 CI&CD 带来的变化

通常把开发工作过程分为编码、构建、集成、测试、交付、部署几个阶段(见图1-1),持续集成、持续交付、持续部署刚好覆盖这些阶段。
从提高效率上来讲,对每个阶段的优化都可以缩短软件交付时间。
持续集成、持续交付及持续部署的过程即是一个软件开发优化过程。

▲图1-1 CI&CD 过程

墨菲定律大家都不陌生,越是担心什么就越会发生什么;在多团队协作时,比如系统对接时,我们都会担心对接是否顺利,往往也不枉我们担心,时常我们会被集成折磨得焦头烂额。
有很多团队只是担心,并没有拿出有效的措施去避免这种事情发生,以至于延长了交付时间。
既然担心,我们何不及早集成,把问题先暴露出来?

目前多数公司都已经使用了版本管理工具来管理源码,比如GitLab、SVN 等版本管理工具。
在版本管理这一块,公司会根据自己的实际情况来制订版本管理办法。
对于持续集成来说,业内建议只维护一个源码仓库,降低版本管理的复杂度。
开发人员持续提交自己的修改,自动触发编译,自动集成,自动进行自动化的测试,及早反馈集成过程中的问题,就能更好地防止出现平时不集成、集成就出问题的现象。

通过自动化的持续集成,把管理流程固化;保证集成的有序性、可靠性;减少版本发布的不合规性(开发或者测试手动打包,可能一天打多个包,更新多次,测试不充分),保证版本可控,问题可追溯(至于哪个版本出现的问题,可以回溯)。

一旦把这种持续集成的过程固定下来,形成一个自动化过程,就具备了持续集成的能力,软件交付的可靠性就大大增强,这无形也是一种竞争力。
这种竞争力保证了集成的有序性、可靠性。
过程的自动化抛弃了人工,降低了出错率,提高了速度,自然会节省成本。

1.3 CI&CD 实施现状

在日常生活中处处都体现着一个“快”字,互联网更是对快追求到极致。
持续集成、持续交付、持续部署在互联网行业更为广泛。
作者没有统计哪些公司在用,只是圈子中朋友公司都实施了持续集成,具备持续交付能力。
至于持续部署就没这么广泛了,毕竟持续部署不仅仅是技术问题,还涉及管理、营运等问题。
尤其是一些金融企业、大型国企,开发团队外包,测试外包,运营半外包,安全要求高,很难快速实施。
多数能够在测试环境中建立起CI&CD就已经很不错了。

阿里云、腾讯云、网易蜂巢等国内云,都提供了从GitLab 下拉代码、编译打包、单元测试、镜像制作、容器发布的功能。
这个过程实际上就是持续集成、持续交付的过程,同时具有持续部署的能力。
基本上,持续集成、持续交付、持续部署是一种服务能力,是云平台必须具备的能力。

下面引自2017 年DevOps 现状调查报告。

统计资料显示,DevOps 正在各个行业、各种规模的企业中落地。
DevOps 团队的比例在2014 年是16%,在2015 年是19%,在2016 年是22%,在2017 年已经增长到27%,越来越多的企业和团队开始拥抱DevOps。
图1-2 是2017 年DevOps 现状调查报告统计的从业分布情况。

完整的报告可以从qcloudimg 网站下载。

在本书撰写过程中2018 年DevOps 现状调查报告也已经出来,图1-3 是精英级执行团队使用DevOps 后的效率。

精英级执行团队在以下几个方面有着突出的表现。

1)代码发布频率高46 倍。

2)代码从提交至发布的速度快2555 倍。

3)故障变更率降低1/7。

4)事故恢复时间快2604 倍。

另外,云计算持续增长(见图1-4)。
有17%的调查者仍然没有使用云厂商的服务。
AWS最受欢迎,占比为52%,Azure 屈居次席,占比为34%。

1.4 CI&CD 技术栈

目前持续集成、持续交付、持续部署在开源社区都是热点,用户可以方便地利用这些开

源组件来构建自己企业的持续集成、持续交付及持续部署平台。

持续集成工具中以Jenkins 使用最为广泛,由Jenkins 来作业化持续集成过程;利用GitLab

来管理程序版本;利用Gerrit 来做代码审核;利用Sonar 进行代码质量扫描;利用JUnit 进行

单元测试;利用Docker compose 来构建镜像;利用Docker 来部署容器;利用Kubernetes、

Rancher 等进行服务编排。
图1-5 显示了常见的CI&CD 技术栈。
后续讲解CI&CD 落地时会

运用到其中的一些技术与工具。
当然,基本上都运用开源工具,这也有助于企业在落地时节

省费用。

腾讯研发总监leo fan,阿里巴巴高级技术专家吴毓雄,滴滴出行高级技术专家任杨,飞谷云创始人\大数据实战专家\平安壹钱包前大数据架构师张粤磊联合推荐

来自一线的实践经验,深入呈现技术细节;详实的实操示例,即学即用的实战技术

讲解了持续集成中引人入胜的内容:CI/CD到底要解决什么问题?它与DevOps之间的关系是怎样的?程序员如何用工具化的系统持续进行代码的版本管理、构建、打包、集成、测试和部署?利用云平台和容器技术实现弹性伸缩价值等

标签:

相关文章

湖北“族谱新释”(族谱家族世祖兴山宗祠)

求木之长,必固其根本,水流之远则清其源泉。自成汤共氏,历十七代,加龙为龚,是为姓焉!天下龚无二姓,介因有谱,所以正统,望岀武陵,卓...

软件优化 2025-02-12 阅读1685 评论0