建议收藏!2020 年必备的几个 DevOps 工具
来自:SegmentFault ,作者:徐九 链接:https://segmentfault.com/a/1190000022908614
开发和构建工具 自动化测试工具 部署工具 运行时 DevOps 工具 协作 DevOps 工具
开发和构建工具
源代码控制管理(SCM) 持续集成(CI) 数据管理
成熟度 - 该产品自2013年以来一直投放市场,并且非常稳定并且得到了很好的支持。 开源 - Gitlab的免费版没有削减开发团队所需的核心功能。每个付费层都提供了附加功能,这些附加功能可根据组织的规模和需求带来极高的价值。 易用的 CI — 市场上没有其他工具可以像Gitlab-CI一样直接将持续集成直接嵌入到您的SCM中。使用Docker构建进行临时构建的能力提供了无忧的构建作业,并且内置的报告使调试构建失败变得容易。无需复杂的集成和业务流程就可以对多种工具进行编排。 无限集成 - Gitlab提供了每个核心DevOps类别中所需工具的轻松集成。这使开发人员和操作人员在任何环境中都可以使用一个真实的来源来获取与其应用程序相关的信息。
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
数据库版本控制 - FlyWay允许您简单地创建数据库版本,跟踪数据库迁移以及轻松地前滚或后退架构更改,而无需某些定制解决方案。 二进制或内置 - 您可以选择在应用程序启动时或作为二进制可执行文件运行Flyway。在代码中使用此工具,以便它在启动时检查版本功能并运行适当的迁移,从而使数据库和应用程序版本保持同步。您也可以临时运行cmd行,从而在不重建整个应用程序的情况下为现有数据库提供了灵活性。
LiquiBase — Liquibase是相似的,实际上,如果有人在我的组织中工作过,那么我很乐意通过FlyWay对该工具进行标准化。 Flocker - 这可能仅适用于容器化的应用程序-在容器中运行数据库非常困难,必须精心计划才能成功执行。我建议将RDS之类的服务用于数据库,而不要尝试运行存储在容器中的关键数据。
自动化测试工具
单元测试 - 这是所有自动化测试的基础。就数量而言,与其他类型相比,您应该拥有最多的单元测试。这些测试应由软件开发人员编写和运行,以确保应用程序的一部分(称为“单元”)符合其设计并按预期运行。 组件测试 — 组件测试的主要目的是验证测试对象的输入/输出行为。这样可以确保测试对象的功能按照所需规范正确运行。 集成测试 — 这是测试阶段,在此阶段中,各个软件模块被组合在一起并作为一个整体进行测试。 端到端测试 - 此层是不言自明的。我们正在研究从头到尾的应用程序流程,并使其表现出预期的效果。
行为驱动的开发 — Cucumber用于BDD测试,它已成为一种入门测试框架(与传统的测试驱动开发相比)。 动态文档 - 记录您所做的事情总是很痛苦。由于您的测试被定义为代码,因此Cucumber测试会自动生成文档以进行匹配以确保它们始终保持同步。 支持 - 这里有很多工具可供选择,但是当情况变得严重时,您需要工具维护者的认真支持。黄瓜拥有足够的资金和支持结构来维持该工具的未来几年。
端到端测试工具
功能测试 负载测试
广泛的文档 - 此工具已经存在了一段时间,因此有许多在线资源可帮助您确定如何配置负载测试。 易于使用 — 尽管有多种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
开源 — 同样,很难敲响免费工具。社区支持是一流的。
AWS CloudFormation — 即使您仅在AWS云环境中工作,您也可能会在职业生涯中继续前进,而不是去那里。将您的技能和知识整合到一个平台中可能会有风险。此外,许多新的AWS服务通常在CloudFormation中可用之前作为Terraform模块提供。
运行时DevOps工具
X 即服务 编排 监控方式 日志记录
2020年排名第一的X-as-a-Service工具:Amazon Web Services
行业标准 - 如果您有在AWS中构建应用程序的经验,那么您基本上可以在任何地方找到工作。企业喜欢AWS,而创业公司喜欢AWS的低成本。 Free-Tier — 与其他所有功能相比,AWS的业务确实如此。让我使用该服务并查看其工作原理,然后再决定将数千美元投入可能有巨大陷阱的事物中。我从未为POC构建的任何产品都超过免费套餐限制。
Azure – 自最初发布以来,Azure已经走了很长一段路,值得称赞。但是,区分自身的需求已导致其对服务的名称进行了怪异的命名,而这些服务要难一点了-到底什么是“ blob存储”?尽管.NET代码在Microsoft生态系统中效果更好,但不太可能仅将.NET用于应用程序的各个方面。 Heroku — 简而言之,除了在Heroku上的个人项目外,我什么都不会运行。透明度不高,企业没有理由将其用作平台。这对于在博客中演示某些内容非常有用,但对于实际应用程序来说,非常感谢!
2020年排名第一的编排工具:OpenShift
内置的安全性 - 管理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这样易于使用的监视工具。这是一个SaaS,因此不必设置服务器组件也很不错。 端到端可见性 - 其他工具尝试监视应用程序的一个特定方面。无论是CPU利用率还是网络流量,所有这些层都可以协同工作,以使您的应用正常运行。New Relic使您能够组合所有数据以真实了解正在发生的事情。
Zabbix — Zabbix是我最喜欢的监视系统,但是由于缺乏向云原生环境和APM空间发展的能力,因此使其滞后。它仍然可以很好地监视传统的服务器基础结构,仅此而已。 DataDog - 此工具过于侧重于管理生产应用程序的过程视角,而对代码本身的关注不足。在真正的DevOps团队中,有开发人员参与生产,我们无需依靠繁琐的工具来提供世界一流的支持。
2020年排名第一的测井工具:Splunk
行业标准 —企业喜欢Splunk,他们也有钱为此付出代价。虽然初创企业可能难以证明其成本合理,但许多概念和技能可以转移到开源替代方案中。 可支持性 -简单地说,它可以正常工作。它具有许多默认值和即用型功能,因此您不必花费大量时间阅读文档并尝试使一些没有明确说明的内容能够正常工作。
ELK Stack - ElasticSearch,LogStash和Kibana,虽然似乎总是很酷,因为它们不向您收取使用费用,但随着日志集的增长和机上越来越多的应用程序的维护,它的确变得更加困难您的工具。与使用Splunk相比,我在构建任何类型的仪表板之前花了更多的时间来设置工具。
协作DevOps工具
问题跟踪 聊天操作 文献资料
2020年排名第一的问题跟踪工具:Jira
行业标准 — 同样,就像许多工具一样,Jira到处都有使用。小型团队可以使用便宜的许可证并获得所需的一切,而企业可以为任何人负担得起许可证。 集成 - 在这个领域处于领先地位并且快速增长意味着第三方工具会选择您首先构建本机集成,而它们只会增加您工具的价值,而Jira就是这种情况。我们可以与现成的列表中的所有其他工具集成,而无需进行任何定制。
Trello — Trello成为免费使用的看板工具,因此迅速流行。但是,一旦事情开始扩展,并且您从数十个问题扩展到数千个问题,Trello将变得难以导航,搜索和报告。 Pivotal Tracker - 在初创公司工作期间,我非常喜欢该工具。但是,他们更多地关注产品管理,而不是技术任务。尽管从Jira进行产品管理比较困难,但是仍然可以完成此过程,而不必获取完全独立的工具。
2020年排名第一的ChatOps工具:MatterMost
开源 - MatterMost的开源版本非常适合小型或大型团队。与Slack的免费层会丢失历史记录不同,您自己运行服务器意味着您拥有数据。 集成 - 因为API几乎100%基于Slack API,所以几乎所有Slacks集成都可以直接与MatterMost一起使用。
Slack - 松弛很棒,但是它们已经变得如此庞大,需要开始获利。他们业务的付费阶段即将到来,并且剥夺了Slack用来免费提供的许多价值,最关键的是聊天记录。 Microsoft Teams - 尝试将Microsoft产品与非Microsoft本地产品集成-祝您好运。这就是我要说的!
2020年排名第一的文档工具:Confluence
易于管理 - 大多数自托管工具的启动和运行可能有些复杂,并且大规模维护它们需要一些特定知识。开箱即用的Confluence服务器非常适合10个用户或10,000个用户。 插件- 尽管创建具有默认融合功能的漂亮且易于浏览的文档已经很不错了,但是拥有用于几乎所有内容的插件的能力释放了Wiki的潜力。
Read the docs — 非常适合开源公共代码,但永远不会考虑在这里存储关键的应用程序知识。 MarkDown — 尽管非常适合于记录有关我的代码的内容,但很难将体系结构,过程或其他类型的文档直接放入MarkDown格式中。 Jekyll — 在记录技术知识时,我并不想简单地构建一个新的静态站点,以便在每次更改时进行部署。简单的Confluence版本管理系统使内部文档的处理变得更加容易。
总结 2020 年最佳
开发和构建工具 自动化测试工具 部署工具 运行时工具 协作工具
评论