vlambda博客
学习文章列表

2022 年最佳 DevOps 工具和解决方案:比较 DevOps 软件


内容


    • 什么是 DevOps?

    • DevOps 文化的原则是什么?

    • DevOps 的商业利益是什么?

    • DevOps 团队使用什么工具?


什么是 DevOps?

这种构建软件的方法现在已成为常态,大多数公司都认识到需要快速迭代并经常发布新代码。DevOps 是理念、实践和工具的组合,它以更快的节奏取代了漫长的产品开发周期。这个想法是,这种工作方式可以更容易地响应客户需求和市场变化。


软件工程师和运营团队一起工作来支持这个过程,开发人员承担以前分配给其他团队的一些任务。质量保证和安全团队还与此模型中的开发人员更紧密地合作。


DevOps 文化的原则是什么?

以下是塑造 DevOps 团队的实践:

  • 自动化

  • 合作

  • 持续部署

  • 连续的提高

  • 以客户为中心的行动

团队定期部署更新和新功能,并监控环境以确保一切正常运行。基础设施即代码是 DevOps 的另一个关键要素。IaC 取代了配置基础设施的手动过程,使对大型部署进行通用更改变得更加容易。IaC 也是 CI/CD 流程的重要组成部分。


DevOps 的业务优势是什么?

使用 DevOps 方法的公司已经看到改进的通信、提高的效率、更好的可靠性和可扩展性以及成本节约。较小的部署会创建快速的反馈周期并改进整个过程。较小的批量大小也降低了部署新软件的总体风险。


DevOps 团队使用什么工具?

将软件开发转变为这种模型需要文化转变和一组特定的工具来支持工作。有几类 DevOps 工具:

  • 应用程序性能监控

  • 工件管理

  • CI/部署自动化

  • 配置管理

  • 容器管理

  • 部署和服务器监控

  • 测试自动化

  • 版本控制

本综述包括一些专门针对一两个功能的功能,而列表中的其他功能则更为全面。


最好的 DevOps 软件

Ansible

Ansible[https://www.ansible.com/] 是一个 IT 自动化引擎,可以处理云供应、配置管理、应用程序部署和服务内编排等任务。Ansible 专为多层部署而设计,可以对整个 IT 架构进行建模。

该平台使用 YAML,一种人类可读的数据序列化语言。YAML 主要用于配置文件和存储或传输数据的应用程序。它有一个最小的语法。

Ansible 还使用剧本来编排基础架构拓扑的多个级别。据该公司称,这些剧本可用于:

  • 让机器进出负载均衡器

  • 设置一些变量,提示其他变量并在未设置时设置默认值

  • 使用一个命令的结果来决定是否运行另一个

为了安全起见,Ansible 支持密码,但专为带有 ssh-agent 或 Kerberos 的 SSH 密钥而设计。

Ansible 模块可以用任何可以返回 JSON 的语言编写。有几个 Python API 用于扩展 Ansible 的连接类型,并且有数百种集成,包括 Atlassin、AWS、Cisco、Google Cloud Platform、Splunk、VMware 和 Windows。

Ansible 是一个由 Red Hat 赞助的开源社区项目。

联系红帽了解定价信息。


Azure 开发运维

此 Microsoft 产品[https://azure.microsoft.com/en-us/services/devops/]涵盖整个应用程序生命周期,并提供版本控制、报告、需求管理、项目管理、自动化构建、测试和发布管理功能。据该公司称,该平台支持将开发人员、项目经理和贡献者聚集在一起的协作文化和一系列流程。
该软件可在云端或本地使用。此外,客户可以使用通过 Web 浏览器或集成开发环境客户端提供的集成功能,或选择以下一项或多项独立服务:

  • Repos:用于 Git 存储库或用于源代码控制的 Team Foundation 版本控制

  • 管道:为应用程序的持续集成和交付构建和发布服务

  • 板:一套敏捷工具,用于通过看板和 Scrum 方法规划和跟踪工作、代码缺陷和问题

  • 测试计划:多种测试工具,包括手动/探索性测试和持续测试

  • Artifacts:一种用于从公共和私有来源共享包(如 Maven、npm、NuGet 等)并将包共享集成到开发管道中的服务

Azure DevOps 还包括协作工具,例如可自定义的仪表板、内置 wiki 和可配置的通知。除了开发自定义扩展外,该平台还支持扩展和与其他服务的集成,包括 Campfire、Slack 和 Trello。

Microsoft 为某些 DevOps 服务提供免费试用,而每位用户的费用从每位用户每月 6 美元起。


AWS 开发运营

AWS 拥有一套灵活的服务,可以更轻松地提供和管理基础设施[https://aws.amazon.com/devops/]、部署代码、自动化软件发布以及监控应用程序和基础设施性能。每项服务都已准备好供现有 AWS 客户使用,并且旨在从几个实例或数千个实例进行扩展。客户可以通过 AWS 命令行界面或通过 API 和 SDK 使用每项服务。DevOps 解决方案和工具涵盖 CI/CD、微服务、基础架构即代码、监控和日志记录、平台即服务和版本控制。


AWS 提供免费套餐,其中包括 100 多种产品和三种免费优惠:

  • 短期免费试用

  • 新客户免费 12 个月

  • 对新老客户始终免费

有权访问 AWS 免费套餐的客户每个运行 Linux 和 Windows 的 t2.micro 实例最多可以使用 750 个实例小时。Linux 和 Windows t2.micro 实例的使用是独立计算的。AWS 免费套餐适用于公司全球区域的参与服务,包括 26 个已启动区域、84 个可用区、17 个本地区域和 310 多个接入点。

AWS 还提供有关 DevOps 服务的指南和教程,包括设置 CD 管道和将 Git 存储库迁移到 AWS 以及培训和认证计划,例如开发人员学习路径。

AWS 为其服务提供免费套餐,并提供现收现付、订阅选项和基于数量的折扣。


Docker 开发运维

Docker[https://www.docker.com/]是容器管理的首选之一,具有免费层和高级层。Docker Engine 托管容器。容器是一个标准的软件单元,它打包代码及其所有依赖项,以便应用程序可以在任何环境中运行。Docker 容器映像包含应用程序所需的一切:代码、运行时、系统工具、系统库和设置。容器可以与虚拟机一起使用,以在部署和管理应用程序方面创造灵活性。

平台上运行三种类型的容器:

  • 标准

  • 轻的

  • 安全的

对于开发人员来说,Docker 有一套命令行接口插件来构建、测试和共享容器化的应用程序和微服务。Compose 为开发人员简化了云流程和工具链的代码,并允许工程师在单个文件中定义复杂的堆栈并使用单个命令运行它。

其他开发人员服务包括 Build 为多个 CPU 和 OS 架构创建映像,并在私有注册表或 Docker Hub 和 Context 上共享它们,这使得在多个 Docker 和 Kubernetes 环境之间切换变得容易。Docker Hub 可以轻松查看存储在多个存储库中的图像,并通过自动构建和在每次成功推送到 Docker Hub 注册表后触发的操作来配置完整的 CI/CD 容器工作流。

Docker 提供免费的个人账户、每年 60 美元的专业账户、每年 300 美元的团队账户和每位用户每月 21 美元的商业账户。


GitLab

这家开放核心公司提供 DevOps 软件[https://about.gitlab.com/],用于在单个应用程序中开发、保护和操作软件。软件公司可以使用 GitLab 通过史诗、组和里程碑进行投资组合规划和管理,以跟踪进度。灵活的平台可以提高项目从开始到结束的可见性,并更容易在整个交付生命周期中跟踪问题。该平台还具有以下组件:

  • 创建:用于管理来自单个分布式版本控制系统的代码和项目数据

  • 验证:用于自动化测试、状态分析安全测试、动态分析安全测试和代码质量分析

  • 包:用于管理容器和包注册表以使用 GitLab 源代码管理和 CI/CD 管道

  • 安全:将安全性集成到应用程序开发中并提供许可证合规性

  • 发布:用于自动发布和交付具有零接触 CD 的应用程序,该 CD 内置于管道中

  • 配置:用于管理与 Kubernetes 强集成的应用程序环境

  • 监控:用于降低事件的严重性和频率

  • 保护:用于原生云保护、统一策略管理、容器扫描以及容器网络和主机安全

GitLab 为个人用户提供免费选项,每位用户每月 19 美元的高级帐户和每位用户每月 99 美元的终极选项。


Jenkins 

Jenkins 是一个用 Java 编写的开源 CI/CD 自动化工具。[https://www.jenkins.io/]据该公司称,该平台对管理微服务特别有帮助,2019 年已知安装量超过 200,000 个。Jenkins 在 Windows、MacOS 和 Linux 以及 Docker 容器中运行。该软件是独立的,可以通过其包含 1,800 多个条目的插件架构进行扩展。

Jenkins 还支持一个广泛的用户社区,让刚接触该平台的人更容易使用。社区中有一些子小组,涵盖编码、与其他用户会面、改进文档和为自动化测试做出贡献。对于有兴趣与其他 CI/CD 用户和贡献者进行社交的人们,有区域聚会和在线聚会。

Jenkins 还提供了一个公共的、社区驱动的路线图,该路线图收集和跟踪所有领域的计划,包括功能、基础设施、文档和社区。未来的项目包括 IDE 中的管道开发、用户界面返工和更好的远程监控。

詹金斯是免费使用的。


Jira

Jira[https://www.atlassian.com/software/jira]最初是作为错误跟踪器构建的,但该平台已扩展为管理从需求和测试用例到敏捷软件开发的所有类型的项目。Jira 是 Open DevOps 的骨干,这是 Atlassian 的开放式集成工具链。Jira 与第一方和第三方工具集成,包括 Bitbucket、GitHub、GitLab、Confluence 和 Opsgenie。

Jira 的 DevOps 解决方案可以在多个工具上创建自动化工作流并提供实时状态更新。该软件还支持路线图要求。

Jira 与 Hipchat 和 Slack 以及许多其他类型的第三方软件集成。它是高度可定制的,对技术和商业用户都有好处。

最多 10 人的团队可以免费使用 Jira。标准账户为每位用户每月 7.50 美元,高级账户为每位用户每月 14.50 美元,企业版为自定义报价。


Kubernetes

Kubernetes 是一个开源容器编排系统[https://kubernetes.io/],用于自动化计算机应用程序的部署、扩展和管理。Kubernetes 还可以帮助开发人员构建分布式应用程序,并使管理应用程序的可扩展基础架构变得更加容易。谷歌在 2014 年开源了 Kubernetes 项目。

Kubernetes 允许 DevOps 专业人员:

  • 快速且可预测地部署容器化应用程序

  • 动态扩展容器化应用程序

  • 向容器化应用程序推出新功能

  • 专门针对容器化应用程序优化硬件

Kubernetes 集群包括一组称为节点的工作机器,它们运行容器化应用程序。工作节点托管代表应用程序工作负载组件的 Pod。控制平面管理集群中的工作节点和 Pod。其他 Kubernetes 组件包括:

  • 标签和选择器:用于在 Kubernetes 中识别和分组资源的键值对。

  • 控制器:将实际集群状态驱动到所需集群状态的协调循环。

  • 服务:一种识别应用程序使用的元素的方法(名称解析、缓存等)。

  • API 服务器:使用 JSON over HTTP 为 Kubernetes API 提供服务。

  • 调度程序:可插拔组件,根据资源可用性选择 pod 应在哪个节点上运行。

  • 控制器管理器:运行 Kubernetes 控制器的进程,例如 DaemonSet 和 Replication。

  • Kublet:负责各个节点的运行状态(启动、停止、维护应用容器)。

  • Kube-proxy:支持服务抽象的网络代理和负载均衡器的实现。

  • cAdvisor:监控和收集资源使用情况的代理。

Pure Kubernetes 是免费的,可以从 GitHub 下载。将 Kubernetes 部署到公共云中的系统或集群会产生托管费用。


Maven

Maven 是一个构建自动化工具[https://maven.apache.org/]。Maven 的目标是帮助开发人员了解整个软件开发过程并:

  • 简化构建过程

  • 提供统一的构建系统

  • 提供优质项目信息

  • 鼓励更好的开发实践

开发人员可以使用 Maven 来管理这些进程:

  • 依赖项

  • 分配

  • 文档

  • 报告

  • 发布

  • 软件配置管理

Maven 是用 Java 编写的,用于构建用 C#、Ruby、Scala 和其他语言编写的项目。Maven 使用其项目对象模型和一组插件构建一个项目。

作为一个开源项目,Maven 依靠活跃的用户社区来提出改进建议、报告缺陷、交流用例和编写文档。有几个邮件列表和一个 Slack 工作区。
Maven 是开源的并且可以免费使用。


Puppet

开发人员使用这个工具来管理和自动化服务器的配置[https://puppet.com/]
Puppet 的主要优点是基础架构的一致性以及部署和更改的自动化。与一般的 DevOps 实践一样,Puppet 需要采用一组特定的概念和实践,包括:

  • 基础设施即代码:结合软件开发和运营的 DevOps 的基础

  • 幂等性:重复应用代码以保证系统达到所需状态并每次都获得相同结果的能力

  • 敏捷方法:在增量工作单元中工作和重用代码的实践

  • Git 和版本控制:跟踪代码更改的系统。

Puppet 在代理服务器架构中进行配置,其中主节点控制一个或多个托管代理节点的配置信息。服务器和代理使用 SSL 证书通过 HTTPS 进行通信。Puppet 包含一个用于管理证书的内置证书颁发机构。

Puppet 用户通过使用 Puppet 的特定领域语言编写代码来定义基础设施系统的所需状态。Puppet 代码是声明性的。

编写基础架构代码后,Puppet 会自动执行使系统进入所需状态并将其保持在该状态的过程。该平台使用 Puppet 主服务器来存储代码,并使用 Puppet 代理将代码转换为命令并在目标系统上执行。

联系 Puppet 获取定价信息。


selenium

这个开源自动化测试套件[https://www.selenium.dev/]支持跨不同浏览器和平台的快速、可重复的 Web 应用程序测试。该软件套件具有三个主要组件:

  • WebDriver:一组特定于语言的绑定,用于驱动浏览器在许多环境中测试、扩展和分发脚本

  • IDE:Chrome、Firefox 和 Edge 插件,将记录和回放与浏览器的交互,以帮助自动化辅助探索性测试

  • 网格:用于在多台机器上分发和运行测试并从中心点管理多个环境以在大量浏览器和操作系统上进行测试的系统。

WebDriver 是 W3C 推荐的,这意味着主要的浏览器供应商都支持它并致力于改进浏览器和控制代码。这会导致跨各种浏览器的行为更加统一,从而使自动化脚本更加稳定。

Selenium 是开源的并且可以免费使用。


Splunk

Splunk[https://www.splunk.com/]有助于提高应用交付的速度、质量和业务影响,并提供交付生命周期所有状态的实时洞察。该公司的 DevOps 产品包括:

  • 可观察性云:全栈分析驱动的监控服务

  • 待命:自动化事件管理路由、协作和审查

  • 基础设施监控:大规模实时跟踪服务器、容器和应用程序的性能

  • APM:具有全保真分布式跟踪的微服务和应用程序问题的疑难解答程序

  • RUM:一种通过前端用户监控来衡量端到端用户体验的工具

Splunk 为每项服务提供免费试用。

Splunk 2021 年对 525 位 IT 领导者和开发人员的调查发现了可观察性的几个好处:

  • 容器和编排的改进视图

  • 更快地识别根本原因

  • 过去 12 个月发布的新产品数量增加


根据该公司的调查,除了这些指标之外,高可观察性成熟度还与现代应用程序复杂环境中更好的可见性、更快的数字化转型以及更快的根本原因识别和问题修复相关。