写点什么

DevOps 工具链:开放、自由地选择最适合团队和业务需要的工具

  • 2022 年 7 月 11 日
  • 本文字数:4851 字

    阅读完需:约 16 分钟

DevOps工具链:开放、自由地选择最适合团队和业务需要的工具

Hi!我们是DevSecOps解决方案提供商、Atlassian全球白金合作伙伴——龙智。在过去的十多年间,传统软件研发模式发生巨变,从瀑布式开发到敏捷再到 DevOps,开发和运维之间曾经明确的界限正在慢慢变得模糊。


DevOps 由于能够促进开发、运维、测试等不同部门的沟通、协作与整合,正在悄然成为软件研发运营主流趋势。发展至今,DevOps 也结合了新的流程,比如持续集成和持续部署来快速交付价值。


如果您对 DevOps 还知之甚少,或是想要更深入的了解 DevOps 工具链,请不要错过本系列本章。龙智将从 DevOps 的概念、DevOps 工具链、CI 及工具对比、DevOps 监控、DevSecOps 五个方面入手,让您从起源开始,逐步深入了解 DevOps 这个已流行数十年的方法论。



在上一篇文章中,我们介绍了 DevOps 的起源、原则,以及成功实施的关键。作为现今软件行业中最热门的研发运营趋势,企业们纷纷落地 DevOps 来加速生产和交付,为了在竞争激烈的市场中有一席之地。


而成功落地 DevOps 的关键因素,就是打造一个适合团队的工具链。只有真正合适的工具才能提升开发、IT 运营和业务团队之间的协作。


针对 DevOps 各生命周期选择工具


一般来说,选择 DevOps 工具链有以下两种主要方法:一体式或开放式。


一体式 DevOps 解决方案提供了一个通常不与其他第三方工具集成的完整解决方案,但其相对封闭的生态环境也导致了缺少第三方插件为其进行功能扩展。


开放式 DevOps 解决方案可以使用不同的工具,针对团队的需求定制开放的工具链。开放式的工具链可以使用同类最佳的工具进行定制,满足企业的独特需求。使用开放式的工具链能够提高时间效率并缩短上市时间。


但无论企业使用的是一体式还是开放式工具链,DevOps 流程都需要使用正确的工具来解决 DevOps 生命周期的关键阶段:


  • 计划(Plan)

  • 构建(Build)

  • 持续集成和持续交付(CI/CD)

  • 监控(Monitor)

  • 运营(Operate)

  • 持续反馈(Continuous Feedback)


              


计划


借鉴敏捷开发的理念,我们推荐您选择一些能让开发和运营团队将工作分解成更小的、可管理的模块的工具,这样不仅可以加速部署,并可以让您更快地从用户身上学习,通过用户的反馈来持续优化产品。所以,您需要寻找一些能够提供 sprint 计划、问题跟踪和协作的工具,比如 Jira。


Atlassian 公司开发的项目管理工具 Jira,针对 DevOps 中的计划环节,将原本单独出售的 Advanced Roadmaps 插件集成到了新版 DC,使得它可以跨项目管理制定任务计划。通过 Jira,您可以安排工作、调整依赖关系、设置工作负责人等。


计划阶段中,另一个好的实践是,不断收集用户反馈,将其组织成可操作的输入,并为开发团队安排这些操作的优先级。您可以寻找一些让每个人都可以分享和评论任何事情(想法、策略、目标、需求、路线图和文档)的工具。


还有,不要忘记集成和特性标志。无论特性或项目的范围是否确定,您都应该在计划步骤将它们转换为用户场景。特性标志是代码库中的 if 语句,它使团队能够打开或关闭特性。


构建


源代码控制和协同编码


对代码进行源代码控制十分重要。源代码控制工具有助于将代码存储在不同的链中,这样您就可以查看每一个更改,并通过共享这些更改更容易地进行协作。在部署到生产环境之前,您不必等待变更审批委员会的批准,而是可以通过 pull request 进行同行评审来提高代码质量和吞吐量。


什么是 pull request?pull request 告诉您的团队您已推送到存储库中开发分支的更改。然后,团队可以审查提议的更改并讨论修改,再将它们集成到主代码行中。pull request 提高了软件的质量,从而减少了 bug /事故,降低运营成本并加快开发速度。


源代码控制工具应该与其他工具集成,连接代码开发和交付的不同部分。因为这样,您就可以了解该功能的代码是否在生产环境中运行。


Atlassian 公司开发的一款基于 Git 的代码托管与协作工具:Bitbucket,能让您通过内置的持续交付来自动构建。


Git 是一个被广泛应用于构建的版本控制软件,它是一个分布式的版本控制系统,拥有强大的分支管理合并功能和天然的分布式特性,让速度变快、效率更高。


基于 Git,Bitbucket 的分布式管理可以在没有和服务器有连接的情况下仍然可以查看日志,提交代码,创建分支;支持 local branch,可以快速方便的实现各种分支管理;支持分布式,从而可以实现分块管理,以及负载分流管理。


通过 pull request,Bitbucket 将更高效地批准代码审查。创建带有指定审批者的合并检查清单,并通过内嵌的评论直接在源代码中讨论。


持续集成和持续交付(CI/CD)


持续集成(CI)


持续集成是每天多次将代码检入共享存储库,并每次进行测试的实践。通过这种方式,您可以尽早自动发现问题,在最容易修复的时候修复它们,并很快推出新功能。


通过 pull-request 进行代码审查需要分支,现在非常流行。DevOps North Star 是一种工作流,它可以产生更少、更快的分支,并在不牺牲开发速度的前提下保持测试的严谨性。


寻找能够自动将测试应用于开发分支的工具,并在分支构建成功时提供将其推送到 main 的选项。除此之外,您还可以通过简单的集成从团队的实时聊天警报中获得持续的反馈。


持续交付(CD)


持续交付是一种软件工程手法,让软件产品的产出过程在一个短周期内完成,以保证软件可以稳定、持续的保持在随时可以发布的状况。它的目标在于让软件发布流程的其他部分,包括构建、测试与发布变得更快以及更频繁。这种方式可以减少软件开发的成本与时间,减少风险。


要想实现 CI/CD,您可以通过使用 Bitbucket 云版流水线,它能帮助您将代码从测试到生产自动化。如果使用的是 Bitbucket Server 版或 Data Center 版,可以使用 Bamboo 流水线。


使用 Bamboo Data Center,通过无缝集成 Jira 和 Bitbucket 服务器,你可以实现发布、执行、质量和状态的端到端可视化。它还提供了内置部署支持、自动合并和 Git 分支等特性。Bamboo 支持编程扩展和组合。Bamboo 可用于 Windows、Mac OS X 和 Linux 等平台。


测试


测试工具涵盖了许多需求和功能,包括探索性测试、测试管理和编排。但是,对于 DevOps 工具链来说,自动化是必不可少的一个功能。从长远来看,自动化测试能够通过加快您的开发和测试周期而获得回报。


通过尽早且经常地进行测试自动化,可以提高软件质量并降低风险。开发团队可以重复执行涵盖多个领域的自动化测试,包括 UI 测试、安全扫描或负载测试等。它们还生成报告和趋势图,帮助识别风险区域。


在软件开发中,风险是不可避免的,但是您不能减少您无法预期的风险。您可以寻找支持 wallboards 的工具,并让参与项目的每个人对特定的构建或部署结果发表评论。额外的加分工具,使它更容易让运维参与闪电式测试和探索性测试。


您可以选择自动化测试工具来协助您进行测试,例如 SonarQube。作为一个代码质量管理平台,它能够扫描项目中重复代码、编码标准、单元测试、代码覆盖率、代码复杂度、潜在 Bug、注释等,帮助您提交更干净的代码。


除此之外,另一个用于执行测试的工具就是 Mend(原 Whitesource)。它是一个开源代码漏洞扫描工具,能够在自己的环境中自动查找、修复开源漏洞,保证开源代码安全。


当测试产生的大量测试用例时,您需要 Jira 协助您进行管理。作为项目管理系统,Jira 不仅与上述两个软件集成,也可与第三方插件包括 Zephyr、Xray 等集成,管理测试用例。


其中,Xray 利用了 Jira 原生的 issue 管理和工作流引擎,可以在满足基本的测试用例和测试任务管理的同时,天然地连通需求、缺陷等内容,非常方便地实现需求-用例-缺陷的上下游追溯,并实时提供测试进度、需求覆盖强度等报告。再加上拥有中文版,深受国内用户欢迎。


部署仪表板(Jira Cloud Only)


发布软件时,压力最大的部分之一是将即将发布的版本的所有更改、测试和部署信息集中到一个地方。在发布之前,没有人想要来一场冗长的会议汇报状态,而这正是发布仪表板的用武之地。


您需要一个与代码存储库和部署工具集成的单一指示板工具,一个能在同个地方让你看到分支、构建、拉请求和部署警告的东西。


使用 Jira 云版协助部署,您可以从不同的项目中创建多个仪表盘,并添加小工具来跟踪您正在处理的任务和 issue。


自动化部署


不存在适用于每个应用程序和 IT 环境的自动部署灵丹妙药。但是,使用 Ruby 或 bash 将操作的运行簿转换为 cmd-可执行脚本是一种常见的启动方法。良好的工程实践至关重要。使用变量来分解主机名——为每个环境维护唯一的脚本或代码并不是一件有趣的事情(而且遗漏了一半的要点)。创建实用方法或脚本以避免重复代码。并对您的脚本进行同行评审,以检查它们的完整性。


您可以使用 Bamboo 部署项目来协助安排部署。它管理着多个部署环境,常见的有: 开发环境(Dev),测试环境(Test),模拟环境(Staging)和生产环境(Production),以适应不同生命周期阶段的测试,交付需求。


运营


应用程序和服务器性能监控


有两种类型的监视应该是自动化的:服务器监视和应用程序性能监视。


手动“置顶”一个盒子或测试你的 API 对抽查来说不错,但是要了解应用程序(和环境)的趋势和整体健康状况,您需要能够全天候监听和记录数据的软件。持续的可观察性是成功的 DevOps 团队的关键能力。

寻找与您的群聊客户端集成的工具,这样警报就会直接发送到团队的房间,或事件专用房间。


事件、变更和问题跟踪


开启 DevOps 团队之间协作的关键是确保他们正在查看相同的工作。报告事件后会发生什么?它们是否与软件问题相关联并可追溯?进行更改时,它们是否链接到版本?


没有什么比在不同系统中跟踪事件和软件开发项目更能阻碍开发人员与运维人员的合作了。寻找那些将事件、变更、问题和软件项目集中在一个平台上的工具,这样您就可以更快地识别和修复问题。


对于监控软件运行情况,您可以使用 Opsgenie。它是一个现代化事件管理平台,能接收来自监控系统和自定义应用程序的警报,并根据重要性和时序将所有警报分类,通知正确的人员,缩短响应时间,避免警报疲劳。


持续反馈


客户会告诉您您是否构建了正确的东西,而您只需要倾听。持续反馈包括定期收集反馈的文化和流程,以及从反馈中获得洞察力的工具。持续的反馈实践包括收集和审查 NPS 数据、流失调查、错误报告、支持票,甚至推送。在 DevOps 文化中,产品团队中的每个人都可以访问用户评论,因为产品的人会帮助指导从发布计划到探索性测试会议的所有内容。


寻找将聊天工具与您最喜欢的调查平台集成的应用程序,以获得 NPS 风格的反馈。Twitter 和/或 Facebook 也可以与聊天功能集成以提供实时反馈。为了更深入地了解来自社交媒体的反馈,投资一个可以利用历史数据提取报告的社交媒体管理平台是值得的。


分析和整合反馈在短期内可能会在短期内减缓开发速度,但从长远来看,这比发布没人想要的新功能更有效。


对于收集客户反馈,您可以使用 Jira Service Management。同时,JSM 可以与 Confluence 集成,利用由 Confluence 提供支持的开箱即用知识库,简化服务请求管理,提升客户体验。Atlassian 的调查显示,将由 Confluence 提供支持的知识库与 JSM 结合使用,可以转移多达 45%的客户报告请求。


想要一个集成了您喜欢的聊天工具和 Jira 的插件?您可以使用龙智自主研发的 Jira 企业微信插件、Jira 钉钉插件,快速获得移动端反馈,随时随地处理 issue。


总结


没有哪一个单一的工具能够胜任所有情况,您所选择的工具应基于您使用的技术、在哪里托管,以及团队的人才及构成来决定。


Atlassian 相信拥有与开发和运营团队喜欢使用的工具集成的 DevOps 工具链的重要性。这也是 Atlassian 构建的 DevOps 平台与 171 多家领先的第三方供应商集成的原因,使您能够在所使用的工具中做出最佳决策。

秉承着开放式的理念,Atlassian Open DevOps 与 SonarQube、Mend(原 Whitesource)、Xray 等软件紧密集成,让您可以自由选择熟悉的、喜爱的工具。


龙智作为 Atlassian 全球白金合作伙伴,为帮助释放及拓展 Atlassian 工具的力量,也自主开发了多款 Atlassian 插件,更适合本土企业使用。包括Jira工时管理插件(TimeWise for Jira)Confluence水印插件(Watermark for Confuence)Jira工作流扩展和并行审批插件(WorkflowWise for Jira)等,欢迎咨询试用。


想了解更多 Atlassian DevOps 解决方案、工具及客户案例?欢迎您立即咨询Atlassian全球白金合作伙伴—龙智

电话:400-775-5506

邮箱:marketing@shdsd.com

用户头像

还未添加个人签名 2021.05.18 加入

还未添加个人简介

评论

发布
暂无评论
DevOps工具链:开放、自由地选择最适合团队和业务需要的工具_DevOps_龙智—DevSecOps解决方案_InfoQ写作社区