建议收藏!2020 年必备的几个 DevOps 工具
开发和构建工具
自动化测试工具
部署工具
运行时 DevOps 工具
协作 DevOps 工具
开发和构建工具
源代码控制管理(SCM)
持续集成(CI)
数据管理
2020年排名第一的SCM + CI工具:Gitlab和Gitlab-CI
主要优势:
成熟度 - 该产品自2013年以来一直投放市场,并且非常稳定并且得到了很好的支持。
开源 - Gitlab的免费版没有削减开发团队所需的核心功能。每个付费层都提供了附加功能,这些附加功能可根据组织的规模和需求带来极高的价值。
易用的 CI - 市场上没有其他工具可以像Gitlab-CI一样直接将持续集成直接嵌入到您的SCM中。使用Docker构建进行临时构建的能力提供了无忧的构建作业,并且内置的报告使调试构建失败变得容易。无需复杂的集成和业务流程就可以对多种工具进行编排。
无限集成 - Gitlab提供了每个核心DevOps类别中所需工具的轻松集成。这使开发人员和操作人员在任何环境中都可以使用一个真实的来源来获取与其应用程序相关的信息。
竞争对手:
还有其他工具在此领域也很流行,但是它们不如Gitlab。原因如下:
GitHub - GitHub 一直是小型和早期开发商店的出色 SaaS 源代码管理系统。但是,对于需要在网络中保留其IP的大型企业,GitHub 的唯一选择是.OVA不支持高可用性的虚拟机。这使其难以维护 on-prem,并且只能在中型组织中运行,然后服务器本身才开始崩溃。它缺少 GitHub Actions(直到最近,但仍不在本地版本中)或CI-as-Code,这意味着您始终需要带上自己的CI工具并管理该集成。最后,它比任何 Gitlab 定价都昂贵。
Jenkins - 尽管Jenkins已经成为持续集成工具的默认标准,但它始终缺少源代码控制元素。意味着,您将始终使用Jenkins 和 SCM工具。当像 GitLab 这样的工具同时提供这两种功能时,这简直是不必要的复杂。它可怕的UX使得现代Web应用程序有很多不足之处。
BitBucket/Bamboo - 我不得不说,这是一个自动失败者,考虑到您需要两种工具来完成 Gitlab 的一项工作。尽管 BitBucket 云支持 Gitlab-CI / GitHub Action功能,但没有一家公司(规模超过一家初创公司)可以轻易采用它。用于本地的 BitBucket 服务器甚至不支持 BitBucket 管道!
2020年排名第一的数据管理工具:FlywayDB
竞争对手:
LiquiBase - Liquibase 是相似的,实际上,如果有人在我的组织中工作过,那么我很乐意通过 FlyWay 对该工具进行标准化。 Flocker - 这可能仅适用于容器化的应用程序-在容器中运行数据库非常困难,必须精心计划才能成功执行。我建议将 RDS 之类的服务用于数据库,而不要尝试运行存储在容器中的关键数据。
自动化测试工具
单元测试 - 这是所有自动化测试的基础。就数量而言,与其他类型相比,您应该拥有最多的单元测试。这些测试应由软件开发人员编写和运行,以确保应用程序的一部分(称为“单元”)符合其设计并按预期运行。 组件测试 - 组件测试的主要目的是验证测试对象的输入/输出行为。这样可以确保测试对象的功能按照所需规范正确运行。 集成测试 - 这是测试阶段,在此阶段中,各个软件模块被组合在一起并作为一个整体进行测试。 端到端测试 - 此层是不言自明的。我们正在研究从头到尾的应用程序流程,并使其表现出预期的效果。
2020年排名第一的集成测试工具:Cucumber
Cucumber 将规范和测试文档合并为一个有凝聚力的有效文档。由于它们是由 Cucumber 自动测试的,因此您的规格始终是最新的。如果您想开始构建 Web 自动化测试框架并在 Web 应用程序上模拟用户行为,那么带有 Java 和 Cucumber BDD 的 Selenium WebDriver 是在项目中学习和实现 Cucumber 的好方法。
主要优势:
行为驱动的开发 — Cucumber用于BDD测试,它已成为一种入门测试框架(与传统的测试驱动开发相比)。 动态文档 - 记录您所做的事情总是很痛苦。由于您的测试被定义为代码,因此Cucumber测试会自动生成文档以进行匹配以确保它们始终保持同步。 支持 - 这里有很多工具可供选择,但是当情况变得严重时,您需要工具维护者的认真支持。黄瓜拥有足够的资金和支持结构来维持该工具的未来几年。
竞争对手:
在这个领域中有许多框架和特定于技术的工具,但是只有 Cucumber 接近于“一刀切”的解决方案。
端到端测试工具
功能测试 负载测试
2020年排名第一的端到端测试工具 — 功能:SoapUI Pro
广泛的文档 - 此工具已经存在了一段时间,因此有许多在线资源可帮助您确定如何配置负载测试。 易于使用 — 尽管有多种API测试工具可用,但拥有一个用于多种服务的接口可以使构建测试变得简单。
Selenium - Selenium是该领域的另一个出色工具。如果您正在构建和运行基于Java的应用程序,则建议使用它。但是,如果您要使用多种技术来处理一个完整的Web应用程序,那么对于非Java语言的用户来说可能会有些笨拙。
2020年排名第一的端到端测试工具 — 负载测试:LoadRunner
广泛的文档 - 该工具已经存在了一段时间,因此有许多在线资源可以帮助您确定如何配置负载测试。 协议支持 - 从ODBC到AJAX,再到HTTPS以及您的应用程序可能在某处使用的其他晦涩协议,LoadRunner支持该协议。我们要避免串接多个负载测试工具-这只会增加复杂性。
部署工具
构件管理 配置管理 部署方式
2020年排名第一的制品管理工具:Nexus
技术支持 - 该产品自2013年以来一直投放市场,并且非常稳定且得到了很好的支持。 开源 - Gitlab的免费版本没有削减开发团队需要的核心功能。每个付费层均提供附加功能,这些附加功能可带来最大价值,具体取决于组织的规模和需求。
2020年排名第一的配置管理工具:Ansible
无状态 - Ansible剧本是从操作员机器上运行的,并命中服务器目标。我不在乎远程对象的状态,这使得使用Packer之类的工具来构建可部署对象变得更加容易。 开源 - 和CentOS一样,Ansible也由RedHat维护。该企业及其高级支持人员可以帮助维护社区,并确保高质量,易于使用的模块。 分子测试 — 因为配置管理和其他任何东西一样都是代码,所以如果不对其进行测试,我们将无所不能。用于测试Ansible角色的分子框架可以无缝地工作,以确保我们的按代码配置质量一样高,并遵循与应用程序代码相同的CI / CD管道。 YAML — 与其他工具相比,YAML更加容易使您头脑清醒。由于配置管理对于采用DevOps的任何人来说通常都是新事物,因此这使其成为关键卖点。
OpsCode Chef - 我以厨师食谱开发人员的身份开始了DevOps生涯。露比和厨师很亲密,我的心。但是,它们根本无法解决当今无状态,云原生应用程序的问题。对于更传统的遗留应用程序来说,这是一个很好的工具,但是本文将重点放在未来。 Puppet — Puppet从未成长为一个庞大的社区,特别是与Chef and Ansible相比。它非常适合配置和裸机,但不支持Web应用程序类型的配置管理。
2020年排名第一的部署工具:Terraform
Terraform解决了从网络组件到实际服务器映像定义基础架构即代码的问题。自最初发布以来,它已经走了很长一段路,并建立了庞大的插件社区和支持社区,以帮助您解决可能遇到的几乎所有部署场景。支持本地,云中或其他任何类型的环境的能力是首屈一指的。最后,最新版本在HCL中提供了许多与其他任何传统编程语言相同的逻辑功能和类,从而使开发人员可以轻松学习和学习。
主要优势:
不受云/环境影响 - Terraform利用提供的资源作为Terraform代码与与基础架构提供商进行通信所需的所有API和后端逻辑之间的接口。这意味着我可以学习一种工具,并且能够在任何地方工作。
开源 — 同样,很难敲响免费工具。社区支持是一流的。
竞争对手:
AWS CloudFormation — 即使您仅在AWS云环境中工作,您也可能会在职业生涯中继续前进,而不是去那里。将您的技能和知识整合到一个平台中可能会有风险。此外,许多新的AWS服务通常在CloudFormation中可用之前作为Terraform模块提供。
运行时 DevOps 工具
X 即服务 编排 监控方式 日志记录
2020年排名第一的编排工具:OpenShift
您可能在应用程序堆栈中的某处使用了Docker或容器。无服务器应用程序很棒,但它们不能适合所有的架构模式。在没有业务流程平台的情况下运行容器根本行不通。从安全性和工具角度来看,Core Kubernetes带来了很多需求。OpenShift是唯一拥有Kubernetes平台的平台,它具有Source2Image构建,pod中的部署自动化以及甚至可追溯性和监视功能。它可以在本地,云中或同时在两者中运行。
主要优势:
内置的安全性 - 管理K8安全性几乎需要博士学位。必须仔细考虑并考虑所有细节。默认情况下,OpenShift所采用的安全机制减少了开发人员的工作量,并为他们的应用程序提供了更安全的平台。
多合一解决方案 – 与默认不包含负载平衡工具的香草K8不同,OpenShift拥有一切。我可以使用它来托管我的容器,构建容器,运行CI / CD工具,协调外部流程,管理机密等等。尽管GUI仍然需要做更多的工作,但API优先的方法意味着一切都可以编写脚本,并且与K8的其他GUI不同,它使学习Kubernetes的基础知识变得更加简单,而无需首先获得该学位!
竞争对手:
Docker Swarm - Docker swarm尝试通过删除大量内容来简化K8。这对于较小的应用程序非常有用,但对于企业应用程序则根本不起作用。此外,AWS ECS之类的服务采用了类似的方法,但是使我可能正在与之交互的其他服务(Lambda,IAM等)的使用变得更容易。
2020年排名第一的监控工具:New Relic
New Relic的早期发行版确实做得非常好-APM监视。现在,它是一套完整的监视工具,使我可以监视服务器性能,容器性能,数据库性能,最终用户体验监视,当然还有APM监视。
易用性 - 我在担任系统工程师时曾使用过许多监视工具,但从未遇到过像New Relic这样易于使用的监视工具。这是一个SaaS,因此不必设置服务器组件也很不错。 端到端可见性 - 其他工具尝试监视应用程序的一个特定方面。无论是CPU利用率还是网络流量,所有这些层都可以协同工作,以使您的应用正常运行。New Relic使您能够组合所有数据以真实了解正在发生的事情。
Zabbix — Zabbix是我最喜欢的监视系统,但是由于缺乏向云原生环境和APM空间发展的能力,因此使其滞后。它仍然可以很好地监视传统的服务器基础结构,仅此而已。 DataDog - 此工具过于侧重于管理生产应用程序的过程视角,而对代码本身的关注不足。在真正的DevOps团队中,有开发人员参与生产,我们无需依靠繁琐的工具来提供世界一流的支持。
协作 DevOps 工具
DevOps首先是组织内部的文化变革。虽然购买工具不会一夜之间改变文化,但无疑可以帮助培养与同事合作的新方法。
协作工具子类别为:
问题跟踪
聊天操作
文献资料
2020年排名第一的问题跟踪工具:Jira
行业标准 — 同样,就像许多工具一样,Jira到处都有使用。小型团队可以使用便宜的许可证并获得所需的一切,而企业可以为任何人负担得起许可证。 集成 - 在这个领域处于领先地位并且快速增长意味着第三方工具会选择您首先构建本机集成,而它们只会增加您工具的价值,而Jira就是这种情况。我们可以与现成的列表中的所有其他工具集成,而无需进行任何定制。
Trello — Trello成为免费使用的看板工具,因此迅速流行。但是,一旦事情开始扩展,并且您从数十个问题扩展到数千个问题,Trello将变得难以导航,搜索和报告。 Pivotal Tracker - 在初创公司工作期间,我非常喜欢该工具。但是,他们更多地关注产品管理,而不是技术任务。尽管从Jira进行产品管理比较困难,但是仍然可以完成此过程,而不必获取完全独立的工具。
2020年排名第一的ChatOps工具:MatterMost
说明:这可能是2020年这份清单上最大的惊喜,这是一件好事!MatterMost通过使用以前最好的工具,但引入了本地部署而获得了普及。对于企业来说,这是巨大的,因为它可以控制数据,还可以帮助与本地工具集成-我们不再需要为了新的事物而走出防火墙。
主要优势:
开源 - MatterMost的开源版本非常适合小型或大型团队。与Slack的免费层会丢失历史记录不同,您自己运行服务器意味着您拥有数据。
集成 - 因为API几乎100%基于Slack API,所以几乎所有Slacks集成都可以直接与MatterMost一起使用。
竞争对手:
Slack - 松弛很棒,但是它们已经变得如此庞大,需要开始获利。他们业务的付费阶段即将到来,并且剥夺了Slack用来免费提供的许多价值,最关键的是聊天记录。
Microsoft Teams - 尝试将Microsoft产品与非Microsoft本地产品集成-祝您好运。这就是我要说的!
2020年排名第一的文档工具:Confluence
无论使用哪种工具,都很难创建和维护高质量的技术文档。尽管最近有许多SaaS文档工具进入市场,但我很难接受将有关关键应用程序的敏感技术文档存储给第三方。我需要将数据和文档保留在本地,这就是Confluence为我所做的。
主要优势:
易于管理 - 大多数自托管工具的启动和运行可能有些复杂,并且大规模维护它们需要一些特定知识。开箱即用的Confluence服务器非常适合10个用户或10,000个用户。
插件- 尽管创建具有默认融合功能的漂亮且易于浏览的文档已经很不错了,但是拥有用于几乎所有内容的插件的能力释放了Wiki的潜力。
竞争对手:
Read the docs — 非常适合开源公共代码,但永远不会考虑在这里存储关键的应用程序知识。
MarkDown — 尽管非常适合于记录有关我的代码的内容,但很难将体系结构,过程或其他类型的文档直接放入MarkDown格式中。
Jekyll — 在记录技术知识时,我并不想简单地构建一个新的静态站点,以便在每次更改时进行部署。简单的Confluence版本管理系统使内部文档的处理变得更加容易。
总结 2020 年最佳
市场上实际上有数百种DevOps工具。试图浏览应使用哪些以及何时实施它们可能会令人不知所措。遵循此简单指南,为完整的CI / CD管道选择DevOps工具堆栈。
将工具分为以下五个关键领域:
开发和构建工具
自动化测试工具
部署工具
运行时工具
协作工具
链接:https://segmentfault.com/a/1190000022908614