所有文章 > 技术杂货铺 > DevOps实施指南:计划、策略和步骤
DevOps实施指南:计划、策略和步骤

DevOps实施指南:计划、策略和步骤

实施 DevOps 允许您以更迭代的方式构建软件并更快地交付单个更改。这提供了竞争优势,因为您可以更快地为客户提供价值。整个软件生命周期由DevOps通过确定将采用的工作流程来指导。

在开始在组织中实施 DevOps 之前,制定明确的计划非常重要。这给了您评估不同解决方案、咨询利益相关者以及确定缓解任何潜在问题措施的机会。在本指南中,我们将解释 DevOps 策略中要包含的关键步骤,旨在为您创建一个可行的起点来创建您的实施。

什么是 DevOps?为什么 DevOps 很重要?

DevOps 是加速软件交付吞吐量,同时提高质量和开发人员体验的过程。它将自动化工具与协作工作方法相结合,以缩短反馈循环,并促进开发人员 (Dev) 和操作员 (Ops) 以及其他团队(如产品经理和安全专家)之间更有效的协调。通过运用工具和流程,DevOps 消除了这种鸿沟,让开发人员能够更贴近基础设施,同时也使运营商能够更好地理解开发人员的需求。

DevOps 的 5 大支柱是什么?

DevOps 的五大支柱是指导 DevOps 实施和实践的基本原则。它们是文化、自动化、精益、衡量和共享 (CALMS):

  • 文化强调协作、开放和共同责任。
  • 自动化可加快测试、部署和监控等流程。
  • 精益专注于消除浪费和提高效率。
  • 测量可确保数据驱动的改进决策。
  • 共享促进了团队之间的知识交流和透明度。

实施 DevOps 的好处

成功的 DevOps 实施应当提升交付速度,实现软件质量的持续改进,并为开发人员提供支持,让他们对自己的角色更加满意。加速吞吐量提高可靠性的结合似乎是矛盾的,但可以通过构建可扩展的系统来实现,使您的交付流程更加一致。

DevOps 不是什么

DevOps 是一个特定的工具或软件,而是一种促进开发和运营团队之间协作的文化和组织转变。它不是系统管理员或开发人员等传统角色的替代品,而是一种集成它们的方法。

DevOps 不是一个放之四海而皆准的解决方案;它需要适应团队的独特需求。尽管自动化是其中的关键环节,但它绝非全部。这不仅关乎更快地部署代码;还关乎改善整个软件开发过程中的协作、质量和效率。

如何实施 DevOps

实施 DevOps 没有单一的方法,因为该术语描述了允许成功的软件工程环境出现的文化。它的成功取决于如何构建您的组织,即要构建一种不仅支持而且特别鼓励在交付过程的所有阶段进行跨学科协作的方式。

实施 DevOps 必须从连接不同的团队开始,这样他们才能了解自己的痛点并发现相互帮助的方法。这需要有一个明确的 DevOps 应该实现的目标计划来支持,以可衡量的指标表示,例如部署频率增加 2 倍,这样每个人都知道他们是否走上了正轨。

一旦建立了这种基本的 DevOps 文化,就可以通过引入自动化工具来扩展 DevOps 实施,以进一步统一团队并提高交付吞吐量。然后不断审查该策略以评估哪些方面运作良好,从而产生一个持续的改进周期。

DevOps 通常由一个专门的工程师团队管理,该团队擅长自动化、基础设施管理、可观察性和质量控制。然而,每一位开发人员都能在促进不同团队间的协作与知识共享上发挥作用。

DevOps 实施策略的 6 个关键步骤

通过遵循六个主要步骤,可以制定有效的 DevOps 策略,这些步骤将带您从规划 DevOps 应该实现的目标到衡量实施的成功。步骤如下:

  1. 获得组织支持。
  2. 定义目标和成功标准。
  3. 左移工作。
  4. 自动化交付流程。
  5. 接受持续的反馈。
  6. 定期审查和迭代以推动改进。

DevOps 实施路线图

以下是在您的组织中开始使用 DevOps 的方法。

步骤 1.获得组织支持

首先在组织内接受 DevOps 原则至关重要。要使 DevOps 成功,每个人都需要了解为什么要引入该方法以及它将如何影响他们的工作。如果团队成员对战略有所投入,那么他们就会有动力去推动战略的成功。

从开发人员到产品经理和团队领导,组织的各个层面都需要支持。有些人可能会抵制 DevOps,特别是如果他们担心当他们必须更频繁地协作时,他们的工作量会增加。清楚地传达如何缓解这些问题,例如通过增加自动化的使用或创建保护开发人员免受干扰的重点时间段。

任务和操作:

  1. 对团队成员进行 DevOps 培训。
  2. 说明在组织中实施 DevOps 的好处。
  3. 倾听任何初步的反馈和担忧 — 不要将改变强加给抗拒的受众。

步骤 2.定义目标和成功标准

具体目标使您的 DevOps 计划更有可能成功。实践 DevOps 的首要目标始终是加速软件交付,但这种加速在您的团队的实践中会是什么样子的呢?

通过制定明确的成功标准,您可以评估绩效,并审视是否需要调整策略。标准可以基于与您的 SDLC 相关的任何指标,例如部署频率、失败率或新开发人员提高工作效率所需的时间。

可视化应用这些改进后的 SDLC 会是什么样子,以确定它们是否是合适的目标。

任务和操作:

  1. 确定应改进的 SDLC 痛点和弱点。
  2. 想象成功会是什么样子。
  3. 设定具体、可衡量和现实的目标来衡量成功,例如开发人员能够在 5 分钟内启动新环境,或者您的平均变更提前期缩短到一周。

步骤 3.左移工作

“左移”是指将工作提前进行,使其在软件开发周期的早期进行,同时鼓励多个团队参与。左移最初应用于安全任务,但这个想法也可以得到更广泛的应用 — 代码测试、基础设施预置,甚至向客户的软发布都可以左移,以便您可以更快地评估结果。

采用左移策略可以更快地检测到问题,从而支持质量计划。与将问题留到开发后期相比,在前期就着手解决问题增加了选择最佳解决方案的可能性,因为到了后期,可用的解决方案选项可能会变得有限。

例如,在周期的最早点让安全专家参与进来,可以在规划阶段发现易受攻击的新提案。这允许在编写任何代码之前修改设计。

任务和操作:

  1. 确保每个团队都有机会为交付生命周期的所有阶段做出贡献。
  2. 主动将测试和安全扫描等任务向左移动(这将有助于早期反馈和更快的迭代)。
  3. 构建您的软件开发周期,以优先考虑无懈可击的规划和开发(这将减少在测试、部署和监控阶段对反应性修复的需求)。

步骤 4.自动化交付流程

在建立了上述文化变革之后,我们再引入工具来自动化和标准化交付流程。这通过减少开发人员和操作员必须手动完成的工作量来加速您的 DevOps 吞吐量。

您有多种技术可供选择,但最好先关注 IaC、CI/CD 和自动化测试的基础知识。这些解决方案通过从开发人员工作流中删除重复性任务来提高一致性。

创建平台工程团队有助于编排自动化计划。平台团队通过构建专门构建的工具来解决开发人员问题,从而实施 DevOps 实践。开发人员能够利用该平台的工具来实现他们的目标,比如启动新的环境或者获取可观测性数据等。

任务和操作:

  1. 设置 CI/CD 管道、基础设施自动化工具和自动化质量控制系统。
  2. 根据开发人员的反馈,评估可以提高速度和可靠性的其他类型的工具。
  3. 创建内部开发人员平台 (IDP) 以标准化您的开发流程。

步骤 5.接受持续的反馈

实施紧密的反馈循环对于任何 DevOps 实施的成功都至关重要。您需要设计构建您的流程,使其具备可观察性,并且确保开发人员能够轻松访问日志和指标,以便快速分析变更的结果。

与其他 DevOps 一样,自动化工具和协作工作方法的组合促进了持续反馈。将实时通信渠道整合到您的工作流程中,然后将它们与您使用的 DevOps 系统集成,例如将 Slack 和 Spacelift 相结合,以便在基础设施发生变化时通知开发人员和运维人员。

这些机制减少了团队成员需要手动检查系统状态或等待同事提供信息的情形,使他们能够持续进行有价值的开发工作。

任务和操作:

  1. 为堆栈的每个部分实施强大的可观测性。
  2. 确保所有相关利益相关者都可以访问可观测性数据,例如通过 IDP 提供的工具。
  3. 采用实时通信方法和自动通知。

步骤 6.定期审查和迭代以推动改进

DevOps 实施不会停滞不前。您团队的需求会随时间而变化,因此您需要定期更新迭代策略,以确保其持续有效。将您的成功标准与从开发人员那里收集的反馈结合使用,以衡量 DevOps 对您的工作流程的实际影响。

问题可能包括缺少功能、运行时间过长或需要它们的开发人员无法访问的工具。在发现这些问题时解决这些问题将导致稳步改进,从而持续实现 DevOps 的成功。在每个区域中逐步推进迭代,并随后再次检查您的指标,以确认各项更改是否达到了预期效果。

任务和操作:

  1. 请咨询开发人员,了解他们的需求是否得到满足。
  2. 定期审查 DevOps 采用率和利用率。
  3. 以迭代方式应用有针对性的更改以解决任何薄弱环节。

如何衡量 DevOps 实施成功与否?

正如我们上面概述的,DevOps 策略应该从一组可用作成功标准的目标开始。最简单的方法是使用可衡量的指标,以便您分析随时间变化的趋势。这将消除 DevOps 性能的任何不确定性。

部署频率、更改提前期、更改失败率和恢复服务时间这四个 DORA 指标是很好的起点。这些数值已被证实是衡量团队DevOps成熟度的有效指标。

最熟练的团队会经常部署,交货时间短,失败少,并在事件发生时迅速恢复。您的 DevOps 策略应促进这些价值的改进,例如通过让更多利益相关者参与规划阶段来缩短交付周期,或利用自动事件检测工具来缩短服务恢复时间。

DevOps 工具

工具本身并不能定义 DevOps,但了解适合您的流程和目标的可用选项可以使 DevOps 实施更顺畅、更成功。

类别工具类别工具
规划和协作Jira 软件合流松弛Microsoft 团队CI/CDGitHub 操作极狐GitLab CI/CD詹金斯
版本管理GitHub的位桶极狐GitLab基础设施编排太空升降机
基础设施即代码OpenTofuTerraform普鲁米容器编排Kubernetes (简体中文)OpenShift
配置管理安斯布尔厨师监测数据狗普罗 米修斯格拉法纳

如果您正在寻找更详细的列表,请查看 73 个最有用的 DevOps 工具。

DevOps 最佳实践

以下是帮助您建立强大的 DevOps 基础的五个关键最佳实践:

  1. 促进协作和无指责的沟通 – 打破开发、运营、安全和其他部门之间的团队孤岛,鼓励开放式沟通和责任共担。专注于学习和协作的文化,以推动 DevOps 的成功采用。
  2. 采用持续集成和交付 (CI/CD) – 经常集成代码并自动执行部署,以便及早发现问题并快速发布更新,从而提高软件开发速度和质量。
  3. 自动化测试以确保一致性和速度 – 将自动测试作为 CI/CD 管道的一部分,使团队能够快速一致地验证代码更改,而无需依赖人工干预。它还使开发人员能够专注于构建新功能,而不是执行重复性任务。
  4. 采用基础设施即代码 (IaC) 和自助服务模式  将基础设施视为代码,通过自动化设置、版本控制和测试,可以使更改更加可靠。自助服务模型允许开发人员预置其资源,从而提高速度并减少瓶颈。这提高了敏捷性,同时保持了透明度和控制力。
  5. 在软件开发生命周期的早期纳入安全性 – 将安全性嵌入到 CI/CD 管道的每个阶段,以便及早发现漏洞并降低风险。DevSecOps 促进团队之间对安全的共同责任。这种方法能够在不牺牲交付速度的前提下确保合规性。

将 Spacelift 用于您的 DevOps 策略

Spacelift 是一个 IaC 管理平台,可帮助您实施 DevOps 最佳实践。Spacelift 为基础设施工具(包括 OpenTofu、Terraform、Pulumi、Kubernetes、Ansible 等)提供可靠的 CI/CD 层,让您能够自动化 IaC 交付工作流程。

Spacelift 专为您的整个团队而设计。每个人都在同一空间内协同工作,并受到实施访问控制、安全防护机制及合规性标准的强大策略的有力支持。您可以更高效地管理 DevOps 基础设施,而不会影响安全性。

使用 Spacelift,您可以获得:

  • 用于控制工程师可以创建哪些类型的资源、他们可以拥有哪些参数、运行需要多少个审批、执行什么类型的任务、拉取请求打开时会发生什么以及将通知发送到何处的策略
  • 堆栈依赖项以构建具有依赖项的多基础设施自动化工作流,能够构建工作流,例如,使用 Terraform 生成 EC2 实例并将其与 Ansible 相结合以对其进行配置
  • 通过 Blueprints 或 Spacelift 的 Kubernetes Operator 实现的自助式基础设施,使您的开发人员能够做重要的事情 – 在不牺牲控制权的同时开发应用程序代码
  • 生物舒适,例如上下文(用于环境变量、文件和钩子的可重用容器),以及运行任意代码的能力
  • 偏差检测和可选修复

全球支付平台 Checkout.com 致力于实现“IaC for everything”的目标,Spacelift 实现了这一目标,提供了一个平台,团队可以在Checkout.com运营的受监管环境框架内,通过最少的配置即可开始独立使用。

要点

DevOps 通过将开发和运营团队更紧密地联系在一起来加速软件交付。建立共同责任、左移工作、自动化和短反馈循环的文化,使您能够以更快的速度迭代构建变更,从而获得竞争优势。

在本指南中,我们介绍了 DevOps 实施计划的六个主要阶段及其预期结果。尽管DevOps通常被视为仅与工具和技术相关,但实际上它代表的是一种思维方式的转变,这种转变围绕着DevOps文化、协作、清晰的目标以及持续的评估与衡量。确定可以告诉您何时满足预定成功标准的指标对于 DevOps 计划的长期有效性至关重要。

您计划在您的组织中实施 DevOps 吗?或者,也许您正在寻找改进流程的方法?预约与我们的工程团队进行演示,以便更深入地探讨您的选择。

原文链接:https://spacelift.io/blog/devops-implementation

#你可能也喜欢这些API文章!