立即开始使用最好的DevOps工具!
DevOps革命终于席卷了世界,DevOps工具变得非常流行。根据Google趋势,对“ DevOps工具”的请求数量一直在增长,并且这种趋势还在持续。
DevOps方法论涵盖了整个软件开发生命周期,因此专家可以从多种工具中进行选择。但是,正如您所知,没有任何一种工具可以成为所有人的通用工具。但是,某些解决方案提供了如此广泛的功能,几乎可以处理任何任务。
让我们将DevOps工具分解为几类,并将其与类似物进行比较:
- 开发和构建工具
- 测试自动化工具
- 组织部署的工具
- 运行时工具
- 协作工具。
成功且智能的DevOps实施包括上面列出的所有五个组的工具。分析项目中的当前工具集,以免遗漏CI / CD管道中的重要元素。
开发和构建工具
这是CI / CD管道堆栈的核心。一切都从这里开始!此类别中最好的工具可以管理多个事件流,并轻松与其他产品集成。
在开发生命周期的这一阶段,有三组工具:
- 版本控制系统(SCM)
- 持续集成(CI)
- 数据管理
在2020年,GIT仅在积极方面证明了自己,因此您的SCM工具应具有完美的GIT支持。对于CI,先决条件是能够在隔离的容器环境中执行和运行程序集。关于数据管理,它需要具有根据应用程序版本更改数据库架构和维护数据库的能力。
SCM + CI工具#1
优胜者: GitLab和GitLab-CI
毫无疑问,2020年DevOps周期中最好的工具是GitLab,它肯定会在不久的将来保持创新领导地位。
GitLab的主要功能是提供对Git存储库的舒适管理。 Web界面直观易用。 GitLab提供免费版本所需的一切,并提供SaaS和内部部署(使用您自己的资源来托管软件)。
没有其他SCM工具直接在您的存储库中使用持续集成(CI),并且GitLab已经使用了很长时间。要使用GitLab-CI,必须将.gitlab-ci.yml文件添加到源代码的根目录,并且对项目的任何更改都将根据您指定的内容触发操作。值得一提的是,GitLab和GitLab-CI是持续集成(CI-as-code)领域的领导者。
主要好处
- 可靠性-该产品自2013年以来已投放市场;稳定; 维护良好。
- 开源-GitLab的免费版本不限制开发团队所需的核心功能。付费服务包为规模和需求不同的公司提供了其他有用的功能。
- 引人入胜的CI-市场上没有其他工具像GitLab-CI一样直接将持续集成直接集成到SCM中。使用Docker提供了一个轻松,沙盒化的构建,并且内置的报告使调试(调试)变得容易。我们不需要同时进行多个工具的复杂集成和管理。
- 无限集成-GitLab可轻松集成所需的所有DevOps工具。这使开发和维护团队可以在任何环境中使用有关其应用程序的单一信息源。
竞争对手
奋斗了,但没有赢得胜利
这一类别中还有其他流行的工具,但它们不如GitLab。原因如下:
GitHub“对于小型企业和开发的早期阶段来说,这是一个很棒的SaaS版本控制系统。对于需要在自己的网络上保留IP地址的大型公司,唯一的GitHub解决方案是.OVA虚拟机,而没有高可用性支持。这使得很难维护内部部署,此外.OVA仅适用于中型企业,否则服务器将在重负载下简单崩溃。缺少GitHub Actions(直到最近,尚未正式发布)或CI-as-code意味着您必须选择一个单独的CI工具,然后管理此集成。最后,GitHub比任何GitLab版本都要昂贵。
詹金斯-尽管默认情况下,Jenkins被视为连续集成工具中的标准,但它始终缺乏版本控制功能。原来,您正在使用Jenkins以及某种SCM工具。GitLab可以同时做这件事太困难了。平庸的UX设计不适用于现代Web应用程序,并且还有很多不足之处。
BitBucket / Bamboo-我必须承认这是一个自动失败者:为什么当GitLab完全依靠自己完成所有操作时,为什么要使用两个工具。BitBucket Cloud支持GitLab-CI / GitHub Action,但是没有一家公司比一家初创公司更容易实现它。本地BitBucket服务器甚至不支持BitBucket管道!
数据管理工具#1
获奖者: FlywayDB
在Web应用程序的开发中,通常会忽略数据库自动化。为应用程序的新版本将更改部署到数据库模式的想法带有延迟。模式更改通常会导致添加或重命名列或表。如果应用程序的版本与架构的版本不匹配,则应用程序可能会崩溃。此外,由于存在两个不同的系统,因此在更新应用程序时组织数据库更改可能会遇到挑战。FlyWayDB解决了所有这些问题。
主要好处
- 数据库版本控制-Flyway允许您创建数据库版本,跟踪数据库迁移,轻松迁移或回滚架构更改,而无需任何其他工具。
- — : Flyway . Flyway , . cmd line ad-hoc, .
竞争对手
参加了战斗,但没有获胜
,这方面的工具并不多。让我们看一下其中的一些:
LiquiBase -Liquibase与FlywayDB类似。如果我的团队中有一位对Liquibase有更多经验的专家,我想将它设置在Flyway之上。
Flocker-可能仅适用于容器化应用程序。为了成功启动容器中的数据库,必须对所有内容进行完善的计划。我建议对数据库使用RDS(关系数据库服务),并且不建议在容器中存储敏感信息。
测试自动化工具
让我们开始基于测试金字塔对测试自动化工具进行分类的讨论。
测试金字塔(测试)有4个级别:
- - — . - . -, , ( «») .
- — — / . , .
- — , .
- — . , , .
由于单元测试和组件测试仅由开发人员完成,并且通常取决于语言,因此我们不会在DevOps域中评估这些工具。
#1集成测试工具
获奖者:黄瓜
Cucumber将规格和测试文档合并为一个有效文档。规格始终是最新的,因为它们由Cucumber自动测试。如果您想从头开始构建自动化测试框架并在Web应用程序中模拟用户行为,那么带有Java和Cucumber BDD的Selenium WebDriver是在项目中学习和实现Cucumber的好方法。
主要好处
- BDD- (Behavior Driven Development — “ ” “ ”) — Cucumber BDD-, .
- — — ! , Cucumber , , .
- — , Cucumber , .
竞争对手
参加了战斗,但没有获胜。
在其他框架和特定于技术的工具中,只有Cucumber可以被视为通用解决方案。
端到端测试工具
进行端到端测试时,有两个重点要注意:
- 功能测试
- 压力测试。
在功能测试中,我们检查所需的东西是否确实在发生。例如,当我单击SPA(单页应用程序)的某些元素时,填写表格并选择“提交”,数据将出现在数据库中,并显示消息“成功!”。
对于我们来说,检查在相同场景下工作的一定数量的用户是否可以正确处理也很重要。
缺少这两种类型的测试将是您的CI / CD管道的重大缺陷。
端到端测试工具#1。功能测试
获奖者: SoapUI Pro
自从基于SOAP的Web服务成为标准以来,SoapUI一直在API测试领域。尽管我们不再创建新的SOAP服务,并且该工具的名称没有更改,但这并不意味着它没有发展。SoapUI为构建自动化的功能后端测试提供了一个出色的框架。测试可以轻松地与持续集成工具组合在一起,并用作CI / CD管道的一部分。
主要好处
- 详细的文档-SoapUI进入市场已有很长时间,因此已经创建了许多在线资源来帮助您了解如何设置测试。
- 易于使用-尽管该工具支持用于测试API的多种协议,但是SoapUI具有用于多种服务的通用接口,从而使编写测试变得更加容易。
竞争对手进行了
搏击,但没有击败
Selenium-该组中的另一个出色工具。如果您要构建和运行基于Java的应用程序,我建议使用它。但是,如果您要使用多种技术构建一个完整的Web应用程序,则对于非Java组件而言,它将变得很麻烦。
端到端测试工具#1。压力测试
优胜者: LoadRunner
说明:当需要对应用程序的每个元素进行负载测试时,只有LoadRunner可以执行此任务。是的,起初有点昂贵且困难,但是LoadRunner是使我作为技术架构师完全相信新代码将在极端压力下工作的唯一工具。另外,我认为是时候让LoadRunner负责开发团队了,而不是测试团队。
主要好处
- 广泛的文档-LoadRunner进入市场已有很长时间,因此已经创建了许多在线资源来帮助您了解如何设置负载测试。
- 协议支持-Load Runner支持从ODBC到AJAX,HTTPS以及您的应用程序可以使用的任何其他重要协议。我们尽量不要使用多种工具进行负载测试,因为这只会使过程复杂化。
竞争者
参加了争夺战,但没有
再赢,这个领域没有很多通用工具,因此最好的解决方案是在任何环境下以任何技术工作的最佳解决方案。
部署工具
部署工具可能是开发中了解最少的方面。如果操作团队无法深入了解应用程序代码和功能,则很难使用此类工具。对于开发人员而言,管理部署是一项新职责,因此他们对此类工具还没有足够的经验。
首先,让我们将所有部署工具分为三个子类别:
- 工件管理
- 配置管理
- 部署。
工件管理工具#1
优胜者: Nexus
Nexus Artifact存储库支持几乎所有主要技术,从Java到NPM再到Docker。我们可以使用此工具来存储所有使用过的工件。代理远程软件包管理器还可以通过使软件包更易于构建来大大加快CI的构建过程。另一个优点是能够通过阻止不安全的开源程序包(它们可以充当攻击媒介)来完整了解多个软件项目中使用的所有程序包。
主要好处
- 技术支持-可靠的产品;维护良好。
- 开源-免费版本不限制开发团队所需的核心功能。
配置管理工具#1
获胜者: Ansible
Ansible是领导者,其原因很简单:无国籍。以前,此类工具专注于管理配置状态。启动后,此类工具已收到所需的配置,将尝试更正应用程序的当前配置。使用新方法时,仅存在无状态组件。新版本的代码是用于替换现有代码的工件。这可以被视为一种短暂的短期环境。
主要好处
- 无状态-Playbook从部署计算机启动,并在目标服务器上执行。我不担心通过使用Packer之类的工具来创建可部署对象的远程对象的状态。
- — CentOS, Ansible RedHat. , .
- Molecule ( Ansible) — — , , . Molecule Ansible , , CI/CD-, .
- YAML — , YAML . , , , DevOps-, — .
竞争对手奋斗了,
但没有击败
OpsCode Chef-我以食谱开发人员的身份开始了DevOps的职业生涯。当然,Ruby和Chef在我心中非常珍贵,但是它们根本无法解决现代的基于云的无状态应用程序的问题。OpsCode Chef是用于更传统应用程序的出色工具,在本文中,我们着眼于未来。
木偶-木偶从未有过很多粉丝,特别是与Chef和Ansible相比。它非常适合配置和使用硬件,但是缺少对Web应用程序的现代配置管理支持。
部署工具#1
优胜者: Terraform
Terraform解决了将您的基础架构描述为代码的问题,从网络组件到完整的服务器映像。该产品自发布以来已经走了很长一段路,拥有大量的插件和如此强大的社区,它肯定会在任何部署场景中为您提供帮助。支持任何类型的环境(本地,云中或其他地方)的能力都是无与伦比的。最后,最新版本在HCL中提供了与其他任何传统编程语言相同的大多数逻辑功能和类-开发人员可以快速掌握并轻松掌握Terraform。
主要好处
- 与环境无关-Terraform使用充当Terraform代码,所有API和内部逻辑之间的接口的功能来与基础架构提供程序进行通信。这意味着我将只学习一种工具,然后就可以在任何地方工作。
- 开源-很难击败免费工具!最高级别的社区支持。
竞争者
参加了这场争论,但没有击败
AWS CloudFormation-即使您仅在AWS云中工作,您的下一份工作也可能使用其他工具。将您所有的时间和精力仅用于一个平台是一个短视的决定。此外,许多新的AWS服务在CloudFormation中可用之前通常可以作为Terraform模块使用。
运行时工具
任何开发项目的最终目标都是将应用程序投入生产。在DevOps世界中,我们希望获得有关环境可能存在的所有问题的完整信息,并且还希望最大程度地减少人工干预。在开发应用程序时,选择正确的运行时工具集对于实现必杀技至关重要。
运行时工具的子类别:
- X即服务(XaaS)
- 编排
- 监控
- 记录。
X即服务#1工具
优胜者: Amazon Web Services
亚马逊一直是云计算领域的领导者,但并不仅限于此:面向开发人员的各种新服务令人眼花azz乱。将任何技术和模板转移到AWS,它将被构建和启动。该工具的成本非常合理:将其与在自己的数据中心中组装,管理和维护设备进行比较。免费版本允许您在花钱之前进行试验并做出正确的决定。
主要好处
- 流行-如果您有在AWS上构建应用程序的经验,则可以在任何地方工作。企业喜欢AWS,并且初创公司也欣赏它的低成本。
- — , AWS . , , , - . .
竞争对手
奋斗了,但没有击败
Azure-自首次发布以来,Azure已经走了很长一段路,这是值得称赞的。然而,与同行不同的渴望导致了服务的奇怪名称,这通常会使工作变得复杂。Blob存储是什么意思?尽管.NET代码在Microsoft生态系统中的性能更好,但是不太可能只对应用程序的每个组件都使用.NET。
Heroku-由于可靠性和透明性水平低,我除了在Heroku上运行任何个人项目外都不会做任何事情,因此公司不应将其用作平台。Heroku非常适合在博客上演示某些内容,但可以实际使用-“不,谢谢!”。
编排乐器1号
优胜者: OpenShift
您可能正在应用程序堆栈中使用Docker或其他容器。无服务器应用程序很棒,但它们不一定适合所有体系结构。在没有业务流程框架的情况下运行容器将无法正常工作。 Kubernetes核心(K8s)在安全性和工具方面无与伦比。 OpenShift是唯一基于Kubernetes的平台,可以构建Source2Image,支持自动pod部署以及跟踪和监视。 OpenShift可以在本地,云或本地以及云中同时运行。
主要好处
- — K8s . ! , OpenShift, .
- « » — K8s, , OpenShift . , CI/CD, , . - , , API, , . K8s, OpenShift Kubernetes. !
竞争对手奋斗了,
但没有击败
Docker Swarm -Docker Swarm试图通过摆脱很多事情来简化K8。这对小型应用程序非常有用,但不适用于企业应用程序。此外,AWS ECS之类的解决方案采用了类似的方法,但是使与我也可以与之交互的其他服务(Lambda,IAM等)的工作变得更加容易。
监控工具1
优胜者:新遗物
New Relic的早期版本做得很好-应用程序性能监视(APM)。现在,它是功能齐全的监视工具,可以监视服务器,容器,数据库性能,最终用户体验监视以及应用程序性能监视。
主要好处
- 易于使用-当我是一名系统工程师时,我使用了许多监视工具,但从未遇到过像New Relic这样简单易用的工具。它是SaaS,因此您不需要自己安装。
- — . , , , . New Relic , .
竞争对手
参加了战斗,但没有赢得
Zabbix-我的第一个也是最喜欢的监视系统,但是由于缺乏云技术和监视APM应用程序性能的开发,该系统一直存在。Zabbix在传统服务器基础结构监视方面仍然表现良好,仅此而已。
DataDog-过多地侧重于管理应用程序生产环境的过程,而不是代码本身。通过涉及开发人员的DevOps团队,我们不必依靠复杂的工具来提供一流的支持。
记录工具#1
获奖者: Splunk
Splunk很难竞争!长期以来,他一直是伐木的领导者,并继续努力做到最好。借助本地和SaaS产品,您可以在任何地方使用Splunk。主要缺点是它的价格:Splunk仍然相当昂贵!
主要好处
- 流行-企业喜欢Splunk,公司有钱购买它。
- 尽管初创公司试图弥补成本,但由于拥有开源的同类产品,许多功能都可以解决。
- 可维护性-简而言之,Splunk可以正常工作并且表现出色。它具有许多默认值和可供使用的功能。无需浪费时间阅读文档并尝试使Splunk工作或解密任何内容。
竞争对手进行了奋斗,
但没有击败
ELK Stack(ElasticSearch,LogStash和Kibana) -这些工具似乎很受欢迎,因为您甚至不必出售使用它们的肝脏。但是,随着日志集的增加和船上应用程序数量的增加,工作变得越来越困难。与Splunk相比,在使用ELK Stack之前,我花了更多的时间来设置工具箱,然后再创建任何仪表板。
协作工具
DevOps主要与组织内部的文化变革有关。购买任何工具都不会在一夜之间改变习惯做法,但无疑可以促进协作和新的交互方式。
协作工具子类别:
- 任务追踪
- 聊天操作
- 文档。
问题追踪器1
优胜者:吉拉
吉拉(Jira)保持领先地位,尽管在该领域的竞争不断加剧。Jira令人难以置信的灵活性使开发和维护团队可以管理项目工作和冲刺任务。使用敏捷术语的内置标准可以轻松地从传统的工作方式转变为更高效的流程。
主要好处
- 受欢迎程度-与许多其他工具一样,Jira几乎在所有地方都使用。小型团队使用更便宜,更实惠的版本并获得所需的一切,而大型公司可以负担得起更高的许可证。
- — Jira — . , Jira , , . Jira , , .
竞争对手
一脚踢,但不要
打败Trello -Trello借助其免费的看板工具迅速获得了普及。但是,一旦流程扩展,并且您从数十个任务转移到数千个任务,Trello将很难导航,搜索和报告。
Pivotal Tracker-在初创公司工作时,我非常喜欢这个工具。但是,Pivotal Tracker更侧重于产品管理而不是技术任务。尽管在Jira中管理产品有些复杂,但仍可以在此处实现它而无需使用其他工具。
ChatOps工具#1
优胜者: MatterMost
说明:也许是我收藏中最大的惊喜,这是个好消息!MatterMost通过从以前的乐器中汲取最好的东西而获得了普及,但其中包括本地。这对公司而言非常重要:MatterMost允许您控制数据,也帮助将其与在内部工作的工具集成。我们不再需要走出防火墙检查工作聊天室。
主要好处
- 开源-MatterMost的开源版本非常适合大中型团队。与免费的Slack计划(删除消息历史记录)不同,运行自己的服务器意味着您可以保存所有数据。
- 集成-由于API几乎100%基于Slack API,因此几乎所有Slack集成都可以直接与MatterMost一起使用。
竞争者
参加了战斗,但没有击败
Slack -Slack很酷,但是这些人成长如此之快,以至于他们开始寻求利润。业务投资回收阶段即将到来,这剥夺了其主要价值:Slack免费提供服务;免费版最重要的缺点是删除了聊天记录。
Microsoft团队-尝试将Microsoft产品与非Microsoft集成...祝您好运!这就是我要说的关于该工具的全部内容!
文档工具1
优胜者:合流
无论使用何种工具,创建和维护高质量的技术文档都是一个复杂的过程。尽管最近市场上有很多SaaS文档工具,但对于我来说,将关键应用程序的技术文档存储外包给第三方还是很困难的。存储数据和文档比本地存储更可取,这就是Confluence解决方案。
主要好处
- 易于操作-大多数独立工具的设置和操作可能会有些困难,并且需要一些知识来进行维护。Confluence Server开箱即用,适合10或10,000个用户。
- 插件-感谢Confluence提供了便捷的开箱即用导航功能,并且能够为几乎所有内容添加插件为Wiki提供了潜力。
竞争者
奋斗了,但没有赢得胜利
阅读文档-开源很酷,但是甚至不考虑在这里存储关键知识。
MarkDown-非常适合于记录代码,但是由于MarkDown的特定格式,在这里很难托管体系结构,过程或其他类型的文档。
Jekyll-在记录技术知识时,我不想创建一个新的静态站点,该站点将在每次更改时展开。Confluence的简单版本控制系统极大地简化了内部文档。
总结一下
市场上实际上有数百种DevOps工具,这使得很难知道应该使用哪些工具以及何时应该实施它们。遵循此简单指南,为完整的CI / CD管道选择DevOps工具。
不要忘记从所有五个类别中选择工具:
- 开发和构建工具
- 测试自动化工具
- 部署工具
- 运行时工具
- 协作工具。
最高推荐:自动化一切!
感谢Zach Shapiro!