什么是 DevOps?
DevOps 是一套将软件开发与 IT 运维相结合的实践方法,旨在更快、更可靠且更稳定地交付软件解决方案。它的核心在于营造协作文化、推动自动化、优化平台设计,并建立持续反馈机制,助力更快地交付优质的服务,并创造更大的商业价值。
DevOps 可加速从开发到生产环境部署的整个流程,使每个想法(比如新增的软件功能、功能增强请求或者 bug 修复)能更快地推向市场,为用户持续创造价值。这种方式需要开发团队和运维团队密切沟通,并且团队成员在协作时彼此体谅,从而践行“谁构建,谁运维”这一理念。此外,DevOps 还要能够方便扩展和灵活置备。团队成员可通过自助服务和自动化获取所需资源。采用 Devops,开发团队通常在标准开发环境中编写代码,并会与 IT 运维人员密切协作,加快软件的构建、测试和发布,同时保证稳定与可靠。
向 DevOps 策略转变时,企业组织必须应对更频繁的代码更改、更灵活的基础架构使用,并实现多技能团队的高效协同。这会是一场重大变革。DevOps 固然能带来竞争优势,但也引入了新的协作方式,因此需要新的团队和管理结构。
红帽资源
什么是 DevOps 工程师?
DevOps 工程师是同时精通 IT 开发和运维的专业人员。他们将流程改进、工具和方法引入软件开发生命周期,提升软件开发效率,加快软件从构想到发布的进程。 DevOps 工程师致力于通过自动化来减少重复性任务,从而降低复杂性。这可以让应用的快速迭代与稳定维护两者协调统一,实现既快又稳。
开发团队和 IT 运维团队虽然拥有不同的技能和目标,但两者需要紧密协作,共同推动应用的成功交付和可靠运行。开发团队专注于为应用增加新的特性和功能,运维团队的重点则是在应用发布之后保持其稳定性。
DevOps 的关键就是流程的统一和自动化,所以 DevOps 工程师在组合代码、应用维护和应用管理方面发挥着重要作用。要胜任这些工作,不仅需要掌握开发生命周期,还需要清楚理解 DevOps 文化及其理念、相关实践和工具。在敏捷环境中,开发人员、系统管理员和程序员之间可能各自为政,虽然共同参与同一产品的开发,却未能共享确保用户价值所必需的信息,这种“信息孤岛”现象,正是 DevOps 所要打破的。
因此,大多数践行 DevOps 文化的专业人员都会将各种工具和实践方法与多年的企业 IT 经验结合在一起。要成为一名 DevOps 工程师,需要做到通观全局,因此必须想办法掌握现有技能之外的知识——甚至超越团队的范围。红帽可为您提供所需的资源,为您和您的企业组织的 DevOps 之旅助一臂之力。
常见的 DevOps 实践有哪些?
现代应用的开发涉及不同的实践。许多团队都采用敏捷软件开发方法,这使 DevOps 变得非常重要。
持续集成/持续交付
实施 DevOps 的一大重要成果是持续集成和持续部署管道(CI/CD)以及频繁地获取反馈以便改进。借助 CI/CD,企业组织能够更高频、更可靠地将应用交付到客户手中,并在最小化人工干预的同时,高效验证软件质量。
具体而言,CI/CD 可让持续自动化和持续监控贯穿于应用的整个生命周期(从集成和测试阶段到交付和部署),因此,您可以快速发现问题和缺陷并加以解决和更正。这些关联的实践通常被统称为“CI/CD 管道”,由开发和运维团队以敏捷方式协同支持。CI/CD 有助于团队构建并测试更改,将其添加到存储库,并快速有效地部署更新。
基础架构即代码
基础架构即代码(IaC)是通过代码(而非手动流程)来管理和置备基础架构的方法。IaC 是实施 DevOps 实践和 CI/CD 的重要组成部分,因为它通过自动化大大减少了开发人员的置备工作量。自动化使基础架构能够承受 DevOps 带来的持续性代码更改,且使环境能够轻松实现持续扩展。
通过 DevOps 方法来协调团队,可以减少错误及不一致的情况。IaC 使 DevOps 团队能够使用相同的应用部署描述,并且每次使用时都能生成相同的环境。IaC 促进了一致性,这正是 DevOps 的关键。
微服务
DevOps 还涉及创建更适合这种持续交付节奏的新型软件。因此,DevOps 团队经常会使用微服务架构来构建软件,并通过应用编程接口(API)将这些服务彼此相连。在微服务架构中,应用被拆分成最小的组件,彼此独立。不同于将所有组件内置于一个架构中的传统单体式应用构建方法,在微服务架构中,所有部分相互独立,通过协作来完成同一个任务。
API 简化了开发人员将新应用组件集成到现有架构的方式,继而帮助业务和 IT 团队更好地协作。团队能够通过专注于创建较小的功能模块,从而更快地交付。他们可以聚焦于如何管理微服务和 API,并制定将它们整合到一起的策略,例如敏捷集成。
平台工程
随着 DevOps 在各类企业组织中逐渐普及,实施工具、实践及资源置备的一致性变得愈发迫切。平台工程作为一项互补实践应运而生,它通过提供标准化的自助服务平台帮助实现规模化 DevOps,并提高企业组织中各开发团队的工作效率。
平台工程注重通过自助服务方式实现工具和资源的标准化,全面提升各开发团队的 DevOps 实践水平,显著提高工作效率。 这将加快上市时间,并使软件解决方案更易于持续演变和调整。
进一步了解平台工程
采用 DevOps 面临的挑战有哪些?
DevOps 依托协作文化,当整个企业组织都贯行这种文化,DevOps 才能达到最佳效果。但这种组织层面的变化可能会伴随着挑战,其中包括:
- 获得团队的支持:最大的挑战之一是转变组织思维方式。团队成员习惯于各自不同的工作方式,迅速转变思维方式往往并不容易。文化上的变革需要时间沉淀,但一段时间后,其益处就会逐渐显现。
- 架构复杂性:从传统应用迁移到微服务等新架构可能需要大量工作。团队需要管理更多独立组件,这可能会使依赖项的跟踪变得困难。为帮助缓解这些挑战,企业组织需要建立合适的监控和日志记录系统以及 CI/CD 功能和自动化实践。
- 工具培训和依赖:随着团队采用 DevOps,他们需要开展新的培训。及时编写文档有助于提高效率。先关注团队结构,再进行工具培训,这有助于应对采用 DevOps 所面临的挑战。
- 企业组织层面的挑战:要从孤立式企业组织模式转变为 DevOps 模式,需要整合多种能力和技能,这要求团队成员之间更密切地配合。DevOps 团队必须不断相互学习,出现问题时,整个团队都应共同承担责任。
DevOps、容器和 Kubernetes
容器便于在开发、测试和生产环境之间移动应用。开发人员可以利用容器打包并隔离应用及其运行所需的一切,包括应用文件、运行时环境、依赖库和配置。
DevOps 方法加上 Linux® 容器,可为您的团队提供云原生开发所需的底层技术。容器支持集开发、交付、集成和自动化于一体的统一环境。DevOps 可以加快应用从开发到部署的整个过程。DevOps 的核心在于,在应用的整个生命周期中,都要确保日常运维任务的自动化以及环境的标准化。
Kubernetes 是实现 Linux 容器运维自动化的现代方法。Kubernetes 可帮助您轻松高效地管理在公共云、私有云或混合云中运行 Linux 容器的集群。
什么是 DevSecOps?
要使 DevOps 发挥作用,企业组织需要在应用生命周期的每个阶段都考虑到安全防护问题。这种对安全的重视促成了“DevSecOps”这一相关学科的兴起。DevSecOps 集开发、安全防护和运维于一体。在 DevOps 的基础上进行协作时,安全防护是贯穿始终的共同责任。
CI/CD 安全防护等 DevOps 流程可用于通过自动化检查和测试来保护代码管道,以防止软件交付中出现漏洞。CI/CD 可在开发过程的早期自动进行并嵌入安全检查,确保快速反馈潜在的漏洞问题。这有助于在整个应用生命周期采取主动的安全防护措施。
通过采用左移和右移安全防护原则及持续测试方法,团队可在整个 DevOps 流程中评估并确保产品及功能的质量和性能。自动化测试提供了开发友好的防护措施,可减少构建、部署以及运行时阶段的错误。
红帽如何支持 DevOps
红帽的一系列产品和工具可支持您的 DevOps 流程和成功。要跟上快速的开发周期,运维团队需要利用高度灵活的平台,且像开发团队对待代码那样对待基础架构。
借助红帽® OpenShift® 为 DevOps 团队、平台工程师和 SRE 提供的各种特性和功能,可轻松实现 CI/CD、安全防护、零信任安全架构并满足企业组织的合规要求。将 OpenShift 与红帽开发人员中心结合使用时,平台工程团队就能获享高效构建和管理内部开发人员平台(IDP)所需的工具,并轻松创建构建“黄金路径”所需的项目模板、文档和工作流。
通过自动化,可以简化平台的置备和部署流程。站点可靠性工程(SRE)将这些原本依赖人工的运维任务,通过软件和自动化进行统一管理。SRE 方法可以进一步支持 DevOps 团队的目标。红帽 Ansible® 自动化平台是一个全面的集成平台,可帮助 SRE 团队实现速度、协作和增长的自动化,从而为企业的技术、运营和财务职能部门提供安全保障和运维支持。
红帽企业 Linux 也是一个可靠的平台,可在最需要的时候确保扩展和自动化不会出现故障。为了降低大规模管理 Linux 的复杂性,红帽企业 Linux 的镜像模式允许 DevOps 团队使用相同的容器原生工具和技术来管理从应用到底层操作系统(OS)的各个方面。
红帽可信软件供应链可帮助您将安全防护融入 DevOps 实践。它有助于软件交付的编码、构建、部署和监控符合您的企业组织的安全实践。借助可信配置文件分析器等集成功能,红帽可以帮助在软件开发生命周期的早期及整个过程中消除潜在的安全问题。
红帽官方博客
获取有关我们的客户、合作伙伴和社区生态系统的最新信息。