ThoughtWorks高级质量咨询师秦五一:持续集成之腐化与涅槃重生
【大咖・来了 第7期】10月24日晚8点观看《智能导购对话机器人实践》
【51CTO.com原创稿件】2018年5月18-19日,由51CTO主办的全球软件与运维技术峰会在北京召开。此次峰会围绕人工智能、大数据、物联网、区块链等12大核心热点,汇聚海内外60位一线专家,是一场高端的技术盛宴,也是***IT技术人才学习和人脉拓展不容错过的平台。
在“DevOps转型之路”分会场,ThoughtWorks高级质量咨询师秦五一带来了《持续集成腐化与涅��重生》的主题分享。会后,51CTO记者根据秦五一在WOT2018全球软件与运维技术峰会的演讲内容进行了整理。
持续集成就是每天都要集成
持续集成是1991年由IBM院士 Grady Booch在他的Booch方法中提出了Continuous Integration这个词之后,被极限编程XP采纳并广泛推广得来的。通常大家听到或提到的持续集成,也就是CI这个词,实际上指的是持续集成工具,例如CI Tools、Jenkins、 TeamCity、GoCD等,是相对狭义的概念。
ThoughtWorks***科学家Martin Fowler指出,持续集成是让团队成员尽早、尽可能频繁的集成大家手头的工作,至少每天要集成一次甚至更多,及早发现集成问题,让团队更快更好的开发出高质量的软件。
秦五一认为,持续集成的本质是一套软件开发的实践。虽然在多年的发展中持续集成的含义在不断演变,从早期仅是集成开发的代码,到目前将单元测试、集成测试甚至端到端测试都包含进来,但其最终目的是为了能够发现系统间的集成问题,加快软件的上线时间,减少开发的周期。因此,持续集成的核心理念是每天至少集成一次,尽早发现问题,尽快解决问题。
秦五一在演讲中提到,虽然团队中的每个人每天都要至少集成一次,且大部分都是通过自动化进行构建和测试,看起来很***。但是,即便如此,仍然会发现一些问题。
DevOps与CI/CD的不同之处
与持续集成相比,DevOps要晚很多,但近年来却非常火。秦五一表示,DevOps之所以非常火,是因为它从根本上指出了软件从需求到上线让团队痛苦的根源,形成了Dev、QA、Ops紧密结合在一起的团队文化。DevOps中包含的各项实践已经被国内外著名互联网科技巨头证实,能够有效提高企业对于高速变化市场的响应速度。例如,10年之前我们的软件需要几个月才能上线并为客户带来价值,如今不少企业已经可以轻松做到2周上线一次。在互联网企业当中,Web应用甚至可以做到每天随时上线。
秦五一表示,目前仍然有不少人心中的DevOps是狭义的DevOps工具链,比如持续集成工具(例如Jenkins)、测试工具、监控工具等,因为其与持续集成/持续交付目标相似,都是期望缩短从需求到真正交付的周期,从而实现更快且更可靠的软件发布。实际上,DevOps更加重视从人的角度来看软件交付,通常聚焦于组织文化转型来提高不同团队之间的协作效率,例如演讲中的团队文化改革,持续改进意识等。而CI/CD更加重视从技术的角度来看软件交付,通过技术手段来提升交付效率,例如自动化构建,测试,部署的流程。虽然目标一致,但是并不是一个同一个层面的概念。通常而言,我们认为CI/CD是实现DevOps的重要技术手段之一,但是实现了CI/CD并不意味着实现了DevOps,就像演讲中讲到的案例,虽然团队有完善的CI/CD工具链,但是最终并没有提升交付的速度与交付的质量。
构建持续集成的步骤与原则
秦五一认为,在DevOps的流程中,持续集成是非常重要的实践,它为DevOps提供了技术上的支持。因此,在DevOps工具链上,持续集成工具几乎是标配。
秦五一强调,一次正确的构建过程至少包含源码控制服务器、CI服务器和本地开发软件,且必须经过以下七个步骤:
1)将以集成的源码复制一份到本地;
2)修改产品代码和添加修改自动化测试;
3)本地启动一次自动化构建;
4)构建成功后,把别人的修改更新到我的工作拷贝中;
5)再重新做构建;
6)把修改提交到源码仓库;
7)在集成计算机上并基于主线的代码再做一次构建。
除了以上七个步骤之后,持续集成还必须遵守以下七项原则:
1)经常提交代码;
2)不要提交无法构建的代码;
3)立即修复无法集成的构建;
4)编写自动化测试;
5)必须通过所有测试和审查;
6)执行私有构建;
7)避免迁出无法构建的代码。
要经常学习持续集成工具背后的思想理念
如今,随便在网上搜一下DevOps工具,就会发现跟软件开发,部署相关的工具,几乎都在自己的名字后面标上了大大DevOps标签。甚至于,很多企业还专门组建了DevOps Team,并利用Jenkins、ansible、Dynatrace等等DevOps工具,维护CI、云、监控系统等。
秦五一表示,任何工具背后都有一套思想在支撑这个工具的价值,DevOps也不例外。如果不能经常学习工具背后的思想理念,线上监控与用户行为分析,来形成反馈回路,仍然无法用好持续集成工具。
ThoughtWorks的持续集成工具叫做GoCD,在github上已经开源,官网叫做持续交付工具。因为GoCD在开发之初就很好的考虑到了方便部署到线上环境的问题,完全从pipeline as code的角度设计,因此其具备两大特色:
一是复杂工作流的编排。例如在某著名通信设备商的项目上,客户有着非常复杂的工作流,大量并行任务成功后,再触发一个新的stage。在这个过程中,GoCD是完全可视的,给用户带来了非常友好的体验。
二是所有的Job都原生支持pipeline as code方式编写,为更好的实现高度自动化交付提供了很好的保障。
秦五一在演讲中分享到,虽然用了工具只是解决了当前一时的问题,而我们在软件交付中遇到的问题总是源源不断。因此,为了更好的利用好工具,就应该经常学习工具背后的思想理念,只有将工具背后的思想理念吃透、学精,才能真正的用好持续集成工具。
【51CTO原创稿件,合作站点转载请注明原文作者和出处为51CTO.com】
点赞 0
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
旖美信息技术前端开发经理陈国兴:抽象语法树与Javascript
【大咖・来了 第7期】10月24日晚8点观看《智能导购对话机器人实践》 【51CTO.com原创稿件】2018年5月18-19日,由51CTO主办的全球软件与运维技术峰会在北京召开。此次峰会围绕人工智能、大数据、物联网、区块链等12大核心热点,汇聚海内外60位一线专家,是一场高端的技术盛宴,也是***IT技术人才学习和人脉拓展不容错过的平台。 在“前端工程实践”分会场,旖美信息技术前端开发经理陈国兴带来了《抽象语法树与JavaScript》的主题分享。会后,51CTO记者根据陈国兴在WOT2018全球软件与运维技术峰会的演讲内容进行了整理。 何为抽象语法树 抽象语法树是程序代码语法的抽象表示,以树状的形式表现编程语言的语法结构。这棵树从树根开始,然后一直往上延伸,树的每一个节点代表一个语法结构。在这棵树中,有很多种类型的节点,例如函数、加减表达式等。所以,开发者可以操作某个节点,以完成一些工作。 陈国兴表示,要操作抽象语法树,应该要具备以下两个基本要素:首先是工具。常用的工具包括Astexplorer、Recast、Jscodeshift、Acorn、Esprima、Escodegen...
- 下一篇
2018上半年回顾:服务器硬件大战
【大咖・来了 第7期】10月24日晚8点观看《智能导购对话机器人实践》 服务器过去半年间发生了四大变化,使传统数据中心在管理方式和智能运维方面发生改变;超融合设备在私有云领域成为流行,HPC高性能计算与机器学习相互成就,服务器品牌之间的关系也发生了微妙变化。 开源改变数据中心管理 传统企业IT系统中最不智能的部分,需要人工处理很多数据,甚至机器宕机都要人工取数据中心现场检查,更不能实现提前预知数据中心可能会出现的问题。 实际上,人们对数据中心的改造一直在继续,但却没有突破性的改变。早在2011年,硬件的世界还没有那么开放的时候,Fcacebook作为社交媒体巨头,数据量成几何倍数增长,Facebook对于数据中心的需求越来越大,Facebook乔纳森?海利格(Jonathan Heiliger)***向扎尔伯格提出了OCP(开放计算项目)的主张。 开源改变了数据中心硬件的结构,也改变了软件和运维的模式。数据中心Imanager、Easy数据中心IM、Ansible Tower、Puppet Enterprise等都是开源的数据中心自动化管理软件。这些开源软件和DevOps改变了数据中心...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7安装Docker,走上虚拟化容器引擎之路
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7设置SWAP分区,小内存服务器的救世主
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库