【每日一学 20261016】《程序员生存手册》——DevOps

2026-10-16 10:04:00
蓉蓉
原创
6


1.DevOps概念:沟通、协作与整合

DevOps是一个合成词,源于“Development”(开发)和“Operations”(运维)两个词,它涉及以特定的方式实践应用程序开发的任务,是软件开发、测试和运维结合的过程、方法及系统,可以简单理解为“开发运维一体化”。



DevOps的生命周期包括持续开发、持续集成、持续测试、持续反馈、持续监控、持续部署和持续运维7个阶段,始终以持续交付为核心目标,倡导多个团队建立良好的沟通和协作,以更快、更可靠地创建高质量软件。


DevOps可以视作敏捷开发的一种扩展,但更强调开发、测试和运维不同团队间的协作与沟通。敏捷开发的目标是确保开发团队及其开发流程具有快速变化的灵活性,而DevOps则重视端到端的业务解决方案,通过软件开发团队和运维技术团队之间的沟通协作来提高工作效率。


DevOps弥补了敏捷过程中开发、测试、运维在整个软件开发周期中相对分离的不足,具有加快交付速度、提高交付质量、减少团队摩擦、实现快速反馈等优势。具体表现如下。


  • 对需求变更的迅速响应。
  • 超快的交付速度,同时保证产品质量。
  • 建立完善的协作沟通渠道。
  • 快速识别代码中的错误或漏洞。
  • 灵活的安全部署,保障安全特性。

2.如何实施DevOps:不仅是工具落地

以持续交付为核心目标,DevOps将各项研发活动进行有机结合,以使整个项目过程简单化、高效化。但这并不是仅靠自动化就能落地的,大家在实际过程中,可遵循CALMS模型进行实践。

(1)敏捷开发

通过实施“短平快”的敏捷开发,将整个项目过程分解为若干迭代,可以增加发布频次,使产品的新特性以及可能存在的问题尽早得到检测、发现和响应。

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

DevOps使用微服务对系统进行更细颗粒度的拆解和管理,相对独立的模组服务被分发到不同的容器中。在这个阶段,最常用的工具包括Ansible、Puppet、Chef、Kubernetes。



为了获得最佳的配置管理和应用部署效果,这些工具可以很容易地与CI/CD工具(如Bamboo、GoCD和Jenkins)进行集成,从而有效地实现持续集成。

(3)容器化

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

(4)自动化配置

这个阶段涉及将应用部署到生产环境服务器上并确保其稳定运行,其中自动化配置和部署是关键。通过自动化手段,可以实现快速、准确的部署,并对功能、性能、稳定性和安全性等方面进行统一监控和管理。

(5)持续监控

持续监控有助于快速发现问题并做出响应,保持服务的可用性、稳定性,它还能协助追踪和确认频繁出现的问题现状、潜在威胁以及根本原因。这个阶段需要分析从内部团队和用户那里获得的反馈,并及时进行响应和跟踪处理。在这个阶段,性能和安全性问题可以得到有效处理,借助工具也能自动修复运维中的某类问题。

(6)确保团队间的持续反馈

通过不同团队、角色间的有效沟通和协作,交付件、技术和过程方面的问题得到精准的定位和高效的解决,从而带来生成过程和产品质量的整体持续提升。



DevOps是集大成者,是各种好的原则和实践的融合,基于DevOps的开发管理模式,在满足原有需求、配置等的基础上,实施了优化改良,不同团队可以根据自身的研发组织和技术特点进行大量的集成、定制和自动化开发,弥补了传统敏捷研发中端到端的缺陷和不足。


DevOps实现了开发、测试、交付、运维于一体的稳定安全的开发管理模式,覆盖了项目全生命周期的维护管理,有效满足了网络信息环境的复杂性需求。

3.DevOps衍生概念:各方与运维的结合

除了DevOps,不知道大家还有没有在一些新近的文章中见过相关的衍生概念,主要是XX+Ops的形式,今天阿道也给大家稍微介绍一下。

(1)DevSecOps

在DevOps协作框架下,安全防护需要贯穿至全生命周期的每一个环节。在这个理念下催生出了"DevSecOps"一词,即在开发和运维紧密结合的基础上又强调了安全,也就是说,必须为DevOps打下扎实的安全基础。


DevSecOps意味着从一开始就要考虑应用和基础架构的安全性;同时还要让某些安全网关实现自动化,以防DevOps工作流程变慢。要选择合适的工具来持续集成安全防护,如在集成开发环境(IDE)中集成安全防护功能。高效的DevSecOps安全防护不仅需要新工具,更需要整个公司实现DevOps文化变革,从而尽早集成安全团队的工作。

(2)GitOps

GitOps是一种实现持续交付的模型,它的核心思想是将应用系统的声明性基础架构和应用程序存放在Git的版本控制库中,主要围绕laC(Infrastructure as Code,基础设施即代码)、拉取请求、CI/CD展开。


将Git作为交付流水线的核心,每个开发人员都可以提交拉取请求,并使用Git来加速和简化Kubernetes的应用程序部署和运维任务。通过使用Git这样的简单工具,开发人员可以将注意力集中在创建新功能而非运维相关任务上。

(3)ITops

相比DevOps,ITOps更传统,它将软件开发和IT基础设施管理视为一个统一的管道,并通过改进这一管道推动其实现更高的灵活性。


ITOps的最佳实践更倾向于使用可靠的、经过高度测试的商业软件和解决方案来构建基础设施-包括硬件,因为ITOps倾向于关注物理服务器和网络。与推崇敏捷性和速度相比,ITOps更关注稳定性和长期可靠性。

(4)CloudOps

当ITOps将基础设施转移至更传统的一边时,CloudOps却恰恰相反。这种方法依旧与DevOps有着高度相似性,但在基础设施管理方面的关注点有所不同。顾名思义,CloudOps更多地利用现代服务提供商(如Amazon)提供的云原生功能,让开发人员更专注于其核心竞争力。


CloudOps主要有3个要素:分布、无状态和可伸缩性。分布式开发和部署意味着不存在单点故障。整个云环境变得更加可靠,并且可以保持正常运行时间。同时,至少在工作流的某些部分,无状态化的能力对成本效率来说是一个巨大的优势。



来源:《程序员生存手册》
发表评论
通过审核后显示您的意见