DevOps工具简介

为DevOps生命周期的每个阶段选择对应的工具。

DevOps是敏捷方法学的下一个发展。一种文化转变,使开发和运营团队团结在一起。DevOps是一种涉及文化变革,新的管理原则和有助于实施最佳实践的技术工具的实践。

对于DevOps工具链,组织应该寻找能够改善协作,减少上下文切换,引入自动化以及利用可观察性和监视性来更快地发布更好的软件的工具。 

DevOps工具链有两种主要方法:多合一或开放式工具链。多合一的DevOps解决方案提供了通常不与其他第三方工具集成的完整解决方案。可以使用不同的工具为团队的需求定制开放式工具链。开放式工具链是最好的方法,因为可以使用同类最佳的工具定制开放式工具链,以满足组织的独特需求。使用这种方法通常可以提高时间效率并缩短产品上市时间。

无论组织使用哪种DevOps工具链,DevOps流程都需要使用正确的工具来解决DevOps生命周期的关键阶段:

  • 计划
  • 建立
  • CI/CD 持续集成和部署 
  • 监控 
  • 操作
  • 持续的反馈  

借助开放的DevOps工具链,所选工具可接触DevOps生命周期的多个阶段。以下各节展示了一些最流行的DevOps工具,但鉴于市场的性质,此列表经常更改。供应商添加了新功能,使他们能够跨越DevOps生命周期的更多阶段,每个季度都会宣布新的集成,并且在某些情况下,供应商会整合其产品以针对其用户的特定问题。


计划

Jira软件ConfluenceSlack

从敏捷手册中抽出一页,我们建议使用一些工具,这些工具可使开发和运营团队将工作分解为较小的可管理块,以加快部署速度。这使您可以更快地向用户学习,并有助于根据反馈优化产品。寻找可提供冲刺计划,问题跟踪并允许协作的工具,例如Jira。 

另一个不错的做法是不断收集用户反馈,将其组织成可操作的输入,并为开发团队确定这些操作的优先级。寻找鼓励“异步头脑风暴”的工具(如果可以的话)。每个人都可以共享任何内容并发表评论,这一点很重要:想法,策略,目标,要求,路线图和文档。

并且不要忘记集成和功能标志。无论您决定范围内的功能或项目,都应在开发积压中将其转换为用户案例。功能标志是代码库中的if语句,使团队可以打开和关闭功能。


建立

与生产环境相同的开发环境: KubernetesDocker 

尽管Puppet和Chef主要使运营受益,但开发人员使用诸如Kubernetes和Docker之类的开源工具来提供单独的开发环境。针对虚拟的一次性生产副本进行编码可以帮助您完成更多工作。

当每个团队成员都在完全相同的环境中工作时,“在我的机器上工作!” 因为它是真实的而不再有趣(现在它很有趣)。

基础架构即代码: AnsibleChefDockerPuppetTerraform

开发人员创建模块化应用程序是因为它们更加可靠和可维护。那么,为什么不将这种想法扩展到IT基础架构呢?这可能很难应用于系统,因为它们总是在变化。因此,我们通过使用代码进行配置来解决此问题。 

基础架构即代码意味着重新配置比修复快,并且更加一致和可重现。这也意味着您可以使用与生产类似的配置轻松扩展开发环境的各种版本。可以应用和重新应用配置代码,以将服务器置于已知基准。它可以存储在版本控制中。可以对其进行测试,将其合并到CI(连续集成)中并进行同行评审。 

如果将机构知识很好地编码为代码,那么对运行手册和内部文档的需求就会减少。出现的是可重复的过程和可靠的系统。 

源代码控制和协作编码: BitbucketGithubGitlab

重要的是要对代码进行源代码控制。源代码控制工具有助于将代码存储在不同的链中,因此您可以查看每个更改并通过共享这些更改更轻松地协作。您无需等待变更批准委员会再部署到生产中,而可以通过拉取请求完成对等审查,从而提高代码质量和吞吐量。

你问什么是拉取请求?拉取请求告诉您的团队您已推送到存储库中的开发分支的更改。然后,您的团队可以将建议的更改进行审核并讨论修改,然后再将其集成到主代码行中。拉取请求可提高软件质量,从而减少错误/事件,从而降低运营成本并加快开发速度。

源代码控制工具应与其他工具集成,从而使您可以连接代码开发和交付的不同部分。这使您可以知道功能的代码是否正在生产中运行。如果发生事件,则可以检索代码以阐明事件。 


持续集成和交付

持续集成: JenkinsAWS CodePipelineBitbucket PipelinesCircleCISlackSnykSonarsource

持续集成是一种每天将代码检入共享存储库并每次进行测试的实践。这样,您可以自动及早发现问题,在最容易修复的时候进行修复,并尽早向用户推出新功能。

通过拉取请求进行的代码审查需要分支,并且非常流行。DevOps North Star是一个工作流程,可导致更少和更快的分支,并在不牺牲开发速度的情况下保持测试的严格性。

寻找可以将测试自动应用于开发分支的工具,并为您提供在分支构建成功时推送到主数据库的选项。除此之外,您还可以通过简单的集成,通过团队的实时聊天警报不断获得反馈。

了解Bitbucket Pipelines如何帮助您从测试到生产自动化代码。

测试: MablSaucelabsXrayZephyr

测试工具可满足许多需求和功能,包括探索性测试,测试管理和编排。但是,对于DevOps工具链,自动化是必不可少的功能。从长远来看,自动化测试可以通过加快开发和测试周期来获得回报。在DevOps环境中,重要的另一个原因是:意识。

测试自动化可以及早且经常进行软件测试,从而提高软件质量并降低风险。开发团队可以重复执行自动化测试,涵盖UI测试,安全扫描或负载测试等多个领域。它们还生成报告和趋势图,以帮助识别风险区域。

风险是软件开发中不可或缺的事实,但是您无法减轻无法预期的事情。请您的运营团队帮个忙,让他们与您一起窥探。寻找支持墙板的工具,并让参与项目的每个人都对特定的构建或部署结果发表评论。为使操作易于参与闪电测试和探索性测试的工具加分。

部署仪表板: Jira软件

运送软件中压力最大的部分之一是将所有即将发布的变更,测试和部署信息集中到一处。发布之前任何人需要做的最后一件事就是长时间开会以报告状态。这是发布仪表板的地方。

使用集成了代码存储库和部署工具的单个仪表板查找工具。找到一处可以让您完全了解分支机构,构建,拉取请求和部署警告的内容。

自动化部署: Bitbucket PipelinesCodeDeploy

没有适用于每个应用程序和IT环境的自动化部署的神奇秘诀。但是,使用Ruby或bash将操作的运行手册转换为cmd可执行脚本是一种常见的启动方法。良好的工程实践至关重要。使用变量来排除主机名–在每个环境中维护唯一的脚本或代码并不是一件好事(无论如何都会遗漏一半)。创建实用程序方法或脚本以避免重复的代码。并同行审查您的脚本,以健全性检查它们。

首先尝试将部署自动化到最低级别的环境,在该环境中您将最频繁地使用该自动化,然后一直复制到生产。如果没有其他事情,此练习将突出显示您的环境之间的差异并生成用于标准化它们的任务列表。另外,通过自动化实现标准化部署可以减少环境内部和环境之间的“服务器漂移”。


操作

应用程序和服务器性能监视: AppdynamicsDataDogDynaTraceSlackHostedGraphiteNagiosNew RelicOpsgeniePingdomSplunkSumoLogic

应当自动进行两种监视:服务器监视和应用程序性能监视。

手动“顶”框或通过测试打入API可以进行抽查。但是要了解趋势和应用程序(和环境)的总体运行状况,您需要使用24/7全天候监听和记录数据的软件。持续的可观察性是成功的DevOps团队的一项关键能力。

寻找与您的群聊客户端集成的工具,以便将警报直接发送到团队的房间或事件专用房间。

事件,更改和问题跟踪:Jira Service DeskJira SoftwareOpsgenieStatusPage

解锁DevOps团队之间的协作的关键是确保他们正在查看相同的工作。报告事件时会发生什么?它们是否链接到软件并可追溯到软件问题?进行更改时,它们是否与发行版链接?

在不同系统中跟踪事件和软件开发项目,无异于阻止Dev与Ops的合作。寻找可以将事件,更改,问题和软件项目保留在一个平台上的工具,以便您可以更快地识别和解决问题。


持续反馈

GetFeedbackSlackJira服务台Pendo 

客户已经在告诉您是否构建了正确的东西–您只需要听取。持续反馈包括定期收集反馈的文化和流程,以及从反馈中获得见解的工具。持续的反馈做法包括收集和检查NPS数据,客户流失调查,错误报告,支持通知单,甚至是推文。在DevOps文化中,产品团队中的每个人都可以访问用户评论,因为他们可以帮助指导从发行计划到探索性测试会议的所有内容。

寻找将您的聊天工具与您喜欢的调查平台相集成的应用程序,以获得NPS风格的反馈。社交媒体也可以与聊天集成,以提供实时反馈。为了更深入地了解来自社交媒体的反馈,值得在社交媒体管理平台上进行投资,该平台可以使用历史数据提取报表。

分析和合并反馈可能会在短期内减慢开发速度,但从长远来看,它比发布没人要的新功能要有效。



觉得文章有用?

点个广告表达一下你的爱意吧 !😁