【.com快译】众所周知,DevOps的目标是分阶段推进软件开发过程,通过不断的迭代和改进,进而敏捷交付让客户满意的软件产品。俗话说:工欲善其事,必先利其器。对于项目团队来说,好的工具可以更加强大。本文将向您介绍整个DevOps工具链,其中包括:规划、问题跟踪、源代码管理、构建、测试代码、持续集成和部署、管理配置、监控和日志记录、沟通和知识共享。规划在DevOps中规划的重要性体现在以下三个方面:设定共同目标提高透明度早期赋能可用于规划的工具包括:GitLabGitLab是一个基于Web的DevOps生命周期工具。它提供了一个基于Git存储库的管理器。它通过GitLab开发的开源许可证提供wiki、问题跟踪和CI/CD管道等功能。用户可以通过自带工具进行实际规划,或者查看工作范围。TasktopTasktop允许将各种现有工具添加到由Tasktop提供支持的应用程序生命周期管理(ALM)、PPM和ITSM工具中,从而在整个生命周期中实现可见性和敏捷性。CollabNet的VersionOneVersionOne支持Scrum、看板、XP、SAFe和混合开发方法。它可以轻松跟踪和报告所有团队、流程、软件组合和企业计划。PivotalTracker使任何地方的开发人员都可以轻松地共享积压优先级并通过敏捷项目管理工具进行实时协作。TrelloTrello是一个基于Web的看板式列表制作应用程序。许多团队在规划个人工作冲刺时使用它。AzureBoardsAzureBoards可以使用包括Scrum看板、看板和仪表板在内的敏捷工具来跟踪软件项目,并使用敏捷方法更好地进行规划。用户可以使用AzureBoards可视化工作、共享计划、跟踪进度并确保方法的正确性。问题跟踪问题跟踪在DevOps中的重要性体现在以下三个方面:客户响应性突破有限的知识线索并提供反馈循环。可用于问题跟踪的工具包括:Atlassian的JiraJira是Atlassian开发的专用问题跟踪产品。用于bug跟踪、敏捷项目管理等场景。JetBrains的YouTrackYouTrack是由JetBrains开发的基于商业浏览器的专用错误和问题跟踪系统。同时,它也是一款项目管理软件。YouTrack通过自动补全、批量处理问题、自定义问题属性集和工作流等功能实现基于查询的问题搜索。ZendeskZendesk让多渠道追踪每一个客户问题变得简单。Uber和Airbnb等公司使用Zendesk作为他们的问题跟踪软件。源代码控制源代码控制的重要性体现在以下三个方面:管理资产,避免向团队上传无效代码。在软件开发过程中,跟踪源代码的更改。Git旨在协调程序员的工作、跟踪文件更改、数据完整性,并为分布式非线性工作流提供支持。GitHubGitHub通过自身的功能为Git提供分布式版本控制和源代码管理。GitLabGitLab可以实现源代码的版本管理,帮助开发团队共享、协作,提高生产力。Bitbucket由Atlassian为您带来的基于Web的Bitbucket是一种版本控制存储库类型的托管服务。它可以在源代码和开发项目场景中使用Mercurial或Git等版本控制系统。Subversion在Apache开源许可证下获得许可,Subversion是一个软件版本控制系统。软件开发人员可以使用Subversion来维护源代码、网页和文档的当前和历史版本。构建工具在DevOps中的重要性体现在以下三个方面:封装一致性自动执行各种容易出错的活动质量等级初步判断可用于构建的工具包括:Maven/GradleMaven主要用于Java项目构建当然,它还可以用于构建和管理用C#、Ruby、Scala和其他语言编写的项目。Gradle是一个开源的自动化构建系统。它基于ApacheAnt和ApacheMaven的概念,引入了一种基于Groovy的领域特定(domain-specific)语言,而不是像ApacheMaven那样使用XML形式来声明项目的配置。MSBuildMicrosoft构建引擎(也称为MSBuild)是一个免费的开源构建工具集,用于代码托管以及本机C++代码。同时,它也是.NETFramework的一部分,可以与VisualStudio联动。RakeRake是一个软件任务管理和构建自动化工具。用户可以使用它来分配任务、描述依赖关系以及在命名空间中对任务进行分组。JFrogArtifactoryJFrogArtifactory可用于在存储中分发和部署构建过程的二进制输出。Artifactory提供了对Maven、Debian、npm、Helm、Ruby、Python和Docker等多种包格式的支持。JFrog具有可用性、可复制性、灾难恢复能力、可扩展性,可以与许多本地和云存储产品结合使用。SonatypeNexusSonatypeNexus是一个存储库管理器。您可以使用它来代理、收集和管理各种依赖项,而不必经常处理各种JAR的集合。开发人员可以使用它来配置构建并将工件发布到Nexus,以便轻松分发软件。NuGetNuGet是一个.NET包管理器。它的客户端工具提供生成和使用软件包的功能。软件包的作者和消费者可以使用NuGetGallery作为软件包的集中存储库。测试代码测试代码在DevOps中的重要性体现在以下两个方面:关注软件的内部质量构建和部署工件可用于测试代码的工具包括:JUnitJUnit是Java语言的单元测试框架。Junit源自SUnit,是测试驱动开发的必备工具。xUnit.net开源的xUnit.net是NUnit原作者编写的基于.NETFramework的单元测试工具。SeleniumSelenium是一个用于测试Web应用程序的可移植框架。通过回放工具,测试人员无需学习某种测试脚本语言,就可以使用Selenium编写各种功能测试。JasmineJasmine是一个开源的JavaScript测试框架。凭借易于阅读的语法,它可以在任何支持JavaScript的平台上运行,而不仅限于应用程序或IDE。您可以在此平台上运行Screw.Unit、JSSpec、JSpec和RSpec等单元测试框架。CucumberCucumber是一个支持行为驱动开发的软件工具。它使用普通语言解析器——Gherkin——允许用户以易于理解的逻辑语言指定预期的软件行为。持续集成(CI)CI在DevOps中的重要性体现在以下两个方面:提供快速反馈,减少缺陷等待可以用于CI的工具包括:JenkinsJenkins是一个免费开源的自动化服务器,可以运行在Tomcat中运行)。Jenkins通过CI和CD相关技术自动化软件开发过程。CircleCICircleCI不仅是世界上最大的共享CI/CD平台,还是代码从构思到交付的中心枢纽。作为最常用的DevOps工具之一,CircleCI每天处理超过100万个构建。您可以使用它来了解工程团队的工作方式以及代码的运行方式。Spotify、Coinbase、StitchFix和BuzzFeed等公司使用CircleCI来提高其工程团队的生产力,发布更好的产品,并更快地发布。TravisCITTravisCI是一种托管CI服务,用于构建和测试托管在GitHub上的软件项目。TravisCI为私人项目提供各种付费计划,以及开源免费计划。此外,TravisPro还可以为用户提供专有版本的硬件,用于自定义部署。ConcourseConcourse是一个用Go编写的自动化系统。在CI/CD中,用户可以使用Concourse构建从简单到复杂且可任意扩展的自动化管道。AWSCodePipelineAWSCodePipeline是一项完全托管的CD服务,可帮助您自动化发布管道以实现快速、可靠的应用程序和基础设施更新。在更改代码时,CodePipeline可以根据用户定义的发布模型自动执行构建、测试、部署和发布阶段,以便用户可以快速可靠地交付各种新功能和更新。您还可以轻松地将AWSCodePipeline与第三方服务(如GitHub)或自定义插件集成。此外,您只需为AWSCodePipeline的使用付费,无需支付任何前期或长期订阅费用。AzurePipelinesAzurePipelines允许用户获取适用于Linux、macOS和Windows的云托管管道,并构建各种Web、桌面和移动应用程序,并将它们部署到云端或本地。此外,Pipelines还可以为用户的自动化构建和部署节省更多的时间。持续部署(CD)CD在DevOps中的重要性体现在以下三个方面:为生产部署优化目录自动化复杂的管道统一团队并为客户创造价值CD可用的工具包括:Spinnaker最初由Netflix开发Spinnaker是一个多云的,免费开源CD软件平台。用户可以利用其强大而灵活的管道管理能力,以及与主要云提供商的集成服务,更快、更稳健地发布软件产品的变更。OctopusDeployOctopusDeploy是世界领先的自动化部署和发布管理工具。作为一个工具集,Octopus可以大大简化DevOps流程,让用户可以通过云服务或虚拟机不断地测试和部署各种微服务或应用程序。AWSCodeDeployAWSCodeDeploy是一项完全托管的部署服务。它可以自动将软件部署到AmazonEC2、AWSFargate、AWSLambda和本地服务器,无需手动操作。配置管理工具DevOps中配置管理的重要性体现在以下两个方面:增强一致性基础设施即代码可用于配置管理的工具包括:TerraformTerraform是一个开源的基础设施即代码(infrastructure-as-code)由HashiCorp创建-code,IaC)软件工具。通过使用Hashicorp配置语言,即JSON高级配置语言,用户可以使用它来定义和配置数据中心的基础设施。BOSHBOSH是一个统一管理不同类型云服务软件的工程发布、部署和生命周期的项目。它支持在数百个虚拟机(VM)上进行软件配置和部署,并以最短的停机时间实现故障恢复和软件更新。BOSH支持各种基础架构即服务(IaaS)提供商,包括:VMwarevSphere、GoogleCloudPlatform、AmazonWebServicesEC2、MicrosoftAzure、OpenStack和阿里云。此外,BOSH还提供了一个CloudProviderInterface(CPI),可以方便用户通过扩展BOSH来支持ApacheCloudStack、VirtualBox等IaaS应用。Chef作为配置管理工具,可以处理物理服务器、虚拟机和云主机的各种设置。Facebook、Etsy、Cheezburger和Indiegogo等公司都使用Chef软件来控制和管理其基础设施。此外,作为DevOps运动的创始人,Chef也在不断践行数字化转型、持续自动化和快速交付。AnsibleAnsible是一个用于软件采购、配置管理和应用程序部署的开源工具。它可以在各种Unix发行版和Windows上配置。Ansible可以通过自己的描述语言来定义系统的相关配置。PuppetPuppet提供了一种软件配置,它定义了系统需要什么,并能够维护指定的状态。您可以使用类似Ruby的声明性领域特定语言(DSL)来为特定环境或体系结构定义配置参数。Puppet使用自己的Facter程序来发现系统信息。它使用清单管理其控制的所有节点上的重要配置信息。它的主节点是那些安装了Puppet并运行Puppet代理(即守护进程)的节点。agent收集到相关节点的配置信息后,会发送给Puppetmasterserver。然后Puppet主节点对其进行编目,以便每个节点都可以更新配置并保持一致。此外,Puppet主要通过拉模式定期轮询主服务器来检索站点特定和节点特定的配置。在此架构中,托管节点将Puppet代理应用程序作为后台服务运行。GoogleCloudDeploymentManager作为基础架构管理服务,可以轻松创建、部署和管理GoogleCloudPlatform的相关资源。监控和记录工具DevOps中监控和记录的重要性体现在以下四个方面:快速恢复响应能力透明度事件期间人员参与可用于配置管理的工具包括:ELKStackELKStack是Elasticsearch的三个开源组件,Logstash和Kibana产品的集合。它们均由ElasticCorporation开发、管理和维护。E代表ElasticSearch——可以用来存储日志L代表Logstash——可以用来传输、处理和存储日志K代表Kibana——一个可视化工具,可以提供web界面DatadogDatadog是一个云规模的监控服务(云规模)应用程序。它可以通过基于SaaS的数据分析平台来监控服务器、数据库以及各种工具和服务。Datadog应用程序性能监控(ApplicationPerformanceMonitoring,APM)可以监控日志和基础设施。通过监控请求量和延迟等关键指标,并跟踪详细的单个请求,Datadog可以自动生成特定于应用程序的仪表板。当向应用程序发送请求时,Datadog将查看和跟踪整个分布式系统的状态,以显示与请求相关的系统数据。NewRelicNewRelic是一家位于加利福尼亚州旧金山的科技公司。它开发基于云的软件,以帮助网站和应用程序所有者跟踪其服务的性能。NewRelic的应用程序性能监控(APM)产品提供有关Web应用程序性能和最终用户满意度的实时趋势数据。PrometheusPrometheus是一个用于事件监控和警报的免费软件应用程序。它将监控指标的实时数据记录在时间序列数据库中。该数据库建立在具有灵活查询和实时警报功能的HTTP拉模型上。也就是说:Prometheus服务器预先配置好每个被监控节点的指标,然后周期性的收集相关数据存储在本地。ZipkinZipkin是一个分布式追踪系统。它可以为用户按需查找和收集时间序列数据,帮助解决服务架构中的延迟问题。如果跟踪ID已经存在于日志文件中,它将直接跳转到该ID。否则需要根据服务、操作名称、标签(tagsm)、时长等属性进行查询。例如,您可以查询请求在服务中花费的时间百分比以及相应操作是否成功。AzureMonitorAzureMonitor通过提供一个全面的解决方案来收集、分析和执行来自目标云和本地环境的遥测数据,从而最大限度地提高应用程序和服务的可用性和性能。因此,它帮助用户主动识别相关问题及其所依赖的资源。你通常可以使用AzureMonitor来:使用ApplicationInsights跨应用程序和依赖项检测和诊断问题。将基础结构问题与用于VM的AzureMonitor和用于容器的AzureMonitor相关联。使用LogAnalytics捕获监视数据以进行故障排除和深入诊断。通过智能警报和自动化操作全面支持运营。可以使用Azure仪表板和工作簿实现可视化。沟通工具沟通在DevOps中的重要性体现在以下三个方面:连接团队减少等待提高协作可用于沟通的工具包括:SlackSlack是一个专用的即时通讯平台。它旨在取代电子邮件,这是用户公司交流和共享信息的传统方式。借助Slack,您可以通过不同的“渠道”进行组织沟通或小组讨论。当然,您也可以私下共享信息和文件。MicrosoftTeamsMicrosoftTeams是一个统一的通信和协作平台。它集成了实时聊天、视频会议、文件存储和协作应用程序。作为基于聊天场景的协作工具,Teams为全球、远程和分散的团队提供了共享信息的能力。此外,它还自带一些很酷的功能,例如:文档协作、一对一聊天、团队沟通等。GoogleHangoutsGoogleHangouts是谷歌开发的一款通讯软件。组织的成员可以使用它来有效地向一位或多位同事发送消息,与多人进行持续对话,并使用机器人来自动执行任务。此外,您可以在计算机的浏览器以及Android和iOS的移动应用程序中使用它。ZoomZoomVideoCommunications提供视频会议、在线会议、聊天和移动协作等远程服务。同时,对于那些需要经常进行视频培训的团队来说,也是首选。知识共享工具知识共享在DevOps中的重要性体现在以下三个方面:减少认知不对称提高新员工的工作效率避免已知错误的再次发生可用于知识共享的工具包括:GitHubPagesGitHubPages是一个A静态站点的托管服务。它既可以直接从GitHub存储库中获取HTML、CSS和JavaScript文件,又可以在构建过程中将这些文件发布到网站上。另外,GitHubPages提供了各种网站的例子,用户可以参考。ConfluenceConfluence是由Atlassian使用Java编程语言编写、开发和发布的协作软件。作为协作wiki工具,Confluence可以帮助团队有效协作和共享知识。例如,您可以捕获项目需求,将任务分配给特定用户,并在团队日历插件的帮助下同时管理多个日历。JekyllJekyll由GitHub联合创始人TomPreston-Werner用Ruby编写,并在开源MIT许可下发布。它是一个简单的、博客感知的静态站点生成器。即作为一个解析引擎,它可以从模板、部分代码、流动代码等动态组件构建静态网站。GoogleSitesGoogleSites是Google提供的结构化wiki和网页创建工具。它的目标是让任何人都可以创建简单且高质量的网站,这些网站易于与他人协作,而无需学习设计和编程。并且可以在台式机和智能手机等不同屏幕上轻松访问此类网站。总而言之,DevOps是一种令人兴奋的工作方式。就目前而言,它可以让团队成员在确保持续交付的同时充分关注客户需求和产品质量,从而让软件公司在技术层面脱颖而出。希望以上介绍的不同DevOps工具类别能够对大家的DevOps实践有所帮助。【原标题】TheDevOpsToolchain,作者:SureshSekar
