DevOps 定义

DevOps 是“开发”和“运维”的缩写。 其标志着从旧式的孤立方法向综合团队工作方式的转变 – 开发、IT 和运维人员精诚合作,每个团队都要考虑其他团队的需求和要求,从而更快速可靠地向客户提供业务价值。

随着开发人员和运维人员之间加强沟通和协作,实现软件的快速发布,DevOps 实践正逐渐向着主流迈进。 开发人员与运营人员进行合作,从而了解代码对基础架构的影响,并访问生产系统,以进行监控和故障排除。 同样,运维人员也与开发人员合作,创建自动化、自助服务和可靠的基础架构和工具。 这样能够在软件的二进制构建块进入完全自动化的 CI/CD 流水线时安全无虞。

开发和运维团队紧密协作,可创建:

  • 自动化、自助服务以及可靠的基础架构和工具
  • 完整的 CI/CD,提供端到端解决方案
  •  反馈流程 – 实现持续学习和快速恢复
  •  基础架构即代码,将现代软件开发方法引入基础架构
  •  关注开发流程,了解代码对基础架构有何影响
  •  监控生产系统并进行故障排除

在软件行业早期,开发人员开发软件,IT 提供工具,运维人员处理生产系统,每个团队都在一个孤立的环境中工作。
伴随着这种工作方式,问题不期而至,比如:开发人员使用的工具不合适;运维人员使用的软件在开发环境中运行良好,但没有考虑生产系统限制;以及软件无法彻底解决安全问题等。

DevOps 原则

DevOps 的三大支柱: 文化、最佳实践以及工具。 对于真正考虑采用 DevOps 的组织,DevOps 的三大支柱是无法回避的话题。

DevOps 文化

DevOps 文化即自动化、沟通、责任、责任分担以及增强协作。 开发、IT 和运维人员要作为一个团队开展协作。 这种文化应营造一种强调尽早反馈和持续学习且允许试错的安全环境。 此外,这种文化应赋予每个团队全面的责任制,同时提供完善的方法。

DevOps 最佳实践

各个公司的 DevOps 标准和最佳实践各有不同。 即便是同一公司的不同团队采用的实践方式也不尽相同。 只要所采用的实践方式能够帮助公司更快地交付优质软件,那么 DevOps 的目标就实现了。 以下是转向 DevOps 时应采用的实践方式列表。

  • 开发人员应参与运营

    开发人员作为综合团队的一部分参与运营时,他们会走出封闭的开发环境,而进入真实的生产系统,切身感受代码的运行环境。 这样,他们可以敏锐地意识到更改代码可能会对生产基础架构造成的影响,并确保在版本交付后做出的代码更改不会产生不利影响。 此外,开发人员可以通过访问生产系统承担起监控和故障排除的责任,甚至可以在出现生产问题时“待命上阵”。

  • 运维人员应参与开发

    运营人员了解计划在开发阶段进行的代码更改后,就可以预见更改代码可能对生产基础架构造成的影响,并确保开发人员将诸如硬件限制、监控、部署、故障排除、安全性和生产系统所需工具等因素考虑在内。

  • 版本控制一切

    针对源代码使用版本控制系统是一种标准实践方式,已被广泛接纳。 在 DevOps 环境中,“代码”的概念延伸至生产系统涉及的所有内容。 因此,除了源代码之外,您还应该对软件和硬件配置文件、设置、参数以及运行时系统中的任何其他内容进行版本控制。

  • 灵活应对基础架构的变化

    在软件开发中使用敏捷方法已形成共识,其实这在基础架构中也应得到推广。 应将基础架构作为代码处理和管理。 这就意味着应对修改进行版本控制,并应用于独立的小步骤中,而且需在每个步骤对您的系统进行测试,确保没有任何损坏。

  • 全面自动化

    进行手动任务和流程容易出错,且不可扩展。 在 DevOps 环境中,应将每个修改作为 CI/CD 流水线的一部分进行自动化。 应对所有可自动化的内容进行自动化。 这包括自动化部署流程、自动化测试程序等。

  • 持续集成/交付/部署

    从开发到生产系统,在软件交付流水线任何阶段的变更都应通过 CI/CD 系统进行。 这样可以确保如果出现任何故障,会有一个快速反馈流程来实现快速恢复。

  • 统一工具和平台

    在 DevOps 中,开发、模拟和生产环境应尽可能使用相同的工具、配置和硬件资源。 这是为了确保任何在开发中正常运行的内容都能成功过渡到模拟和生产系统。

DevOps 工具

市场上有一系列 DevOps 工具可供使用,其中大多数都只是某个主要类别中独立的分支。 由于采用 DevOps 的方式不同,各组织都会根据其特定需求选择类别和相应的工具。

  • 源代码控制

    对所有内容进行版本控制根植于源代码控制工具,是 DevOps 的最佳实践方式之一。 当然,除了对源代码进行版本控制外,所选工具还可用于对配置文件、设置以及文本中所能定义的任何其他内容进行版本控制。 为了遵循 DevOps 最佳实践,应对开发人员的源代码与运营人员的配置脚本使用相同工具。

  • CI/CD 流水线管理

    持续集成和持续部署工具对于实现自动化至关重要,而自动化是加速发布周期的根本所在。 为了更好协调整个过程,应使用统一方法管理应用程序的整个生命周期。

借助 JFrog CLIJFrog Artifactory 可以加速任何 CI/CD 服务器的 CI/CD 周期,作为依赖的来源和构建输出的目标。

  • 测试

    测试是 DevOps 生命周期的基本阶段之一,通过将测试工具与持续集成相结合,实现 DevOps 快速反馈周期所需的测试自动化。

  • 配置管理和部署

    可使用 Docker、Chef、Puppet、Ansible 和 Terraform 等工具,创建运行系统和开展测试所需的环境和配置。

  • 二进制管理

    制品库管理器显著降低了管理组织的二进制文件(包括内部开发的二进制文件以及从云端下载的公共开源组件)的复杂性。 它还可以加速构建,从而缩短发布周期。 制品库管理器具有足够的通用性和灵活性,能够无缝集成到您组织的所有 DevOps 生态系统中,因此使用存储库管理器非常重要。

JFrog Artifactory 是唯一适用于所有 DevOps 生态系统的企业通用制品库管理器。

  • 监控

    在 DevOps 周期的每个阶段进行连续监控对于早期检测故障 和快速补救至关重要。

  • 安全性高

    安全性是 DevSecOps 的核心,并且在 DevOps 周期的各阶段都有不同的工具可用。

  • 协作

    协作和沟通是 DevOps 文化的基础。 多种工具可以帮助您进行通讯、工单、发布规划等。

JFrog Xray 提供容器和软件制品的多层分析功能,发现 DevOps 周期不同阶段的安全漏洞、确保开源许可合规性以及质量。

DevOps 的优点

采用 DevOps 对组织的益处体现在多个方面,但不同的组织角色可能关注 DevOps 的不同优点。 例如,公司的 CEO 可能会关注 DevOps 带来的收入增加和成本降低,而 IT 经理可能更关注缺陷减少和发布周期加快等优点。 以下是采用 DevOps 实践的一些优点。

  • 减少变更失败

    相较于大而笼统的变更,小而明确的变更加安全。 不仅可以降低故障概率,而且也缩短了恢复时间。

  • 优质产品

    产品部署时 Bug 较少,而且由于部署频繁且周期较短,因此可以更快地持续改进产品。

  • 降低发布成本

    由于需要修复的 Bug 更少、周期更短,且有一个完全自动化的流水线,因此降低了部署版本的成本。

  • 减少计划外工作所用时间

    随着失败减少,所有团队成员用于修复意外问题的时间也相应减少。

  • 将更多时间用于新的工作

    由于计划外工作所用时间减少,所有团队成员都有更多的时间用于创新和新工作。

  • 更快上市

    周期缩短和问题减少意味可以更快地发布产品。

  • 满意的客户

    快速的发布周期意味着能够快速修复缺陷,增加客户要求的新功能。

  • 增加收入

    如果用户满意您的产品,他们更有可能购买更多产品并向他人推荐。

  • 稳健的基础架构

    分小步修改、在所有阶段进行测试并维护配置和设置版本控制的基础架构更加稳定可靠。

  • 提高工作满意度

    相比于那些经常返工和缺陷修复的团队,在新工作和创新上花更多时间的团队的满意度更高。

  • 减少浪费

    从小处着手,减少工作量。 人们普遍认为,创建未使用的代码是软件中最大的浪费。 DevOps World 以小型代码块进行运作,能够减少这种浪费,并提供短周期的早期反馈。

  • 发布更迅速,频率更高

    当所有内容都实现自动化时,代码可以更快地从开发走向生产。

DevOps 关键绩效指标

通过 4 个指标进行自测:

  • 变更前置时长:
    从代码到生产

  • 服务恢复耗时: 从生产发生问题到恢复正常平均所需时间

  • 部署频率: 部署至生产的次数

  • 变更失败率: 应用变更(以失败告终)的尝试次数

立即试用 JFrog DevOps 工具!
您可以在本地或云端进行免费试用。

免费试用