当今IT行业的竞争日益激烈,各家公司都在寻找优化软件研发过程的方法,因为交付比对手更具竞争力的产品已经越发成为一件成本高昂的事情。这也是DevOps发挥作用的地方,因为它可以在工程管理的各个方面提供帮助。
瀑布开发模型已被广泛使用多年,但它的开发、测试和运维在整个生命周期中是相对分离的。而今,随着敏捷方法的不断发展,持续集成和DevOps在某种程度上就变得越发重要。

实施原则

CAMS模型很好地阐述了DevOps的基本原则,其核心目标是实现过程自动化,以提高生产效率;通过持续地度量、反馈和改进,以确保快速交付的质量。
让我们来进一步了解CAMS模型:
Culture(文化):DevOps提倡把沟通、技术、方法和工具紧密地联系在一起;
Automation(自动化):通过自动化来提高各环节活动的工作效率;
Measurement(度量):需要及时对关键过程和质量指标进行度量和反馈;
Sharing Feedback(反馈共享):通过共享反馈和建议,以获得持续改进,应用最佳实践来促进组织发展。

实施步骤

DevOps生命周期包括持续开发、持续集成、持续测试、持续反馈、持续监测、持续部署和持续运维。以持续交付为核心目标,DevOps将各项研发活动进行有机结合,以简单化、高效化整个项目过程。

采用敏捷方法

通过实施短平快的敏捷研发过程,将整个项目过程分解为若干Sprint迭代,可以增加发布频次,使产品的新特性、以及可能存在的问题得到尽早地检测、发现和响应。提高生产率和交付质量,以期从有限的研发投入中,获得更大的收益。DevOps生命周期包括持续开发、持续集成、持续测试、持续反馈、持续监测、持续部署和持续运维。以持续交付为核心目标,DevOps将各项研发活动进行有机结合,以简单化、高效化整个项目过程。

集成CI/CD工具实现基础设施自动化

DevOps使用微服务对系统进行更细粒度的拆解和管理,相对独立的模组服务被分发到不同的容器中。在这个阶段,最常用的工具包括Ansible、Puppet、Chef、Kubernetes。为了获得最佳的配置管理和应用部署效果,这些工具可以很容易地与CI/CD工具(如Bamboo、GoCD和Jenkins)进行集成,从而有效地实现持续集成。

容器化

Docker是著名的容器引擎,通过将相对独立的业务模组分解到不同的容器中,提供尽量松耦合的无状态服务。通过容器,可以无缝、高效地将已验证的软件从测试服务器迁移、部署到生产环境中。同整个IT基础设施相隔离的容器具备更好的可迁移性和可控性,这也是容器化作为DevOps基础设施管理的一个重要原因。

部署阶段

这个阶段,涉及应用在生产环境服务器上部署和运行。经过验证的软件,最终将被部署到生产环境中,服务于终端用户。自动化的配置和部署是这一阶段的关键活动,它执行快速、准确的部署,并建立功能、性能、稳定和安全性等方面的统一化监控和管理。
任何更新必须以不干扰已部署且运作良好的功能的方式进行发布,遵循“快速失败”的方法,新部署的特性或变更,将及时地接受用户的使用和验证。这个阶段可用于部署的一些工具有Ansible、Chef、Puppet等。

持续监测

使用监测工具,让掌控生产服务质量状态变得更为简单和快捷。这个阶段也需要分析从内部团队和用户那里获得的反馈,并及时作出响应和跟踪处理。持续监测有助于对问题做出快速发现和响应,保持服务的可用性、稳定性,它还能协助我们追踪和确认频繁出现的问题的最新演进、潜在威胁和根本原因。在这个阶段,性能和安全性问题可以得到有效捕获和处理,借助一些工具也能做到自动修复运维中的某类问题。
相比开发团队,运维团队在这一阶段的参与程度更高。这个阶段的主要工作在于监控用户活动和系统响应的有效性、及时性,检查系统是否有异常行为,以及跟踪问题引发风险的进展。此时类似Nagios、Prometheus、Zabbix的自动化工具将发挥重要作用。

确保团队间的持续反馈

通过不同团队、角色间的有效沟通和协作,交付件、技术和过程方面的问题得到精准的定位和高效的解决,从而带来生成过程和产品质量的整体持续提升。这也需要各个团队与公司整体的DevOps目标保持高度的一致。
如在禅道项目管理软件中,明确地将产品、项目、测试三者概念区分开,产品人员、开发团队、测试人员,三者分立,互相配合,又互相制约,通过需求、任务、Bug来进行交相互动,任务直接指派到所属团队及个人,这种团队内的及时沟通反馈有助于效率的提高。

禅道自主研发的自动化测试框架(禅道ZTF)与禅道无缝集成,可将禅道用例和自动化测试脚本一一绑定,执行的结果能提交到禅道中作为测试结果,执行失败的脚本也可以自动创建Bug。自动化测试框架实现了与Jenkins持续集成功能打通。用户发起任务后,通过ZTF自动执行测试脚本,把单元测试的结果回传给禅道,二者合作打通了持续集成闭环。整个团队内部实现持续反馈,使流程更灵活,调试过程更简化,更是降低了Bug修复的成本。

结论

综上所述,DevOps的实践效果有赖于上述各项活动的有效开展。引入并推广DevOps需要花费大量资源和成本,但一旦成功实施,便将受益匪浅。根据最近一项对2.5万多名专业技术人员的调查,大多数成功实施DevOps的公司,在保持质量的前提下,持续迭代和发布的效率往往得到了指数级的提高。
尽管DevOps实施起来并不总是那么容易,但有了规范的流程和良好的实践,就能够显著提高生产率、降低成本、提高交付质量。据此,我们也可以预见,DevOps在未来将会被越来越广泛地应用。

参考文献:
Mitesh Patel .How to Do DevOps Effectively? [OL].(2020-05-08)
https://dzone.com/articles/how-to-do-devops-effectively

收藏!如何有效实施devops?的更多相关文章

  1. Atlassian如何实施DevOps

    DevOps是推动开发和运维团队之间沟通和协作的手段.它不是一个工具或产品.相反,其成功的首要因素就是文化.目的是更快的创新和更好的客户体验. "2015年DevOps状态报告"调 ...

  2. 企业实施DevOPS的七大挑战(转)

    从别人的演讲视频中摘抄,做笔记. 什么是DevOPS 如何衡量DevOPS 企业实施DevOPS的七大挑战 自动化测试投入不足 单元测试 API测试 界面测试 功能测试 高度集中的IT服务 标准化 脚 ...

  3. 你所在的公司是如何实施DEVOPS的?

    工欲善其事,必先利其器,现在大家在DevOps领域最关注的还是在工具层面.下面是我跟这么多公司接触下来,大家使用比较多的工具:1.监控工具比较老牌的就是Zabbix,Nagios,用Zabbix的感觉 ...

  4. 如何实施DevOps

    对于长期在孤立的架构下工作的组织来说,转移到协作式DevOps系统似乎是难以成功的.为了进一步提高效率,必须改变观念,并进行团队文化改变.例如:许多人认为只有自动化工具才能解决DevOps,其实这是不 ...

  5. DevOps:从理念到实施

    转载自:http://os.51cto.com/art/201404/436794.htm DevOps这个新理念的出现,是为了应对IT环境中普遍面临的一些挑战.开发团队要求的不断满足新的客户需求,并 ...

  6. DevOps实施的三种IT障碍

    [TechTarget中国原创] 现今DevOps可谓是红遍半边天,但正因为它是新的东西,企业也在不停的犯同样的错误.从这些挑战中学习,让你的DevOps项目取得成功. DevOps正在以一种更有效的 ...

  7. 切忌一步到位,谈谈DevOps实施落地

    2020年6月19日,由云计算开源产业联盟指导,高效运维社区和 DevOps 时代社区联合举办的GNSEC 2020线上峰会圆满举办.BoCloud博云参加了本次峰会并分享了博云帮助客户实施DevOp ...

  8. [转帖]DevOps/TestOps概念

    发现收藏不好用..还是转吧.. https://www.cnblogs.com/fnng/p/8232410.html DevOps/TestOps概念 2018-01-07 22:02 by 虫师, ...

  9. 大话devops

    一.敏捷的局限性的促使devops诞生 敏捷的局限性:敏捷只注重开发阶段的敏捷,未涉及到整个产品生命周期流程其他环节导致采用敏捷开发流程后效果不明显. devops成为企业数字化转型的助推器,扮演基础 ...

随机推荐

  1. spring中bean的常用属性

    一.scop scope用来配置bean对象是否是单例模式.单例模式是java的二十三种设置模式之一,指在这个项目运行过程中一 个类的对象只会实例化一次.一般,工厂类的对象都是单例模式.非单例模式叫多 ...

  2. JPA与hibernate-------JPA

    ORM概述 ORM(Object-Relational Mapping) 表示对象关系映射.在面向对象的软件开发中,通过ORM,就可以把对象映射到关系型数据库中.只要有一套程序能够做到建立对象与数据库 ...

  3. 【Spark】这一篇或许能让你大概了解如何通过JavaAPI实现DataFrame的相关操作

    文章目录 需求概述 步骤 一.创建Maven工程并导包 二.选用第一种方法:利用反射机制配合样例类构建DataFrame 开发代码 选用第二种方法:通过StrucType配合Row构建DataFram ...

  4. 深度剖析西门子PLC的开放式TCP通信

    对于自控或电气工程师来说,西门子PLC是每个人都非常熟悉的一款PLC品牌:而对于上位机开发工程师来说,Socket通信或TCP/IP协议也是必须要掌握的一种通信方式.刚好手头有一款西门子的200Sma ...

  5. JAVA知识总结(二):封装

    时隔近一年,我突然想起来这个文章还没有发完,所以就继续开始写.也不知道自己上次写到哪里了,不管了这里从面向对象的三个特性说起. 类和对象 在这之前,我们先了解什么是对象,已经什么是面向对象?对象:万物 ...

  6. R的安装以及包安装

        今天看论文,需要用到R语言的库,于是又折腾了半天..     其实并没有什么太大的问题,只是在第三方包的下载方面还有python中使用R方面遇到了问题: 第三方包的导入      其实在网上有 ...

  7. Linux 下三种提高工作效率的文件处理技巧

    Linux 下三种提高工作效率的文件处理技巧 在 Linux 下工作,打交道最多的就是文件了,毕竟 Linux 下工作一切皆文件嘛.Linux 也为大家提供了多种用于处理文件的命令,合理使用这些命令可 ...

  8. Lodash工具库中cloneDeep深拷贝的使用

    在vue向数据库提交数据的过程中,可能需要处理某些数据,比如有以下要求:传递的参数必须是以逗号分隔的分类列表 但此时如果vue组件中的数据却是数组形式的这个时候需要用到数组的 join 方法对数据进行 ...

  9. wordpress评论回复邮件通知功能

    安装插件登录后台——点击“插件”——“安装插件”——按关键字搜索“Comment Reply Notification”——点击“现在安装”安装好后启用插件.如下图所示: 配置Comment Repl ...

  10. PSR-0到PSR-4编程规范

    PHP-FIG 在说啥是PSR-[0-4]规范的之前,我觉得我们有必要说下它的发明者和规范者:PHP-FIG,它的网站是:www.php-fig.org.就是这个联盟组织发明和创造了PSR-[0-4] ...