购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

5.1 从CI/CD到DevOps的创新思路

随着人类科技的不断发展,个人计算机和互联网的相继问世,我们已经进入了全民拥抱信息化的时代。现在,没有一家企业或个人可以离开信息技术,各家企业都把计算机作为业务辅助工具,上云及数字化转型成为企业信息化的新目标,以此提升生产效率,降低运营成本。这些转变都离不开软件,软件从零到最终交付,主要包括设计、编码、构建、测试、发布、部署、运维等阶段。

在计算机软件技术发展的初期,由于软件规模不大,程序都比较简单,一个工程师或几个工程师之间的简单协作,就可以完成软件工程的所有阶段,他们既可以做开发,又可以做测试和部署。但是,随着软件技术的日益发展,软件规模逐渐扩大,且复杂度不断攀升,一个人或一个小团队已然无法胜任上述的工作。因此,软件工程师要根据工作重心进行精细化分工,主要分为开发、测试和部署三大职责:首先由软件开发工程师编写代码,然后交给软件测试工程师进行各种测试,最后将发行版交给软件运维工程师部署和维护。这就是我们俗称的瀑布模型,即在上一个阶段的工作完成之后,再进行下一个阶段的工作。

但是,软件项目不可能是单向发展的。有的时候,客户会有需求变化,对项目的功能进展也会有反馈,客户反馈会直接影响软件项目的后续发展,而且软件产品也会有Bug,需要改进功能和提升性能等。随着时间的推移,一方面客户对软件的需求不断增加;另一方面周期却越来越短,项目交付日期临近。在这种情况下,瀑布模型逐渐变得无法满足需求。这时,敏捷开发模型应运而生。敏捷开发模型是一种能应对快速变化需求的软件开发能力模型。简单来说,就是把大项目分解成许多小项目,把大里程碑点变成许多小里程碑点。

敏捷开发大幅提高了软件研发团队的工作效率,加快了版本的更新迭代速度。它可以帮助研发团队更快地发现问题,更快地将软件产品交付到客户手中,也可以更快地得到客户的反馈,进而更快地响应相关变化。敏捷开发每次带来的版本变化比较小,带来的项目风险会更小。但是,敏捷开发的效果仅限于软件开发环节,即只影响开发人员和测试人员。在企业上云的大背景下,对于运维人员,就需要DevOps。

DevOps 其实是开发(Development)和运维(Operation)两个词的英文组合。它是一组过程、方法与系统的统称,用于促进软件开发、技术运维和质量保障部门之间的沟通、协作与整合。从目标来看,DevOps就是让开发人员和运维人员更好地沟通合作,通过自动化流程使软件生产的整体过程更加快捷和可靠。在执行DevOps时,有几方面需要考虑:首先是思维的转变,如开发人员一般认为“我们都没错,要错也是客户用错了”,运维人员一般认为“稳定性压倒一切”“不做就不会错”。如何消除他们互相推诿、排斥变化的思维是一门艺术,而DevOps不仅是对组织架构的变革,更是对企业文化和思想观念的变革。其次要根据 DevOps 思想重新梳理全流程的规范和标准。例如,在 DevOps 的流程下,运维人员要在项目开发期间就介入到开发过程中,了解开发人员使用的系统架构和技术路线,从而制定合适的运维方案。而开发人员也要在运维的初期参与到系统部署中,并提供系统部署的优化建议。

因此,DevOps不仅是一种软件方法、一种工具,更是一门艺术、一种哲学思想。伴随着DevOps出现的还有CI/CD的概念。

CI/CD 是一个面向研发团队和运维团队的解决方案,主要针对集成新代码时引发的问题。CI/CD 可以让持续自动化和持续监控贯穿于软件应用的整个生命周期,即从开发、集成和测试阶段,延伸到交付和部署阶段。

那么,为什么说这种软件开发思路的转变是云计算技术催生的?除上述我们提到的运维人员介入 DevOps 外,我们再以云原生技术为例进行阐述,CNCF(Cloud Native Computing Foundation,云原生计算基金会)对云原生技术的解释是,云原生要用一个开源软件栈解决三个问题:第一个是把软件应用程序切分为多个微服务;第二个是把每个部分打包成容器;第三个是动态地编排这些容器以优化系统资源。因此,把一个单体软件应用解耦成许多微服务,并让这些微服务在各自的容器中高效协作,是云原生的重要内容和发展方向。

过去,我们的应用程序基本上都是单体式的,所有的业务流程逻辑、存储读写、网络通信、数据库访问及用户界面操作都被放到一个可执行的文件中,这是在没有进入 DevOps 时代时,我们进行软件开发和运维的思维模式。现在,微服务架构更为盛行,所谓微服务,就是将原来黑盒化的一个整体软件应用进行拆分和解耦,将一个提供多种服务的整体拆成多个提供不同服务的个体。

在微服务架构下,不同的软件工程师可以对各自负责的模块进行处理。例如,不同人员负责不同服务模块的开发,其他人员则进行测试、部署和运维,周而复始地进行迭代。微服务架构的出现使得 DevOps思想更加现实,更加便利。云计算中的虚拟机和容器,为每个微服务创建了不同的运行环境,也使得运行的系统之间可以相互隔离。这种服务与环境打包的方式,也加快了软件应用和服务的部署速度。

毫不夸张地说,云计算技术为 DevOps 创造了很好的前提条件,改变了现代软件的开发和交付模式,提供了一种创新思路。进一步来说,包括云计算软件开发本身,也都被这种软件开发和交付模式深刻地影响着。 6xFe/xhZ3LM5bTOmRPKCVbzZmziEgjTQRUTmkm1ZjFg5+FftLonARZblEprfFgjt

点击中间区域
呼出菜单
上一章
目录
下一章
×