DevOps 工具

为 DevOps 生命周期的每个阶段选择工具。


开放式工具链

DevOps 是敏捷开发方法的进一步发展。它是一种将开发和运营团队整合在一起的文化转型。DevOps 实践涉及文化变革、新的管理原则,以及有助于实施最佳实践的技术工具。

对于 DevOps 工具链,组织应寻找能够改善协作、减少上下文切换、引入自动化以及利用可观察性和监控功能的工具,以更快的速度交付更卓越的软件。

DevOps 工具链主要有两种形式:一体式或开放式的工具链。一体式 DevOps 工具链可提供完整的解决方案,通常不会与其他第三方工具集成。开放式工具链可以根据团队的需求使用不同工具进行定制。Atlassian 认为,开放式工具链是最佳方法,因为它可以使用最佳工具进行定制,以满足组织的特殊需求。使用此方法通常会提高时间效率并缩短上市时间。

了解有关 DevOps 工具链的更多信息

无论组织使用哪种类型的 DevOps 工具链,DevOps 流程都需要使用正确的工具来处理 DevOps 生命周期的关键阶段:

  • 规划
  • 构建
  • 持续集成和部署
  • 监控
  • 运维
  • 持续反馈

使用开放式 DevOps 工具链,所选工具将涉及 DevOps 生命周期的多个阶段。以下章节介绍部分最受欢迎的 DevOps 工具,但考虑到市场性质,此列表会经常更改。提供商可增加新功能,以便覆盖 DevOps 生命周期的更多阶段,同时每个季度都能发布新的集成。此外在某些情况下,提供商还可以整合其产品,以专注于用户的特定问题。

规划


Jira Software 标志 Confluence 徽标 Slack 徽标

基于敏捷开发手册,我们建议您使用一些工具,帮助开发和运营团队将工作分解为更小的可管理工作块,以便更快地进行部署。这样,您就可以尽早从用户那里获取信息,并根据用户反馈优化产品。寻找能够提供冲刺规划、事务跟踪且允许协作的工具,如 Jira。

另一种不错的做法是持续收集用户反馈,将其整理成可操作的输入,然后为您的开发团队确定这些操作的优先级。您可以寻找可以促进“异步头脑风暴”的工具(如果您愿意的话)。让所有人都能分享和评论任何内容:想法、战略、目标、要求、路线图和文档,这一点非常重要。

请不要忘记集成和功能标记。无论您决定如何界定功能或项目的范围,都应在开发待办事项列表中将其转化成用户故事。功能标记是代码库中的 if 语句,它可让团队打开和关闭功能。

有关此阶段的更多信息,请查看 Atlassian 产品经理发表的这篇关于待办事项梳理和优先级排序的文章。

Plan


Jira Software logo Confluence logo Slack logo

Taking a page out of the agile handbook, we recommend tools that allow development and operations teams to break work down into smaller, manageable chunks for quicker deployments. This allows you to learn from users sooner and helps with optimizing a product based on the feedback. Look for tools that provide sprint planning, issue tracking, and allow collaboration, such as Jira. 

Another great practice is continuously gathering user feedback, organizing it into actionable inputs, and prioritizing those actions for your development teams. Look for tools that encourage “asynchronous brainstorming” (if you will). It’s important that everyone can share and comment on anything: ideas, strategies, goals, requirements, roadmaps and documentation.

And don’t forget about integrations and feature flags. Wherever you decide to scope your feature or project, it should be converted into user stories in your development backlog. Feature flags are if-statements in the code base that enable teams to turn features on and off.

For more on this phase, check out this post from Atlassian product managers about backlog grooming and prioritization.

构建


Kubernetes 徽标 Docker 徽标

用于开发的相同生产环境:

将 Puppet 和 Chef 主要用于运营的同时,开发人员使用 Kubernetes 和 Docker 等开源工具来调配单个开发环境。基于虚拟的一次性生产副本进行编码有助于您完成更多工作。

当每个团队成员在多个配置完全相同的环境中工作时,“在我的计算机上能运行!”这句话就不是开玩笑了,因为这是事实(这种情况才有意思)。

Ansible 徽标 Chef 徽标 Docker 徽标 Puppet 徽标 Terraform 徽标

基础架构即代码:

开发人员创建模块化应用,因为它们更加可靠且可维护。那么,为什么不把这种想法扩展到 IT 基础架构呢?这可能难以应用于系统,因为它们一直在不断变化。所以我们通过使用代码进行调配来解决此问题。

基础架构即代码意味着重新调配比修复更快,也更具一致性和可复制性。这也意味着您可以使用与生产环境类似的配置轻松地调整开发环境的不同变体。调配代码可以反复应用,以使服务器达到某一已知的基准。它可存储在版本控制中,可对它进行测试,纳入 CI(持续集成),并进行同行审查。

将系统知识完备地编入代码后,您对运行手册和内部文件的需求就会逐渐消失。随之而来的是可重复的流程和可靠的系统。

Bitbucket 徽标 Github 徽标 GitLab 徽标

源代码控制和协作编码:

控制您的源代码至关重要。源代码控制工具有助于将代码存储在不同的链中,这样您就可以看到每项变更,并通过共享这些变更更轻松地进行协作。与其等待变更审批委员会批准后再部署到生产环境,您可以通过使用拉取请求执行同行审查,来提高代码质量和吞吐量。

您问什么是拉取请求?拉取请求会通知团队您推送了对代码库中某个开发分支的变更。您的团队随后可以查看建议的变更并讨论修改,然后再将其集成到主代码行。拉取请求可提高软件的质量,从而减少缺陷/事件,降低运营成本并加快开发速度。

源代码控制工具应与其他工具集成,以便您关联代码开发和交付的不同组成部分。这样,您就可以知道该功能的代码是否在生产环境中运行。如果发生事件,则可以检索代码以了解此事件。

持续集成和交付


Jenkins 徽标 AWS 徽标 Bitbucket 徽标 CircleCI 徽标snyk 徽标 Sonarsource 徽标

持续集成:

持续集成是指每天多次向共享代码库签入代码,并且在每次都进行测试的一种做法。这样,您可以及早自动发现问题、在最容易修复的时候解决问题,并尽快为用户提供新功能。

通过拉取请求进行代码审查需要创建分支,而且十分盛行。DevOps North Star 是一个工作流程,它可以在不降低开发速度的情况下更快速地创建更少的分支,并保持测试严格性。

您可以寻找具有以下功能的工具:不仅可以自动将您的测试应用于开发分支,还可以在分支创建成功时选择推送到主干。除此之外,通过简单的集成,您可以根据团队的实时聊天警报获得持续反馈。

了解 Bitbucket Pipelines 如何帮助您自动处理从测试到生产的代码。

Mabl 徽标 Saucelabs 徽标 Xray 徽标 Zephyr 徽标

测试:

测试工具涵盖了许多需求和功能,包括探索性测试、测试管理和编排。但是,对于 DevOps 工具链而言,自动化是一项必不可少的功能。从长远来看,通过缩短开发和测试周期,自动化测试会随着时间的推移而得到回报。在 DevOps 环境中,它对于增强认识也很重要。

尽早且频繁地使用测试自动化功能可以提高软件质量,并降低风险。开发团队可以重复执行自动化测试,涵盖多个领域,如 UI 测试、安全扫描或负载测试。它们还会生成有助于识别危险区域的报告和趋势图。

虽然软件开发的风险不可避免,但是如果您不能预测风险,就无从降低风险。帮助您的运营团队,与他们一起进行深入研究。您可以寻找具有以下功能的工具:可支持墙板并让参与项目的每个人都能够对特定的构建或部署结果进行评论。若再加上可使运营部门能够轻松参与突击测试和探索性测试的工具,可达到更棒的效果。

Jira Software 标志

部署仪表板:

发布软件中最紧张的环节之一是将与即将到来的发布相关的所有更改、测试和部署信息都集中到一起。在发布之前,任何人都不愿开一次长会进行状况汇报。此时便需要用到仪表盘。

您可以寻找具有与您的代码库和部署工具集成的单一仪表盘的工具。寻找让您能从一个位置全面了解分支、构建、拉取请求和部署警告的工具。

Bitbucket 徽标 Zephyr 徽标

自动化部署:

自动化部署适用于每个应用和 IT 环境并没有什么秘诀。但是将运营部门的运行手册转换成使用 Ruby 或 bash 的 cmd 可执行脚本是一种常见的开始方式。良好的工程实践至关重要。使用变量析出主机名 — 为每个环境维护特有的脚本或代码是非常无趣的(并且往往事倍功半)。创建实用方法或脚本来避免重复的代码,并请同行审查您的脚本,对它们执行完整性检查。

首先,在您在其中最常使用自动化的最低级别的环境中尝试自动化部署,然后逐渐将其复制到较高级别的环境中,一直到生产环境。撇开其他不谈,此做法强调了您的不同环境之间的差异,且会生成一个有待实施标准化的任务列表。这样做的好处是:通过自动化实施的标准化部署可有效减少环境内和不同环境之间的“服务器漂移”。

Test


Automated testing

               

Testing tools span many needs and capabilities, including exploratory testing, test management, and orchestration. However, for the DevOps toolchain, automation is an essential function. Automated testing pays off over time by speeding up your development and testing cycles in the long run. And in a DevOps environment, it’s important for another reason: awareness.

Test automation can increase software quality and reduce risk by doing it early and often. Development teams can execute automated tests repeatedly, covering several areas such as UI testing, security scanning, or load testing. They also yield reports and trend graphs that help identify risky areas.

Risk is a fact of life in software development, but you can’t mitigate what you can’t anticipate. Do your operations team a favor and let them peek under the hood with you. Look for tools that support wallboards, and let everyone involved in the project comment on specific build or deployment results. Extra points for tools that make it easy to get Operations involved in blitz testing and exploratory testing.

Deploy


Deployment dashboards

Jira Software logo 

One of the most stressful parts of shipping software is getting all the change, test, and deployment information for an upcoming release into one place. The last thing anyone needs before a release is a long meeting to report on status. This is where release dashboards come in.

Look for tools with a single dashboard integrated with your code repository and deployment tools. Find something that gives you full visibility on branches, builds, pull requests, and deployment warnings in one place.

Automated deployment

Bitbucket logo Zephyr logo

There’s no magic recipe for automated deployment that will work for every application and IT environment. But converting operations’ runbook into a cmd-executable script using Ruby or bash is a common way to start. Good engineering practices are vital. Use variables to factor out host names – maintaining unique scripts or code for each environment is no fun (and misses half the point anyway). Create utility methods or scripts to avoid duplicated code. And peer review your scripts to sanity-check them.

Try automating deployments to your lowest-level environment first, where you’ll be using that automation most frequently, then replicate that all the way up to production. If nothing else, this exercise highlights the differences between your environments and generates a list of tasks for standardizing them. As a bonus, standardizing deploys through automation reduces “server drift” within and between environments.

运维


AppDynamics 徽标 Datadog 徽标 Slack 徽标 Splunk 徽标New Relic 徽标 Opsgenie 徽标 Pingdom 徽标 Nagios 徽标 Dynatrace 徽标 Hosted Graphite 徽标 Sumo Logic 徽标

应用和服务器性能监控:

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

手动“置顶”一个框或者测试您的 API 都是不错的抽查方式。但要了解应用(和环境)的趋势和整体运行状况,您需要能够全天候监控和记录数据的软件。持续的可观察性是 DevOps 团队取得成功的一项关键功能。

您可以寻找与您的群组聊天客户端集成的工具,以便警报直接送达团队的房间或专门的事件室。

Jira Service Management 标志 Jira Software 标志Opsgenie 徽标 Statuspage 标志

事件、变更和问题跟踪:

开启 DevOps 团队之间协作的关键是确保他们所关注的工作内容一致。将事件上报后会怎样?它们是否与软件问题有关或者可以追溯到软件问题?执行变更时,这些变更是否会影响发布?

在不同系统中跟踪事件和软件开发项目成为开发和运营部门之间协作的最大阻碍。您可以寻找将事件变更问题和软件项目集成到同一平台的工具,以便更快速地发现和修复问题。

Observe


Application and server performance monitoring

AppDynamics logo DataDog logo Slack logo Splunk logoNew Relic logo Opsgenie logo Pingdom logo Nagios logo Dynatrace logo Hosted Graphite logo Sumo Logic logo

There are two types of monitoring that should be automated: server monitoring and application performance monitoring.

Manually “topping” a box or hitting your API with a test is fine for spot-checking. But to understand trends and the overall health of your application (and environments), you need software that is listening and recording data 24/7. Ongoing observability is a key capability for successful DevOps teams.

Look for tools that integrate with your group chat client so alerts go straight to your team’s room, or a dedicated room for incidents.

持续反馈


GetFeedback 徽标 Slack 徽标 Jira Service Management 标志 Pendo 徽标

客户会告诉您是否做了正确的事情,而您只需倾听即可。持续反馈包括定期收集反馈的文化和流程,以及从反馈中获取洞察信息的工具。持续反馈实践包括收集和审查 NPS 数据、客户流失调查、缺陷报告、支持工作单,甚至还有推文。在 DevOps 文化中,产品团队中的每个人都可以访问用户评论,因为它们有助于指导从发布规划到探索性测试环节的所有工作。

您可以寻找具备以下功能的应用:可将您的聊天工具与您最喜爱的调查平台集成,从而提供 NPS 式反馈。也可将 Twitter 和/或 Facebook 与聊天工具集成,以获得实时反馈。要深入了解来自社交媒体的反馈意见,投资一个可以使用历史数据拉取报告的社交媒体管理平台是非常值得的。

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

总之...


Atlassian 认为,拥有一个与开发和运营团队喜欢使用的工具集成的 DevOps 工具链至关重要。这就是我们构建可集成 171 多家领先第三方供应商,从而可让您在所用工具中做出最佳决策的 DevOps 平台的原因。这是因为 DevOps 不应从单个供应商处购买,而应是构建。

要开始使用,请免费试用 Atlassian 的 DevOps 解决方案


推荐阅读

将这些资源加入书签,以了解 DevOps 团队的类型,或获取 Atlassian 关于 DevOps 的持续更新。

Devops 示意图

DevOps 社区

Devops 示意图

DevOps 学习路径

地图插图

免费试用

注册以获取我们的 DevOps 新闻资讯

Thank you for signing up