ThoughtWorks高级质量咨询师秦五一:持续集成之腐化与涅槃重生服务器

来源:互联网 / 作者:SKY / 2018-06-28 18:08 / 点击:
DevOps更加重视从人的角度来看软件交付,通常聚焦于组织文化转型来提高不同团队之间的协作效率,例如演讲中的团队文化改革,持续改进意识等。

【Chinaz.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工具链上,持续集成工具几乎是标配。

ThoughtWorks高级质量咨询师秦五一:持续集成之腐化与涅槃重生

秦五一强调,一次正确的构建过程至少包含源码控制服务器、CI服务器和本地开发软件,且必须经过以下七个步骤:

1)将以集成的源码复制一份到本地;

2)修改产品代码和添加修改自动化测试;

3)本地启动一次自动化构建;

4)构建成功后,把别人的修改更新到我的工作拷贝中;

5)再重新做构建;

6)把修改提交到源码仓库;

7)在集成计算机上并基于主线的代码再做一次构建。

除了以上七个步骤之后,持续集成还必须遵守以下七项原则:

1)经常提交代码;

2)不要提交无法构建的代码;

3)立即修复无法集成的构建;

4)编写自动化测试;

5)必须通过所有测试和审查;

6)执行私有构建;

7)避免迁出无法构建的代码。

要经常学习持续集成工具背后的思想理念

如今,随便在网上搜一下DevOps工具,就会发现跟软件开发,部署相关的工具,几乎都在自己的名字后面标上了大大DevOps标签。甚至于,很多企业还专门组建了DevOps Team,并利用Jenkins、ansible、Dynatrace等等DevOps工具,维护CI、云、监控系统等。

ThoughtWorks高级质量咨询师秦五一:持续集成之腐化与涅槃重生

秦五一表示,任何工具背后都有一套思想在支撑这个工具的价值,DevOps也不例外。如果不能经常学习工具背后的思想理念,线上监控与用户行为分析,来形成反馈回路,仍然无法用好持续集成工具。

ThoughtWorks的持续集成工具叫做GoCD,在github上已经开源,官网叫做持续交付工具。因为GoCD在开发之初就很好的考虑到了方便部署到线上环境的问题,完全从pipeline as code的角度设计,因此其具备两大特色:

一是复杂工作流的编排。例如在某著名通信设备商的项目上,客户有着非常复杂的工作流,大量并行任务成功后,再触发一个新的stage。在这个过程中,GoCD是完全可视的,给用户带来了非常友好的体验。

二是所有的Job都原生支持pipeline as code方式编写,为更好的实现高度自动化交付提供了很好的保障。

秦五一在演讲中分享到,虽然用了工具只是解决了当前一时的问题,而我们在软件交付中遇到的问题总是源源不断。因此,为了更好的利用好工具,就应该经常学习工具背后的思想理念,只有将工具背后的思想理念吃透、学精,才能真正的用好持续集成工具。

阅读延展

1
3