交付自动化的探索与展望

正如Kurt Bittner说的那样,如果敏捷仅仅是个开始的话,那持续交付则是头条!(我则更喜欢理解成高潮)。

“If Agile Was the Opening Act,Continuous Delivery is the Headliner!”——Kurt Bittner

现代企业要求软件开发过程保持最大的工作效率,传统的瀑布式开发早已跌入历史洪流,甚至敏捷宣言也已超过10年的历史,软件开发在经历了敏捷开发、持续集成后,正逐步迈入到持续交付的时代

持续交付是持续集成的延伸,强调以自动化、可视化的手段更快的将产品交付到客户手中。持续交付的一个重要衡量指标就是从代码提交直到客户能使用这个功能所花费的时间,通过实行持续交付,这个时间往往可以从原先的几天、几周缩短到几分钟。当然,快速交付并不意味着不可靠。

那么我们如何实施自己的持续交付?以我们实际项目为例,与大家进行一个探讨,归纳起来,总共经历了以下3个过程:

搭建持续集成环境

以Jenkins为核心搭建持续集成平台,每天定时从代码库中检出最新的代码进行编译、构建。构建结果通知到项目组,开发人员只需要关注每天的集成结果是否是绿的就可以了,同时加入测试环境部署及自动化测试。

图1.自动部署测试环境

图2. Selenium自动测试

简洁统一风格的代码有利于大家更好的理解及进行走查,而单元测试则是为了前期高质量的交付。

图3.单元测试统计

通过SonarQube+JaCoCo的引入,可方便的定位到存在问题的代码行及单元测试情况。

图4.问题定位

自动化测试流水线

持续交付讲究Automate almost everything将一切过程自动化起来,减少人工的干预。这里我们主要加入了以下环节。

自动化的接口及集成测试

测试进入的越早,发现问题修复的成本越低,通过引入TestNG等测试框架,对接口以及模块集成进行测试,有效的降低Bug流入后续环节的风险。

测试分级

将测试用例拆分成SmokingTest、AllTest等多套用例集,一方面快速反馈代码更新可能引起的风险,同时保证测试的有效覆盖,同时通过分布式集群并发执行等方式,加速执行效率,最终形成以下的流水线。

图5.管道流水线

自动化交付及全平台工具整合

在传统模式下开发、测试、运维往往比较独立,测试完成后由运维人员进行部署上线,但是由于运维人员能力水平存在高低,复杂环境下的发布往往只有固定的几人才能搞得定,从而导致上线发布周期被拉长。我们通过自建交付自动化工具,同时整合平台让运维对外提供服务,消除开发、测试与运维之间的边界,大大降低了自动化运维的门槛,让运维效率有了很大的提升。

图6.交付自动化

通过作业流程的编排,沉淀标准化作业封装,让普通运维人员快速实现相应的自动化脚本,同时通过整合资源/环境,对开发测试提供资源申请、部署等服务,加速自动化发布的验证,避免在正式发布时导致问题。

持续的反馈

上线发布完成并不意味着交付结束,当今社会是一个以服务取胜的社会,我们交付给用户的不再是简单的产品,更多的应该是服务。通过自动化的监控获取用户的反馈快速做出响应,不断提升我们的服务,才能提高用户的满意度和粘性。

总结

持续交付是一套方法论,通用的并不一定适合自己。希望仅以本文做一个引子,让大家寻找到适合自身的持续交付之路!附上一张交付过程中的工具集供大家参考。

作者介绍

葛成远,10年测试老兵,掉入运维领域而无法自拔,现任职优云软件。

时间: 2024-10-05 19:11:33

交付自动化的探索与展望的相关文章

互联网音乐服务中音频技术的探索

幻灯片下载http://pan.baidu.com/s/1r3koI 简介:本报告主要介绍百度音乐在互联网音乐服务产品中涉及到的音频技术的探索及应用,主要包括音乐的增强表现.音乐的自动内容分析和个性化音乐推荐等,也包括工业界的一些其他探索及展望. Introduction: Music enhancement and audio content analysis techniques have been used in Baidu Music product to improve the use

Appium + python自动化 - 启动app

各种百度将Appium + python的环境搭建好后,开启移动app自动化的探索(基于Android),首先来记录下如何启动待测的app吧! 如何启动app呢?首先要获取包名,然后获取launcherActivity.获取这两个关键东西的方法有很多,在这里推荐一个sdk自带的实用工具aapt:aapt即Android Asset Packaging Tool,在SDK的build-tools目录下.该工具可以查看apk包名和launcherActivity,当然还有更多的功能,有兴趣的可以查看

打造云上代码交付链_CodePipeline实践分享

原文链接 摘要: 在2017在线技术峰会--首届阿里巴巴研发效能嘉年华上,来自阿里云飞天研发部的工程师莫源分享了<打造云上代码交付链,CodePipeline实践分享>.他在云计算和云平台.持续集成流程.DevOps的基础上,详细分享了Alibaba Cloud CodePipeline优于Jenkins的性能和实践. 在2017在线技术峰会--首届阿里巴巴研发效能嘉年华上,来自阿里云飞天研发部的工程师莫源分享了<打造云上代码交付链,CodePipeline实践分享>.他在云计算和

自动化运维之Ansible服务部署

Ansible简介 Ansible使用Python语言开发,巧妙的设计.实现了简单易用.功能强大的自动化管理工具.目前它已经广泛应用于各种规模.各个领域的企业. Ansible应用领域 Ansible的编排引擎可以出色地完成配置管理.流程控制.资源部署等工作,与其他IT自动化产品比较,Ansible提供了一种不需要安装客户端软件.管理简便.功能强大的基础架构配置.维护工具. 安装部署过程特别简单,学习曲线很平坦: 管理主机便捷,支持多台主机并行管理: 避免在被管理主机上安装客户代理,打开额外端口

自动化运维Ansible批量部署服务+shell脚本批量推送公钥

一.概述分析 由于互联网的快速发展导致产品更新换代速度逐渐加快,运维人员每天都要进行大量的维护操作,仍旧按照传统方式进行维护会使得工作效率低下.这时,部署自动化运维就可以尽可能安全.高效地完成这些工作.一般会把自动化运维工具划分为两类:一类是需要使用代理工具的,也就是基于专用的ABem程序来完成管理功能,如: Puppet.Func. Zabbix等:另外一类是不需要配置代理工具的,可以直接基于SSH服务来完成管理功能,如: Ansible. Fabric等. - 下面介绍几款功能类似的自动化运

[首发]国内某大型银行的持续集成与交付实践

一.背景 随着架构的不断演进以及微服务技术在我行的深入应用,应用部署发布的复杂性大大增加,简单的代码配置管理模式.人工的版本记录及手工部署等发布操作和管理的模式,效率低.操作风险较大,因此急需从整体上提升我行软件持续交付的能力,降低应用部署发布的操作风险.通过引入构建自动化及可视化的软件交付流水线,整合从开发.构建.测试.部署.发布.运维等多个环节,加强各职能团队协助和沟通,全面实现项目构建持续自动化管理. 二.实施方法 1. 总体架构 DevOps是一组能够帮助软件开发团队极大的提高其软件交付

屌丝程序猿的2014年终总结

"我的2014"年度征文活动火爆开启,我也写一篇来凑凑热闹吧!实际内容可能与每节的标题相差甚远,欢迎拍砖! 开篇: 时光飞逝,2014匆匆的离我而去,让我来不及留恋,让我只能忘返!做为一个比较自负的屌死程序猿,总是想做的东西太多,而真正实现的却很少,总是觉得时间不够用.时间就是金钱,或许我应该用金钱去买一些时间-- 工作回顾,各项工作的完成情况: 主要参与公司产品的需求分析.架构设计.数据库设计.技术选型.界面开发.后台代码开发.工作分配组织等工作,基本每个项目都是全程参与. 回首20

Dubbo Mesh 在闲鱼生产环境中的落地实践

本文作者至简曾在 2018 QCon 上海站以<Service Mesh 的本质.价值和应用探索>为题做了一次分享,其中谈到了 Dubbo Mesh 的整体发展思路是"借力开源.反哺开源",也讲到了 Service Mesh 在阿里巴巴的发路径将经历以下三大阶段: 撬动做透价值***实现技术换代Dubbo Mesh 在闲鱼生产环境的落地,分享的是以多语言为撬动点的阶段性总结. 文章首发于「QCon」,阿里巴巴中间件授权转载. 闲鱼场景的特点闲鱼采用的编程语言是 Dart,思

阿里巴巴大规模神龙裸金属 Kubernetes 集群运维实践

作者 | 姚捷(喽哥)阿里云容器平台集群管理高级技术专家 本文节选自<不一样的 双11 技术:阿里巴巴经济体云原生实践>一书,点击即可完成下载. 导读:值得阿里巴巴技术人骄傲的是 2019 年阿里巴巴 双11?核心系统 100% 以云原生的方式上云,完美支撑了?54.4w 峰值流量以及?2684 亿的成交量.背后承载海量交易的计算力就是来源于容器技术与神龙裸金属的完美融合. 集团上云机器资源形态 阿里巴巴 双11 采用三地五单元架构,除 2 个混部单元外,其他 3 个均是云单元.神龙机型经过