DevOps工具链

我们将着眼于帮助你实现DevOps目标的核心技术类别和特定技术。

规划

为什么对DevOps很重要?

工具示例:

· 共同目标

· 透明度

· 增强能力

问题追踪

GitLab

GitLab是一个基于web的DevOps生命周期工具。它提供了一个git存储库管理器,该管理器使用GitLab Inc.开发的开源许可证,提供了wiki、问题跟踪和CI/CD管道功能。

Tasktop

Tasktop 允许将所有这些工具添加到Tasktop支持的全部敏捷和应用生命周期管理(ALM)、项目组合管理(PPM) 和 ITSM工具中,从而实现整个生命周期前所未有的可视性。

CollabNet’s VersionOne

VersionOne 支持Scrum、Kanban、XP、SAFe和混合开发方法,使所有团队、项目、软件组合和企业的计划、跟踪和报告变得更加容易。

Pivotal Tracker

全球开发人员首选的敏捷项目管理工具,可围绕共享、优先级排序的积压工作进行实时协作。

Trello

Trello 是 Atlassian 旗下的一款基于网络的看板式列表应用程序。许多团队在计划个人冲刺工作时都会用到它。

Azure Boards

使用敏捷工具(包括Scrum Board、Kanban Board和适用于任何敏捷方法的仪表板)跟踪软件项目并制定更好的计划。同样,这些都是可视化工作、共享计划、跟踪进度并确保向目标前进的方法。

为什么对DevOps很重要?

· 客户响应

· 有限知识的浪费

· 反馈环节

工具示例:

Atlassian’s Jira

Jira 是 Atlassian 开发的专有问题跟踪产品,可进行错误跟踪和敏捷项目管理。

JetBrains’ YouTrack

一款基于浏览器的专有商业错误跟踪器、问题跟踪系统和项目管理软件。侧重于基于查询的问题搜索--具有自动完成、批量处理问题、自定义问题属性集等功能。

Zendesk

Zendesk 可让你轻松跟踪来自所有渠道的每个客户问题。包括 Uber 和 Airbnb 在内的许多公司都使用 Zendesk Support 作为他们的问题跟踪软件。

源代码管理控制

为什么对DevOps很重要?

·资产管理

· 限制运输浪费

· 增强团队能力

工具示例:

Git

Git 是一种分布式版本控制系统,用于跟踪软件开发过程中源代码的变更。它专为协调程序员之间的工作而设计,但也可用于跟踪任何文件集的变更。

GitHub

GitHub提供了Git的分布式版本控制和源代码管理功能,以及它自己的特性。

GitLab

GitLab 的版本控制功能可帮助你的开发团队共享、协作,并通过世界一流的源代码管理最大限度地提高工作效率。

Bitbucket

Bitbucket 是 Atlassian 旗下的一项基于网络的版本控制仓库托管服务,适用于使用 Mercurial 或 Git 修订控制系统的源代码和开发项目。

Subversion

Apache Subversion 是一种软件版本控制和修订控制系统,根据 Apache 许可以开源方式发布。软件开发人员使用 Subversion 来维护源代码、网页和文档等文件的当前和历史版本。

构建工具

为什么对DevOps很重要?

· 统一的包装

· 自动执行容易出错的活动

· 产生早期质量信号

工具示例:

Maven/Gradle

Maven 是一种构建自动化工具,主要用于 Java 项目。Maven 也可用于构建和管理用 C#、Ruby、Scala 和其他语言编写的项目。

Gradle 是一个开源的构建自动化系统,它基于 Apache Ant 和 Apache Maven 的概念,并引入了一种基于 Groovy 的特定领域语言,而不是 Apache Maven 用于声明项目配置的 XML 格式。

MSBuild

微软构建引擎(Microsoft Build Engine),又称 MSBuild,是一个免费的开源构建工具集,适用于托管代码和本地 C++ 代码,是 .NET Framework 的一部分。Visual Studio 依赖 MSBuild(反之亦然)。

Rake

Rake 是一款软件任务管理和构建自动化工具。它允许用户指定任务并描述依赖关系。你还可以在命名空间中对任务进行分组。

JFrog Artifactory

JFrog Artifactory是一种工具,用于存储构建过程的二进制输出,以便在发布和部署中使用。Artifactory支持多种包格式,如Maven、Debian、npm、Helm、Ruby、Python和Docker。

JFrog提供高可用性、复制、灾难恢复、可伸缩性,并可与许多本地和云存储产品协同工作。

Sonatype Nexus

Sonatype Nexus是一个存储库管理器。它允许你代理、收集和管理你的依赖项,这样你就不必经常处理jar集合了。它使你的软件易于分发。

在内部,你将构建配置为将构件发布到Nexus,然后其他开发人员可以使用这些构件。

NuGet

NuGet是.net的包管理器。NuGet客户端工具提供了生成和使用包的能力。

NuGet库是所有包作者和消费者使用的中心包存储库。

测试工具

为什么对DevOps很重要?

· 专注于内置的质量

· 创建对已部署工件的信心

工具示例:

JUnit

JUnit 是 Java 编程语言的单元测试框架。JUnit 在测试驱动开发的发展过程中发挥了重要作用,是单元测试框架系列(统称为 xUnit)中的一个,它起源于 SUnit。

http://xUnit.net

http://xUnit.net 是.NET Framework 的开源单元测试工具,由 NUnit 的原作者编写。

Selenium

Selenium 是一个用于测试网络应用程序的便携式框架。Selenium 为编写功能测试提供了一个回放工具,无需学习测试脚本语言。

Jasmine

Jasmine是一个JavaScript的开源测试框架。它的目标是在任何支持javascript的平台上运行,不干扰应用程序或IDE,并且具有易于阅读的语法。它深受其他单元测试框架的影响,比如Screw、Unit、JSSpec、JSpec、RSpec。

Cucumber

Cucumber 是一款支持行为驱动开发的软件工具。Cucumber BDD 方法的核心是其名为 Gherkin 的普通语言解析器。它允许用客户能理解的逻辑语言指定预期的软件行为。

持续集成与部署(CI/CD)

为什么对DevOps很重要?

· 反馈迅速

· 减少缺陷浪费和等待浪费

工具示例:

Jenkins

Jenkins 是一款免费的开源自动化服务器。Jenkins 有助于将软件开发过程中的非人为部分自动化,包括 CI 和促进 CD 的技术方面。它是一个基于服务器的系统,可在 Apache Tomcat 等 servlet 容器中运行。

CircleCI

CircleCI是世界上最大的共享CI/CD平台,也是代码从创意到交付的中心枢纽。

作为最常用的DevOps工具之一,CircleCI每天处理超过100万次构建,它可以独特地访问工程团队如何工作以及代码如何运行的数据。Spotify、Coinbase、Stitch Fix和BuzzFeed等公司都使用CircleCI来提高工程团队的工作效率,发布更好的产品,并更快地获得回报。

Travis CI

Travis CI 是一项托管 CI 服务,用于构建和测试托管在 GitHub 上的软件项目。Travis CI 为私有项目提供各种付费计划,并提供免费的开源计划。TravisPro 可在客户自己的硬件上定制部署专有版本。

Concourse

Concourse 是一个用 Go 编写的自动化系统。它最常用于 CI/CD,可扩展到从简单到复杂的任何自动化管道。

AWS CodePipeline

AWS CodePipeline是一个完全托管的CD服务,可帮助你自动化发布管道,以实现快速可靠的应用程序和基础架构更新。

CodePipeline基于你定义的发布模型,在每次发生代码变更时自动化发布过程的构建、测试和部署阶段。这使你能够快速可靠地交付特性和更新。

你可以轻松地将AWS CodePipeline与第三方服务(如GitHub)或你自己的自定义插件集成。使用AWS CodePipeline,你只需为使用的内容付费。没有预付费用或长期承诺。

Azure Pipelines

获得Linux、macOS和Windows的云托管管道。构建web、桌面和移动应用程序。部署到云或本地。

使用管道自动化你的构建和部署,这样你就可以花更少的时间在具体细节上,而将更多的时间用于创造性。

CD工具

为什么对DevOps很重要?

· 限制预生产库存

· 实现复杂管道自动化

· 围绕为客户创造价值统一团队

工具示例:

Spinnaker

Spinnaker是一个免费的开源CD软件平台,最初是由Netflix开发的,很快被Google选择并扩展。

Spinnaker是一个多云CD平台,用于快速、自信地发布软件更改。它结合了一个强大而灵活的管道管理系统,并集成了主要的云提供商。

Octopus Deploy

Octopus Deploy是一款自动化部署和发布管理工具,为全球领先的CD团队所采用。

Octopus 是一种工具集,可大幅简化任何 DevOps 流程,通过云或虚拟机对众多微服务或应用程序进行持续测试和部署。

AWS CodeDeploy

AWS CodeDeploy是一个完全托管的部署服务,可以自动将软件部署到各种计算服务,如Amazon EC2、AWS Fargate、AWS Lambda和你的本地服务器。

你可以使用AWS CodeDeploy自动化软件部署,从而消除了容易出错的手动操作。

配置管理工具

为什么对DevOps很重要?

· 执行一致性

· 将基础设施视为代码

工具示例:

Terraform

Terraform 是 HashiCorp 开发的一款开源基础设施即代码(IaC)软件工具。它使用户能够使用一种称为 Hashicorp 配置语言或 JSON 的高级配置语言来定义和配置数据中心基础设施。

BOSH

BOSH是一个统一了小型和大型云软件的发布工程、部署和生命周期管理的项目。BOSH可以在数百个虚拟机上提供和部署软件。它还可以在零到最小停机时间内执行监视、故障恢复和软件更新。

虽然BOSH是为部署Cloud Foundry而开发的,但它也可以用于部署几乎任何其他软件(例如Hadoop)。BOSH特别适合大型分布式系统。

此外,BOSH还支持多种基础设施即服务(IaaS)提供商,如VMware vSphere、谷歌云平台、亚马逊网络服务EC2、微软Azure、OpenStack和阿里云。有一个云提供商接口(CPI),允许用户扩展BOSH以支持其他IaaS提供商,如Apache CloudStack和VirtualBox。

Chef

Chef是一个配置管理工具,用于处理物理服务器、虚拟机和云中的机器设置。许多公司使用Chef软件来控制和管理他们的基础设施,包括Facebook、Etsy、Cheezburger和Indiegogo。

Chef是连续自动化软件的领导者,应用程序自动化的创新者,也是DevOps运动的创始人之一。Chef与全球1000多家最具创新性的公司合作,实现他们的数字化转型愿景,提供快速交付软件的实践和平台。

Ansible

Ansible 是一款开源软件供应、配置管理和应用程序部署工具。它可在许多类 Unix 系统上运行,既能配置类 Unix 系统,也能配置微软 Windows 系统。它包含自己的声明式语言来描述系统配置。

Puppet

Puppet提供了定义系统需要哪些软件和配置的能力,然后在初始设置后保持指定的状态。

你可以使用类似于Ruby的声明性领域特定语言(DSL)来定义特定环境或基础结构的配置参数。Puppet通过使用一个名为Facter的实用程序来发现有关系统的信息,该实用程序是在安装Puppet软件包时安装的。

Puppet master是一个系统,它通过使用清单来管理它所控制的所有节点的重要配置信息。

主控制的节点是那些安装了Puppet并正在运行Puppet代理的节点,Puppet代理是一个守护进程。agent收集节点的配置信息发送给Puppet master。然后,Puppet主机根据应该如何配置节点执行编目。每个节点使用该信息对自身应用任何必要的配置更新。

Puppet通过使用拉模式工作,其中代理定期轮询主机以检索特定于站点和特定于节点的配置。在此基础设施中,托管节点运行Puppet代理应用程序,通常作为后台服务。

Google Cloud Deployment Manager

Google Cloud Deployment Manager 是一项基础架构管理服务,可让你轻松创建、部署和管理 Google Cloud Platform 资源。

构建属于自己的学习平台

为什么对DevOps很重要?

· 自动化友好型

· 可观测运行时软件

工具示例:

Amazon Web Service

亚马逊网络服务(AWS)是一个安全的云服务平台,提供计算能力、数据库存储、内容交付和其他功能,帮助企业扩展和发展。

简单地说,AWS 可以为你提供以下服务:

· 在云中运行web和应用服务器来托管动态网站

· 安全地将所有文件存储在云上以便你可以从任何地方访问它们

· 使用托管数据库(如 MySQL、PostgreSQL、Oracle 或 SQL Server)存储信息

· 使用内容分发网络(CDN)在全球范围内快速分发静态和动态文件

· 向客户批量发送电子邮件

Microsoft Azure

Microsoft Azure是微软创建的一种云计算服务,用于通过微软管理的数据中心构建、测试、部署和管理应用程序和服务。

微软Azure(以前称为Windows Azure)是微软的公共云计算平台。它提供一系列云服务,包括计算、分析、存储和网络。用户可以选择这些服务来开发和扩展新的应用程序,或者在公共云中运行现有的应用程序。

Google Cloud Platform

谷歌云平台是由谷歌提供的一套云计算服务,它运行在谷歌内部用于其最终用户产品(如谷歌搜索、Gmail和YouTube)的相同基础设施上。

谷歌云平台是为在网络上部署和操作应用程序提供计算资源的供应商。它的专长是为个人和企业提供一个构建和运行软件的场所,并使用网络连接该软件的用户。

通过谷歌的云计算服务,包括数据管理、混合云和多云,以及人工智能和机器学习,迎接你的业务挑战。

Pivotal Cloud Foundry

Pivotal Cloud Foundry (PCF)是一个开源、多云应用平台即服务(PaaS),由501组织Cloud Foundry基金会管理。该软件最初由VMware开发,但被转移到Pivotal software。随着2019年底VMware收购Pivotal,它被重新引入VMware。

PCF是一个用于部署、管理和持续交付应用程序、容器和功能的多云平台。PCF允许开发人员快速部署和交付软件,而无需管理底层基础设施。

Heroku

Heroku是一个支持多种编程语言的云PaaS。作为最早的云平台之一,Heroku从2007年6月开始开发,当时它只支持Ruby编程语言,但现在支持Java、Node.js、Scala、Clojure、Python、PHP和Go。

Heroku是一个基于容器的云PaaS。开发人员使用Heroku来部署、管理和扩展现代应用程序。我们的平台优雅,灵活,易于使用,为开发者提供了最简单的途径来获得他们的应用。

Container schedulers

容器调度器的主要任务是在最合适的主机上启动容器并将它们连接在一起。它必须通过自动故障转移来处理故障,并且当单个实例需要处理/计算太多数据时,它需要能够扩展容器。

三个最流行的容器调度器是Docker Swarm、Apache Mesos和Google Kubernetes。

·Docker Swarm

Docker Swarm是Docker开发的一个容器调度器。这种由Docker管理的集群解决方案的开发提供了使用标准Docker API等优势。

·Apache Mesos

Mesos的目的是构建一个可扩展的、高效的系统,支持大量当前和未来的框架。这也是主要问题:像Hadoop和MPI这样的框架是独立开发的——因此不可能在框架之间进行细粒度的共享。

Mesos的主张是添加一个瘦资源共享层,为框架提供访问集群资源的公共接口。Mesos将调度控制权委托给框架,因为许多框架已经实现了复杂的调度。

根据你想要在集群上运行的作业类型,存在四种类型的框架,其中一些框架具有像Marathon这样的本机Docker支持。在Mesos 0.20.0中增加了对Docker容器的支持。

我们将重点关注Mesos与Marathon的使用,因为它是一个由Mesosphere积极维护的框架,提供了许多调度方面的功能,如约束、健康检查、服务发现和负载平衡。

ZooKeeper帮助Marathon查找Mesos主节点的地址——有多个实例可用来处理故障。

马拉松启动、监控和缩放容器。Mesos master发送分配给节点的任务,并在节点有空闲CPU/RAM时向Marathon发出要约。Mesos从服务器运行容器并提交可用资源列表。

·Google Kubernetes

Kubernetes是Docker容器的编排系统,使用标签和pod的概念将容器分组为逻辑单元。pod是Kubernetes和其他两种解决方案之间的主要区别——它们是一组组合在一起的容器,形成一个一起部署和调度的服务。与基于亲和性的容器协同调度(如Swarm和Mesos)相比,这种方法简化了集群的管理。

Kubernetes调度器的任务是监视具有空PodSpec的pod.NodeName属性一个值,用于在集群的某个位置调度容器。

与Swarm和Mesos相比,这是一个不同之处,因为Kubernetes允许开发人员通过定义PodSpec来绕过调度器。运行pod.nodenname。

调度器使用谓词和优先级来定义pod应该运行哪些节点。可以使用新的调度器策略配置覆盖这些参数的默认值。

通过使用命令行标志- policy-config-file -指向一个JSON文件,该文件描述了在启动Kubernetes时要使用的谓词和优先级,调度器将使用管理员定义的策略。

监控和记录工具

为什么对DevOps很重要?

· 快速恢复

· 响应能力

· 透明度

· 事件发生时人员参与程度有限

工具示例:

ELK Stack

ELK Stack 是 Elasticsearch、Logstash 和 Kibana 这三种开源产品的集合。它们都由 Elastic 公司开发、管理和维护。

· E代表ElasticSearch,用于存储日志

· L代表Logstash——既用于发送日志,也用于处理和存储日志

· K代表Kibana——一个可视化工具(一个网络界面)

Datadog

Datadog是一种用于云规模应用程序的监控服务,通过基于saas的数据分析平台提供服务器、数据库、工具和服务的监控。

Datadog应用程序性能监控(APM或跟踪)为你提供了对应用程序性能的深入了解——从用于监控关键指标(如请求量和延迟)的自动生成仪表板,到单个请求的详细跟踪——以及日志和基础设施监控。

当向应用程序发出请求时,Datadog可以看到跨分布式系统的跟踪,并向你显示有关该请求发生了什么的系统数据。

New Relic

New Relic致力于开发基于云的软件,帮助网站和应用程序所有者跟踪其服务的性能。它用于应用程序性能监控(APM)的软件分析产品,提供有关网络应用程序性能和最终用户体验满意度的实时和趋势数据。

Prometheus

Prometheus 是一款用于事件监控和警报的免费应用软件。它在时间序列数据库中记录实时指标,采用 HTTP 拉取模式,具有灵活的查询和实时警报功能。

Prometheus 服务器的工作原理是 "抓取"(scraping),即调用其配置为监控的各个节点的指标端点。它定期收集这些指标并存储在本地。节点通过 Prometheus 服务器采集的端点公开这些指标。

Zipkin

Zipkin是一个分布式追踪系统。它有助于收集排除服务体系结构中的延迟问题所需的定时数据。功能包括收集和查找这些数据。

如果在日志文件中有跟踪ID,则可以直接跳转到它。否则,你可以根据服务、操作名称、标签和持续时间等属性进行查询。将为你总结一些有趣的数据,例如在服务中花费的时间百分比以及操作是否失败。

Azure Monitor

Azure Monitor通过提供全面的解决方案来收集、分析来自云和本地环境的遥测数据并对其进行处理,从而最大限度地提高应用程序和服务的可用性和性能。

它可以帮助你了解应用程序的执行情况,并主动识别影响它们的问题及其所依赖的资源。

以下是使用 Azure Monitor 的几个示例:

· 利用 Application Insights 检测和诊断跨应用程序和依赖关系的问题

· 使用 Azure 虚拟机监控器和 Azure 容器监控器关联基础架构问题

· 使用Log Analytics深入研究监控数据以进行故障排除和深度诊断

· 通过智能警报和自动操作支持大规模运营

· 使用 Azure 仪表盘和工作簿创建可视化内容

通讯工具

为什么对DevOps很重要?

· 连接各团队

· 限制等候浪费

· 加强合作

工具示例:

Slack

Slack是由Slack Technologies开发的专有即时通讯平台。

Slack本质上是整个公司的聊天室,旨在取代电子邮件,成为你沟通和分享的主要方式。它的工作空间允许你通过群组讨论的渠道组织通信,并允许私人消息在一个地方共享信息、文件等。

Microsoft Teams

Microsoft Teams是一个统一的通信和协作平台,它结合了持久的工作场所聊天、视频会议、文件存储和应用程序集成。

Teams是一种基于聊天的协作工具,它为全球、远程和分散的团队提供了通过公共空间协同工作和共享信息的能力。你可以利用文档协作、一对一聊天、团队聊天等很酷的功能。

Google Hangouts

Google Hangouts是谷歌开发的一款通讯软件产品。Hangouts最初是Google+的一个功能,2013年成为一个独立的产品,当时谷歌也开始将Google+ Messenger和Google Talk的功能整合到Hangouts中。

Hangouts Chat是一种与组织内人员沟通的强大方式。与一个或多个同事开始发送消息,创建一个与一组人进行持续对话的空间,并使用机器人来帮助自动化你的工作。聊天可以在你的电脑浏览器以及安卓和iOS的移动应用程序中运行。

Zoom

Zoom视频通信公司是一家远程会议服务公司,总部位于加利福尼亚州圣何塞。它提供了一种远程会议服务,集视频会议、在线会议、聊天和移动协作于一体。

Skype更适合寻求整体业务解决方案的团队。Zoom更适合经常进行视频聊天和会议的团队。然而,这两种工具都不是专门为远程工作而构建的。

知识共享的工具

为什么对DevOps很重要?

· 减少知识浪费

· 提高新员工的工作效率

· 限制重复错误

工具示例:

GitHub Pages

GitHub Pages 是一种静态网站托管服务,可直接从 GitHub 上的资源库中获取 HTML、CSS 和 JavaScript 文件,并可选择通过构建流程运行这些文件,然后发布网站。你可以在 GitHub Pages 示例集中查看 GitHub Pages 网站的示例。

Confluence

Confluence是由Atlassian开发和发布的协作软件程序。Atlassian用Java编程语言编写了Confluence,并于2004年首次发布。

Confluence是一个协作wiki工具,用于帮助团队有效地协作和共享知识。使用Confluence,你可以捕获项目需求,将任务分配给特定用户,并在Team calendar插件的帮助下一次管理多个日历。

Jekyll

Jekyll是一个简单的、支持博客的静态站点生成器,适用于个人、项目或组织站点。它由GitHub的联合创始人Tom Preston-Werner用Ruby编写,并在开源MIT许可下发布。

Jekyll是一个解析引擎,捆绑在Ruby gem中,用于从动态组件构建静态网站,如模板、局部、液态代码等。Jekyll被称为“一个简单的、支持博客的静态站点生成器”。

Google Sites

Google Sites是Google提供的一个结构化的wiki和网页创建工具。Google Sites宣称的目标是让任何人都能够创建简单的网站,支持不同编辑者之间的协作。

共同为你的团队、项目或活动创建引人入胜的高质量网站。这些网站在每个屏幕上看起来都很棒,从桌面到智能手机——所有这些都不需要学习设计或编程。

总结

我涵盖了所有这些不同的类别,它们共同帮助你进行DevOps。其中任何一个都是有帮助的,但我认为所有这些都是你所需要的,你需要以一种对团队可持续的方式不断向客户交付价值,并帮助你脱颖而出。

我介绍了整个 DevOps 工具链--如计划工具、问题跟踪工具、源控制管理、构建和测试代码并取得成功、持续集成和部署源代码、管理配置、使用云平台,然后是监控和日志记录,最后才是沟通和知识共享等软性工作。

希望你喜欢这篇文章。DevOps 是一种令人兴奋的工作方式。它不会是唯一的方式,甚至不会是最好的方式。未来可能会有更好的方式出现,但就目前而言,它似乎是团队集体合作的一种好方法,可以以一种对团队成员来说可持续的方式交付重要的价值,同时还能帮助他们专注于客户,而不是 IT 效率--也不仅仅是内部事务,而是速度、学习和真正重要的事情,因为公司现在正根据他们在技术方面的优势进行区分。

谢谢你读到这里。我希望你喜欢这篇文章。

关注微信公众号【赛希咨询】,了解更多精彩内容。

  • 10
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值