DevOps工具链全接触

译文
开发 前端
本文将向您介绍DevOps的整个工具链,其中包括:规划、问题跟踪、源代码管理、构建、测试代码、持续集成和部署、管理配置、监控和记录、交流、以及知识共享。

[[338663]]

【51CTO.com快译】

众所周知,DevOps的目标是分阶段推进软件的开发进程,通过持续迭代与改进,进而敏捷地交付客户满意的软件产品。那么常言道:“工欲善其事,必先利其器。”好的工具对于项目团队来说,可以起到如虎添翼的效果。本文将向您介绍DevOps的整个工具链,其中包括:规划、问题跟踪、源代码管理、构建、测试代码、持续集成和部署、管理配置、监控和记录、交流、以及知识共享。

规划

规划在DevOps中的重要性体现在如下三个方面:

  • 设定共同的目标
  • 提高透明度
  • 提前赋权

可用于规划的工具包括:

GitLab

GitLab是基于Web的DevOps生命周期工具。它提供了基于Git存储库的管理器。通过由GitLab开发的开源许可证,它可以提供Wiki、问题跟踪、以及CI/CD管道等功能。用户可以通过它自带的工具进行实际规划,或是查看工作范围。

Tasktop

Tasktop允许将各种现有工具添加到,由Tasktop所支持的应用生命周期管理(ALM)、PPM和ITSM工具中,从而在整个生命周期中实现可视化和敏捷性。

CollabNet’s VersionOne

VersionOne支持Scrum、Kanban、XP、SAFe、以及混合开发方法。它能够轻松地实现横跨所有团队、流程、软件产品组合、以及企业计划的跟踪和报告。

Pivotal Tracker

可方便身处各地的开发人员通过敏捷的项目管理工具,实现共享待办事项的优先级,以及开展实时的协作。

Trello

Trello是一种基于Web的Kanban风格的列表制作(list-making)应用。许多团队在计划单个工作冲刺(sprints)时都会用到它。

Azure Boards

Azure Boards可使用包括Scrum板、Kanban板、以及仪表板在内的敏捷工具,来跟踪软件项目,并使用敏捷方法进行更好的规划。用户可以使用Azure Boards来实现可视化工作,共享计划,跟踪进度,以及确保方法的正确性。

问题跟踪

问题跟踪在DevOps中的重要性体现在如下三个方面:

  • 客户的响应能力
  • 突破有限的知识线索
  • 提供反馈回路

可用于问题跟踪的工具包括:

Atlassian’s Jira

Jira是由Atlassian开发的问题跟踪专用产品,可被用于错误跟踪和敏捷项目管理等场景中。

JetBrains’s YouTrack

YouTrack是由JetBrains开发的、基于商业浏览器的、专用错误与问题跟踪系统。同时,它也是一款项目管理软件。YouTrack通过自动化完成,问题批量处理,自定义问题属性集与工作流等功能,来实现基于查询的问题搜索。

Zendesk

Zendesk使您可以轻松地从多个渠道跟踪每一个客户问题。像Uber和Airbnb之类的公司,都在使用Zendesk作为他们的问题跟踪软件。

源代码控制

源代码控制的重要性体现在如下三个方面:

  • 管控资产
  • 避免无效的代码上传
  • 给团队赋能

可用于源代码控制的工具包括:

Git

作为分布式版本控制系统,Git可被用于在软件开发的过程中,跟踪源代码的更改。为协调程序员之间的工作而设计的Git,能够跟踪文件的更改,数据的完整性,以及对分布式非线性工作流提供支持。

GitHub

GitHub通过自带的各项功能,提供了针对Git的分布式版本控制和源代码管理。

GitLab

GitLab可实现对源代码的版本管理,帮助开发团队共享、协作、并提高生产力。

Bitbucket

由Atlassian带来的、基于Web的Bitbucket,是一种版本控制库类型的托管服务。它可以被用于Mercurial或Git之类版本控制系统的源代码和开发项目场景中。

Subversion

持有Apache开源许可的Subversion是一个软件版本控制系统。软件开发人员可以使用Subversion,来维护源代码、网页、以及文档的当前版本和历史版本。

构建工具

构建工具在DevOps中的重要性体现在如下三个方面:

  • 封装一致性
  • 自动执行各种易错的活动
  • 初步判断质量水平

可用于构建的工具包括:

Maven/Gradle

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

Gradle是一个开源的自动化构建系统。它基于Apache Ant和Apache Maven的概念,引入了基于Groovy的域特定(domain-specific)语言,而不像Apache Maven那样使用XML形式,来声明项目的配置。

MSBuild

Microsoft Build Engine(也称MSBuild)是用于代码托管,以及本机C++代码的免费开源构建工具集。同时,它也是.NET Framework的一部分,能够与Visual Studio进行联动。

Rake

Rake是一种软件任务管理与自动化构建工具。用户既可以用它来指派任务、描述依赖关系,又能够在名称空间中的对任务进行分组。

JFrog Artifactory

JFrog Artifactory可以针对在存储构建过程的二进制输出,进行分发和部署。Artifactory提供了对于Maven、Debian、npm、Helm、Ruby、Python和Docker等多种软件包格式的支持。而JFrog具有可用性、可复制性、灾难恢复能力、可扩展性,以及能与许多本地和云端存储产品协同使用。

Sonatype Nexus

Sonatype Nexus是一种资源库管理器。您可以用它来代理,收集和管理各种依赖项,而不必频繁地处理各种JAR的集合。开发者可以使用它来配置内部版本,将工件(artifacts)发布到Nexus上,以实现软件的轻松分发。

NuGet

NuGet是一种.NET的软件包管理器。其客户端工具提供了生成和使用软件包的功能。软件包的作者和使用者可以使用NuGet Gallery作为软件包的集中存储库。

测试代码

测试代码在DevOps中的重要性体现在如下两个方面:

  • 专注于软件的内部质量
  • 建立部署artifacts

可用于测试代码的工具包括:

JUnit

JUnit是Java语言的单元测试框架。Junit源自在SUnit,是测试驱动式(test-driven)开发的必备工具。

xUnit.net

开源的xUnit.net是由NUnit的原始作者所编写出的、基于.NET Framework的、单元测试工具。

Selenium

Selenium是用于测试Web应用程序的一种可移植框架。通过回放工具,测试人员可以用Selenium来编写各种功能性测试,而无需特意学习某种测试脚本语言。

Jasmine

Jasmine是一种开源的JavaScript测试框架。凭借着易读的语法,它可以在任何支持JavaScript的平台上运行,而不限于应用程序或IDE。您可以在该平台上运行诸如:Screw.Unit、JSSpec、JSpec、以及RSpec等单元测试框架。

Cucumber

Cucumber是一种支持行为驱动开发(behavior-driven development)的软件工具。它通过普通语言(ordinary-language)解析器—Gherkin,让用户使用易于理解的逻辑语言,来指定预期的软件行为。

持续集成(CI)

CI在DevOps中的重要性体现在如下两个方面:

  • 提供快速反馈
  • 减少缺陷和等待

可用于CI的工具包括:

Jenkins

Jenkins是一种免费开源的自动化服务器,可以在servlet容器(如Apache Tomcat)中运行。Jenkins通过CI与CD的相关技术,实现了软件开发过程中的自动化。

CircleCI

CircleCI既可谓世界上最大的分享类CI/CD平台,又是代码从构想到交付的中央hub。作为最常用的DevOps工具之一,CircleCI每天可处理超过100万个构建数据。您可以通过它来获悉工程团队是如何工作,代码是如何运行的。像Spotify、Coinbase、Stitch Fix和BuzzFeed之类的公司,都使用CircleCI来提高工程团队的生产力,发布更好的产品,并加快发布速度。

Travis CI

Travis CI是一项托管式的CI服务,可用于构建和测试GitHub上托管的软件项目。Travis CI为私人项目既能提供各种付费计划,又有开源的免费计划。此外,TravisPro还能够为用户的硬件,提供用于自定义部署的专有版本。

Concourse

Concourse是由Go编写的自动化系统。在CI/CD中,用户可以通过Concourse构建出由简到繁的、可任意扩展的自动化管道。

AWS CodePipeline

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

在更改代码时,CodePipeline能够根据用户定义的发布模型,自动化地执行构建、测试、部署、以及发布阶段,以便用户快速、可靠地交付出各项新功能和更新。

您也可以轻松地将AWS CodePipeline与第三方服务(例如GitHub)、或自定义的插件相集成。此外,您只支付AWS CodePipeline的使用费用,而无需任何前期或长期的套餐费用。

Azure Pipelines

Azure Pipelines既可以让用户获取适用于Linux、macOS和Windows的云端托管管道,又能够构建各种Web、桌面和移动应用,以及将它们部署到云端或本地。此外,Pipelines还可以为用户的自动化构建和部署节约更多的时间。

持续部署(CD)

CD在DevOps中的重要性体现在如下三个方面:

  • 优化想生产环境部署的编录
  • 自动化复杂的管道
  • 统一团队,为客户创造价值

可用于CD的工具包括:

Spinnaker

最初由Netflix开发的Spinnaker是一个多云的、免费开源CD软件平台。用户可以利用其强大且灵活的管道管理功能,以及与主流云提供商的集成服务,更快、更稳健地发布针对软件产品的更改。

Octopus Deploy

Octopus Deploy是全球领先的自动化部署与发布管理工具。作为一个工具集,Octopus可以极大地简化DevOps流程,以便用户通过云服务或虚拟机,持续测试与部署各种微服务或应用。

AWS CodeDeploy

AWS CodeDeploy是一项完全托管式的部署服务。它可以自动将软件部署到Amazon EC2、AWS Fargate、AWS Lambda、以及本地服务器上,而无需手动操作。

配置管理工具

配置管理在DevOps中的重要性体现在如下两个方面:

  • 加强一致性
  • 将基础架构作为代码

可用于配置管理的工具包括:

Terraform

Terraform是由HashiCorp创建的开源式基础架构即代码(infrastructure-as-code,IaC)软件工具。通过使用Hashicorp配置语言、或JSON高级配置语言,用户可以用它来定义和配置数据中心的基础结构。

BOSH

BOSH是一个对不同类型云服务软件进行工程发布、部署和生命周期统一管理的项目。它既可以在数百个虚拟机(VM)上进行软件配置和部署,又能够以最小的停机时间实现故障恢复和软件更新。

BOSH支持多种基础架构即服务(IaaS)提供商,其中包括:VMware vSphere、Google Cloud Platform、Amazon Web Services EC2、Microsoft Azure、OpenStack和阿里云。此外,BOSH还提供了一种云服务商接口(Cloud Provider Interface,CPI),可方便用户通过扩展BOSH,来支持诸如Apache CloudStack和VirtualBox等IaaS应用。

Chef

作为一种配置管理工具,Chef能够处置物理服务器、虚拟机和云端主机的各种设置。像Facebook、Etsy、Cheezburger和Indiegogo之类的公司,都在使用Chef软件来控制和管理其基础架构。此外,作为DevOps运动的创始者,Chef不断践行着数字化转型、持续自动化、以及快速交付。

Ansible

Ansible是一种开源的软件采购、配置管理和应用部署的工具。它可以被配置在各种Unix发行版、以及Windows上。Ansible可以通过自带的描述性语言,来定义系统的相关配置。

Puppet

Puppet提供了一种定义系统所需的软件配置,并具有保持指定状态的能力。您可以使用类似于Ruby的声明性域特定语言(declarative domain-specific language,DSL),来定义特定环境或架构的配置参数。Puppet使用自带的Facter程序来发现系统信息。它通过使用清单(manifests),来管理其控制的所有节点上的重要配置信息。其主控节点是那些已安装了Puppet,并运行着Puppet代理(即守护程序)的节点。代理收集到相关节点的配置信息后,会发送给Puppet主服务器。然后,Puppet的主节点会据此来进行编录,以便让每个节点都能更新配置,并保持一致。

此外,Puppet主要是通过拉取的模式(pull mode),定期轮询主服务器,来检索特定站点和节点的配置。在该结构中,受管理的节点运行着作为后台服务的Puppet代理应用。

Google Cloud Deployment Manager

作为一项基础架构的管理服务,Google Cloud Deployment Manager可以轻松地创建、部署和管理Google云平台的相关资源。

监控和记录工具

监控和记录在DevOps中的重要性体现在如下四个方面:

  • 快速恢复
  • 反应能力
  • 透明度
  • 事故期间人员参与度

可用于配置管理的工具包括:

ELK Stack

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

  • E代表ElasticSearch – 可用于存储日志
  • L代表Logstash – 可用于传输、处理和存储日志
  • K代表Kibana – 能够提供Web界面的可视化工具

Datadog

Datadog是针对云规模(cloud-scale)应用的监控服务。它可以通过基于SaaS的数据分析平台,来监控服务器、数据库、以及各项工具与服务。

Datadog应用性能监控(Application Performance Monitoring,APM)可以对日志和基础架构进行监控。通过监控诸如:请求量和延迟之类的关键指标,以及跟踪详细的单个请求,Datadog能够自动生成针对应用的仪表板。

当有请求被发往到某个应用时,Datadog会通过查看和跟踪整个分布式系统的状态,以显示与该请求相关的系统数据。

New Relic

New Relic是一家位于加州旧金山的技术公司。它致力于开发基于云服务的软件,以帮助网站和应用所有者跟踪其服务性能。

New Relic的应用性能监控(APM)产品,可以提供有关Web应用的性能,以及最终用户满意度的实时趋势数据。

Prometheus

Prometheus是用于事件监控和警报的免费软件应用。它将受监控指标的实时数据,记录在一个时序数据库中。该数据库构建在具有灵活查询和实时警报功能的HTTP拉取式模型上。也就是说:Prometheus服务器事先配置各个受监控节点的指标,然后定期收集相关数据,并将其存储在本地。

Zipkin

Zipkin是一个分布式跟踪系统。它能够为用户按需查找与收集时序数据,并协助解决服务架构中的延迟问题。

如果日志文件中已有跟踪ID,那么它会直接跳转至该ID处。否则,您需要基于服务、操作名称、标签(tagsm)、以及持续时间等属性,进行查询。例如,您可以查询某项请求在服务中花费的时间百分比,以及对应的操作是否成功。

Azure Monitor

Azure Monitor通过提供一个全面的解决方案,从目标云端和本地环境中收集、分析和执行遥测(telemetry),进而最大程度地提高应用与服务的可用性与性能。据此,它可以协助用户主动地识别出相关问题,以及所依赖的资源。您往往可以使用Azure Monitor来达到如下目的:

  • 使用Application Insights,来检测和诊断跨应用与依赖项的问题。
  • 将基础架构问题与适用于VM的Azure Monitor、以及适用于容器的Azure Monitor相关联。
  • 使用Log Analytics攫取监控数据,以便进行故障排除和深度诊断。
  • 通过智能警报和自动化操作,来全面支持运营。
  • 可使用Azure仪表板和工作簿(workbooks),来实现可视化。

交流工具

交流在DevOps中的重要性体现在如下三个方面:

  • 连接团队
  • 减少等待
  • 改善协作

可用于交流的工具包括:

Slack

Slack是一个专用的即时消息平台。它旨在为用户公司取代电子邮件,这种传统的信息交流与共享方法。通过Slack您可以按照不同的“频道”,进行组织交流或小组讨论。当然,你也可以私密的方式进行信息和文件的共享操作。

Microsoft Teams

Microsoft Teams是一个统一化的通信和协作平台。它集成了实时聊天、视频会议、文件存储、以及协作应用等功能。

作为基于聊天场景的协作工具,Teams可为全球、远程和分散的团队,提供了共享信息的能力。此外,它还带有诸如:文档协作、一对一聊天、团队交流等酷炫的功能。

Google Hangouts

Google Hangouts是Google开发的一种通讯软件。组织内的成员可以用它来有效地向一到多个同事发送消息,与多人持续进行对话,并使用机器人(bots)来自动化各项工作。此外,您可以在电脑的浏览器,以及Android和iOS的移动应用中使用它。

Zoom

Zoom Video Communications提供了视频会议、在线会议、聊天和移动协作等远程服务。同时,它是那些需要经常开展视频培训团队的首选。

知识共享工具

知识共享在DevOps中的重要性体现在如下三个方面:

  • 减少认知上的不对称
  • 提高新员工的生产力
  • 避免已知错误的重现

可用于知识共享的工具包括:

GitHub Pages

GitHub Pages是一种静态站点的托管服务。它既可以直接从GitHub的存储库中,获取HTML、CSS和JavaScript文件,又能够在构建过程中将这些文件发布到网站上。此外,GitHub Pages提供了各种网站的示例,可供用户参考。

Confluence

Confluence是由Atlassian用Java编程语言编写、开发并发布的一款协作软件。作为一款协作类Wiki工具,Confluence可以帮助团队有效地进行协作和知识共享。例如,您可以在“团队日历(Team Calendars)”插件的帮助下,捕获项目需求,向特定用户分配任务,以及一次性管理多个日历。

Jekyll

Jekyll是由GitHub的联合创始人Tom Preston-Werner用Ruby编写而成,并根据开源的MIT许可进行发行。它是一个简单的、博客感知(blog-aware)的静态站点生成器。也就是说,作为一个解析引擎,它能够从诸如:模板、部分代码、以及液态代码(liquid code)等动态组件中,构建出静态网站。

Google Sites

Google Sites是由Google提供的结构化Wiki与网页创建类工具。它的目标是让任何人在无需学习设计与编程的前提下,能够创建出方便与他人协作的,简单且高质量的网站。而且此类网站可以在台式机、智能手机等不同的屏幕上被轻松地访问到。

总结

DevOps是一种令人兴奋的工作方式。就目前而言,它能够让团队成员在保证持续交付的同时,充分专注客户的需求和产品的质量,进而让软件公司在技术水平上能够脱颖而出。希望上述介绍的不同DevOps工具类别,能够对您的DevOps实践提供帮助。

【原标题】The DevOps Toolchain ,作者: Suresh Sekar

 

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

责任编辑:华轩 来源: 51CTO
相关推荐

2010-07-02 11:00:53

GSMP协议

2012-10-10 09:12:54

Windows Sys

2010-07-09 16:16:45

SQL Server

2021-01-29 15:50:45

DevOps运维

2021-03-06 08:05:54

工具DevOpsLighthouse

2009-12-23 15:52:32

无线上网全接触

2010-09-08 13:42:06

2019-12-12 09:30:31

工具代码开发

2011-07-06 15:33:02

ASP

2019-01-23 09:00:00

2011-07-06 15:36:31

ASP

2021-06-23 08:00:00

Redis服务器缓存

2020-04-28 09:00:00

测试测试自动化

2021-11-25 09:00:00

DevOps工具开发

2010-09-10 13:27:42

无线网络辐射

2009-12-03 11:22:07

路由器功能指标

2009-07-02 15:07:40

Java认证考试

2020-10-21 09:00:15

Azure Sprin云服务日志

2010-04-15 16:58:08

英特尔酷睿高清

2012-09-26 16:32:29

点赞
收藏

51CTO技术栈公众号