当今IT行业的竞争日益激烈,各家公司都在寻找优化软件研发过程的方法,由于交付比对手更具竞争力的产品已经愈加成为一件成本高昂的事情。这也是DevOps发挥做用的地方,由于它能够在工程管理的各个方面提供帮助。
瀑布开发模型已被普遍使用多年,但它的开发、测试和运维在整个生命周期中是相对分离的。而今,随着敏捷方法的不断发展,持续集成和DevOps在某种程度上就变得愈加重要。ios
CAMS模型很好地阐述了DevOps的基本原则,其核心目标是实现过程自动化,以提升生产效率;经过持续地度量、反馈和改进,以确保快速交付的质量。
让咱们来进一步了解CAMS模型:
Culture(文化):DevOps提倡把沟通、技术、方法和工具紧密地联系在一块儿;
Automation(自动化):经过自动化来提升各环节活动的工做效率;
Measurement(度量):须要及时对关键过程和质量指标进行度量和反馈;
Sharing Feedback(反馈共享):经过共享反馈和建议,以得到持续改进,应用最佳实践来促进组织发展。安全
DevOps生命周期包括持续开发、持续集成、持续测试、持续反馈、持续监测、持续部署和持续运维。以持续交付为核心目标,DevOps将各项研发活动进行有机结合,以简单化、高效化整个项目过程。服务器
经过实施短平快的敏捷研发过程,将整个项目过程分解为若干Sprint迭代,能够增长发布频次,使产品的新特性、以及可能存在的问题获得尽早地检测、发现和响应。提升生产率和交付质量,以期从有限的研发投入中,得到更大的收益。DevOps生命周期包括持续开发、持续集成、持续测试、持续反馈、持续监测、持续部署和持续运维。以持续交付为核心目标,DevOps将各项研发活动进行有机结合,以简单化、高效化整个项目过程。框架
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/ho...