收藏!如何有效实施DevOps?

陈哥聊测试
• 阅读 4

当今IT行业的竞争日益激烈,各家公司都在寻找优化软件研发过程的方法,因为交付比对手更具竞争力的产品已经越发成为一件成本高昂的事情。这也是DevOps发挥作用的地方,因为它可以在工程管理的各个方面提供帮助。

瀑布开发模型已被广泛使用多年,但它的开发、测试和运维在整个生命周期中是相对分离的。而今,随着敏捷方法的不断发展,持续集成和DevOps在某种程度上就变得越发重要。

实施原则

CAMS模型很好地阐述了DevOps的基本原则,其核心目标是实现过程自动化,以提高生产效率;通过持续地度量、反馈和改进,以确保快速交付的质量。

让我们来进一步了解CAMS模型: 收藏!如何有效实施DevOps?

  • 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基础设施管理的一个重要原因。 收藏!如何有效实施DevOps?

部署阶段

这个阶段,涉及应用在生产环境服务器上部署和运行。经过验证的软件,最终将被部署到生产环境中,服务于终端用户。自动化的配置和部署是这一阶段的关键活动,它执行快速、准确的部署,并建立功能、性能、稳定和安全性等方面的统一化监控和管理。

任何更新必须以不干扰已部署且运作良好的功能的方式进行发布,遵循“快速失败”的方法,新部署的特性或变更,将及时地接受用户的使用和验证。这个阶段可用于部署的一些工具有Ansible、Chef、Puppet等。

持续监测

使用监测工具,让掌控生产服务质量状态变得更为简单和快捷。这个阶段也需要分析从内部团队和用户那里获得的反馈,并及时作出响应和跟踪处理。持续监测有助于对问题做出快速发现和响应,保持服务的可用性、稳定性,它还能协助我们追踪和确认频繁出现的问题的最新演进、潜在威胁和根本原因。 在这个阶段,性能和安全性问题可以得到有效捕获和处理,借助一些工具也能做到自动修复运维中的某类问题。

相比开发团队,运维团队在这一阶段的参与程度更高。这个阶段的主要工作在于监控用户活动和系统响应的有效性、及时性,检查系统是否有异常行为,以及跟踪问题引发风险的进展。此时类似Nagios、Prometheus、Zabbix的自动化工具将发挥重要作用。

确保团队间的持续反馈

通过不同团队、角色间的有效沟通和协作,交付件、技术和过程方面的问题得到精准的定位和高效的解决,从而带来生成过程和产品质量的整体持续提升。这也需要各个团队与公司整体的DevOps目标保持高度的一致。

如在禅道项目管理软件中,明确地将产品、项目、测试三者概念区分开,产品人员、开发团队、测试人员,三者分立,互相配合,又互相制约,通过需求、任务、Bug来进行交相互动,任务直接指派到所属团队及个人,这种团队内的及时沟通反馈有助于效率的提高。 收藏!如何有效实施DevOps?

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

结论

综上所述,DevOps的实践效果有赖于上述各项活动的有效开展。引入并推广DevOps需要花费大量资源和成本,但一旦成功实施,便将受益匪浅。根据最近一项对2.5万多名专业技术人员的调查,大多数成功实施DevOps的公司,在保持质量的前提下,持续迭代和发布的效率往往得到了指数级的提高。

尽管DevOps实施起来并不总是那么容易,但有了规范的流程和良好的实践,就能够显著提高生产率、降低成本、提高交付质量。据此,我们也可以预见,DevOps在未来将会被越来越广泛地应用。

参考文献:Mitesh Patel .How to Do DevOps Effectively? [OL].(2020-05-08)

点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
3年前
90%的开发都没搞懂的CI和CD!
据IDC统计,2017年,DevOps的全球软件市场已达到约39亿美元的水平,预计到2022年市场将达到80亿美元左右!在敏捷软件开发环境中,工作模型和操作需要对公司不断变化的需求具有超级灵活的能力。DevOps——一种工具和实践的结合,有助于软件开发与IT运维并携手共进。这种跨功能的工作模式旨在最小化系统开发生命周期的持续时间,并提供持续的部署
Stella981 Stella981
3年前
DevOps平台支撑企业IT运营
一、普元DevOps平台建设历程普元从2008年开始研发持续集成平台(CIP)、自动化测试平台(UTP),2009年内部的所有产品都实现了持续集成、自动化测试、自动化部署。随着DevOps理念的兴起,企业的数字化转型的需求也愈发强烈,于是开始着手研发DevOps平台,并在这个过程中不断探索微服务、DevOps、容器云、Cha
Stella981 Stella981
3年前
DevOps工具链
Devops工具链DevOps实际是一种文化上的变迁,代表了开发、运维、测试等环节之间的协作,因此DevOps工具是非常多种多样的,甚至可以由多种工具组成一个完整的DevOps工具链。此类工具可以应用于一种或多种类别,并可体现出软件开发和交付过程的不同阶段:编码:代码开发和审阅,版本控制工具、代码合并工具构建:持续集成工具
Stella981 Stella981
3年前
DOIS 2019 DevOps国际峰会北京站来袭~
DevOps国际峰会是国内唯一的国际性DevOps技术峰会,由OSCAR 联盟指导、DevOps时代社区与高效运维社区联合主办,共邀全球80余名顶级专家畅谈DevOps体系与方法、过程与实践、工具与技术。会议召开时间:2019070508:00至2019070618:00结束会议召开地点:北京主办单位:DevOps
Stella981 Stella981
3年前
DevOps运维系统:监控管理
ITIL4的监控管理在DevOps风行的当下,人们越来越关注自动化运维。其中,监控预告警、监控自愈越发流行起来。在《DevOps实践指南》和《持续交付发布可靠软件的系统方法》两本书中(DevOps的教科书级别),都有涉及讲解监控管理和实施。其实,监控早不是什么新概念,运维界无论在理论还是工具中,一直在不断探索。监控管理虽然在I
Stella981 Stella981
3年前
DevOps世界中的软件开发
!(https://oscimg.oschina.net/oscnet/f40e68cbfe8148deb00f040b4e917a0a.jpg)在整个软件开发过程中,开发人员通常需要花费大量时间来修复错误和漏洞,以便一切按计划进行交付。但是,通过DevOps实践,可以更轻松地管理和保护这些问题。这是由于以下事实:使用DevOps实践的软
Stella981 Stella981
3年前
Devops与敏捷二者能否结合?
当前软件行业的趋势倾向于使应用程序开发和部署成为业务运营的重要组成部分。这些公司开始专注于实现像DevOps解决方案这样的方法,这有助于缩短产品开发时间。使用DevOps进行开发减少了交付软件所需的阶段。软件交付时间短允许用户尽早部署软件,并通过更多的反馈为业务增加价值。DevOps与敏捷的结合DevOps的实施主要集中在软
京东云开发者 京东云开发者
10个月前
【行云流水线】满足你对工作流编排的一切幻想~skr
流水线模型众所周知,DevOps流水线(DevOpspipeline)的本质是实现自动化工作流程,用于支持软件开发、测试和部署的连续集成、交付和部署(CI/CD)实践。它是DevOps方法论的核心组成部分,旨在加速软件交付、提高质量和实现持续改进。流水线的
敏捷开发 敏捷开发
7个月前
软件开发流变史:从瀑布开发到敏捷开发再到DevOps
从瀑布开发到敏捷开发再到DevOps,现如今软件开发以及项目管理过程的多种方法是如何演变的?
京东云开发者 京东云开发者
3个月前
【行云流水线】满足你对工作流编排的一切幻想~skr
流水线模型众所周知,DevOps流水线(DevOpspipeline)的本质是实现自动化工作流程,用于支持软件开发、测试和部署的连续集成、交付和部署(CI/CD)实践。它是DevOps方法论的核心组成部分,旨在加速软件交付、提高质量和实现持续改进。流水线的