DevOps 工具
为 DevOps 生命周期的每个阶段选择工具。
DevOps 是敏捷开发方法的进一步发展。它是一种将开发和运营团队整合在一起的文化转型。DevOps 实践涉及文化变革、新的管理原则,以及有助于实施最佳实践的技术工具。
对于 DevOps 工具链,组织应寻找能够改善协作、减少上下文切换、引入自动化以及利用可观察性和监控功能的工具,以更快的速度交付更卓越的软件。
DevOps 工具链主要有两种形式:一体式或开放式的工具链。一体式 DevOps 工具链可提供完整的解决方案,通常不会与其他第三方工具集成。开放式工具链可以根据团队的需求使用不同工具进行定制。Atlassian 认为,开放式工具链是最佳方法,因为它可以使用最佳工具进行定制,以满足组织的特殊需求。使用此方法通常会提高时间效率并缩短上市时间。
无论组织使用哪种类型的 DevOps 工具链,DevOps 流程都需要使用正确的工具来处理 DevOps 生命周期的关键阶段:
- 发现
- 规划
- 构建
- 测试
- 监控
- 运维
- 持续反馈
使用开放式 DevOps 工具链,所选工具将涉及 DevOps 生命周期的多个阶段。以下章节介绍部分最受欢迎的 DevOps 工具,但考虑到市场性质,此列表会经常更改。提供商可增加新功能,以便覆盖 DevOps 生命周期的更多阶段,同时每个季度都能发布新的集成。此外在某些情况下,提供商还可以整合其产品,以专注于用户的特定问题。
发现
在“发现”阶段,DevOps 团队将研究并定义项目的范围。需特别指出的是,该阶段涉及到用户研究、建立目标和定义成功等活动。
像 Mural 和 Miro 这样的工具可以让整个软件团队去收集想法并开展研究。Jira Product Discovery 将这些信息组织成可操作的输入,并为开发团队排定行动的优先级。在确定优先级时,还需要牢记待办事项列表中的用户反馈。
“产品发现”是产品设计的第一步,以后将成为决策的基准。在产品发现期间,您可以收集有关任何用户问题的所有重要信息,然后为这些问题提供解决方案。
我们建议去寻找那些鼓励“异步头脑风暴”的工具。让所有人都能分享和评论任何内容:想法、战略、目标、要求、路线图和文档,这一点非常重要。
计划
构建
用于开发的相同生产环境
将 Puppet 和 Chef 主要用于运营的同时,开发人员使用 Kubernetes 和 Docker 等开源工具来调配单个开发环境。基于虚拟的一次性生产副本进行编码有助于您完成更多工作。
当每个团队成员在多个配置完全相同的环境中工作时,“在我的计算机上能运行!”这句话就不是开玩笑了,因为这是事实(这种情况才有意思)。
基础架构即代码
开发人员创建模块化应用,因为它们更加可靠且可维护。那么,为什么不把这种想法扩展到 IT 基础架构呢?这可能难以应用于系统,因为它们一直在不断变化。所以我们通过使用代码进行调配来解决此问题。
基础架构即代码意味着重新调配比修复更快,也更具一致性和可复制性。这也意味着您可以使用与生产环境类似的配置轻松地调整开发环境的不同变体。调配代码可以反复应用,以使服务器达到某一已知的基准。它可存储在版本控制中,可对它进行测试,纳入 CI(持续集成),并进行同行审查。
将系统知识完备地编入代码后,您对运行手册和内部文件的需求就会逐渐消失。随之而来的是可重复的流程和可靠的系统。
源代码控制和协作编码
控制您的源代码至关重要。源代码控制工具有助于将代码存储在不同的链中,这样您就可以看到每项变更,并通过共享这些变更更轻松地进行协作。与其等待变更审批委员会批准后再部署到生产环境,您可以通过使用拉取请求执行同行审查,来提高代码质量和吞吐量。
您问什么是拉取请求?拉取请求会通知团队您推送了对代码库中某个开发分支的变更。您的团队随后可以查看建议的变更并讨论修改,然后再将其集成到主代码行。拉取请求可提高软件的质量,从而减少缺陷/事件,降低运营成本并加快开发速度。
源代码控制工具应与其他工具集成,以便您关联代码开发和交付的不同组成部分。这样,您就可以知道该功能的代码是否在生产环境中运行。如果发生事件,则可以检索代码以了解此事件。
持续交付
持续集成是指每天多次向共享代码库签入代码,并且在每次都进行测试的一种做法。这样,您可以及早自动发现问题、在最容易修复的时候解决问题,并尽快为用户提供新功能。
通过拉取请求进行代码审查需要创建分支,而且十分盛行。DevOps North Star 是一个工作流程,它可以在不降低开发速度的情况下更快速地创建更少的分支,并保持测试严格性。
您可以寻找具有以下功能的工具:不仅可以自动将您的测试应用于开发分支,还可以在分支创建成功时选择推送到主干。除此之外,通过简单的集成,您可以根据团队的实时聊天警报获得持续反馈。
了解 Bitbucket Pipelines 如何帮助您自动处理从测试到生产的代码。
测试
自动化测试
测试工具涵盖了许多需求和功能,包括探索性测试、测试管理和编排。但是,对于 DevOps 工具链而言,自动化是一项必不可少的功能。从长远来看,通过缩短开发和测试周期,自动化测试会随着时间的推移而得到回报。在 DevOps 环境中,它对于增强认识也很重要。
尽早且频繁地使用测试自动化功能可以提高软件质量,并降低风险。开发团队可以重复执行自动化测试,涵盖多个领域,如 UI 测试、安全扫描或负载测试。它们还会生成有助于识别危险区域的报告和趋势图。
虽然软件开发的风险不可避免,但是如果您不能预测风险,就无从降低风险。帮助您的运营团队,与他们一起进行深入研究。您可以寻找具有以下功能的工具:可支持墙板并让参与项目的每个人都能够对特定的构建或部署结果进行评论。若再加上可使运营部门能够轻松参与突击测试和探索性测试的工具,可达到更棒的效果。
部署
部署仪表板
发布软件中最紧张的环节之一是将与即将到来的发布相关的所有更改、测试和部署信息都集中到一起。在发布之前,任何人都不愿开一次长会进行状况汇报。此时便需要用到仪表盘。
您可以寻找具有与您的代码库和部署工具集成的单一仪表盘的工具。寻找让您能从一个位置全面了解分支、构建、拉取请求和部署警告的工具。
自动化部署
自动化部署适用于每个应用和 IT 环境并没有什么秘诀。但是将运营部门的运行手册转换成使用 Ruby 或 bash 的 cmd 可执行脚本是一种常见的开始方式。良好的工程实践至关重要。使用变量析出主机名 — 为每个环境维护特有的脚本或代码是非常无趣的(并且往往事倍功半)。创建实用方法或脚本来避免重复的代码,并请同行审查您的脚本,对它们执行完整性检查。
首先,在您在其中最常使用自动化的最低级别的环境中尝试自动化部署,然后逐渐将其复制到较高级别的环境中,一直到生产环境。撇开其他不谈,此做法强调了您的不同环境之间的差异,且会生成一个有待实施标准化的任务列表。这样做的好处是:通过自动化实施的标准化部署可有效减少环境内和不同环境之间的“服务器漂移”。
运维
观察
持续反馈
客户会告诉您是否做了正确的事情,而您只需倾听即可。持续反馈包括定期收集反馈的文化和流程,以及从反馈中获取洞察信息的工具。持续反馈实践包括收集和审查 NPS 数据、客户流失调查、缺陷报告、支持工作单,甚至还有推文。在 DevOps 文化中,产品团队中的每个人都可以访问用户评论,因为它们有助于指导从发布规划到探索性测试环节的所有工作。
您可以寻找具备以下功能的应用:可将您的聊天工具与您最喜爱的调查平台集成,从而提供 NPS 式反馈。也可将 Twitter 和/或 Facebook 与聊天工具集成,以获得实时反馈。要深入了解来自社交媒体的反馈意见,投资一个可以使用历史数据拉取报告的社交媒体管理平台是非常值得的。
分析和整合反馈可能会在短期内减缓开发速度,但从长远来看,它比发布没有人想要的新功能更有效率。
总之...
Atlassian 认为,拥有一个与开发和运营团队喜欢使用的工具集成的 DevOps 工具链至关重要。这就是我们构建可集成 171 多家领先第三方供应商,从而可让您在所用工具中做出最佳决策的 DevOps 平台的原因。这是因为 DevOps 不应从单个供应商处购买,而应是构建。
下一篇文章
推荐阅读
将这些资源加入书签,以了解 DevOps 团队的类型,或获取 Atlassian 关于 DevOps 的持续更新。