热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

传统APM让开发者瞬间崩溃的三大问题是什么

传统APM让开发者瞬间崩溃的三大问题是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到

传统APM让开发者瞬间崩溃的三大问题是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

  如果你负责为企业创建或管理面向客户的应用程序,那么将有一长串需要担心的事情。比如,最近,企业推出了新版本的应用程序,客户在生产中却发现了严重问题,应用程序的过度延迟正在破坏其用户体验。这时,你才想起来使用APM解决其中一些问题,实在是太晚了。你的客户早已直接向公司抱怨,并对社交媒体表示了不满,而你的管理团队会问:“这是怎么发生的?”

  这种噩梦般的场景,即使是世界上最好的公司也能体验到。例如,Google发现流量下降了20%,而搜索页面的生成时间多了半秒。亚马逊发现,每增加100毫秒的延迟,销售额就会减少1%。如果连这些巨头都可能成为生产应用问题的受害者,它也可能发生在任何人身上。

  仅依靠传统的APM手段可能会让企业面临三个关键领域的风险:

  ·无法尽早发现性能问题

  ·无法诊断性能问题的根本原因

  ·无法及时修复性能问题

  发现性能问题

  管理应用程序性能的最大问题之一是能否尽早找到性能问题,大多数企业的答案都是否定的。事实上,75%的开发人员都会在报告中提到性能问题影响生产中最终用户的案例,APM解决方案传统上被设计为仅在生产中工作。

传统APM让开发者瞬间崩溃的三大问题是什么

  传统APM不是为测试阶段而建立的,虽然传统APM通常专注于生产环境,但一些企业试图在开发和测试的早期阶段使用它们。他们经常发现,这些指标和报告在这些阶段无效。以生产为中心的APM将为应用程序性能提供统计分析,实质上是数千个事务的汇总结果。这可能有助于指出会影响业绩的重大问题,但由于没有任何交易细节,因此可能是一个非常模糊的指标。

  开发人员与代码更改将如何影响整体性能是分开的两件事情。在许多公司仍然有一种情况,开发人员不直接与构建的应用程序性能挂钩。开发者构建应用程序并将其投放到生产中的操作团队,当该团队发现问题时,他们将反馈给开发团队进行修复。

  DevOps运动敦促企业通过创建一个大型的虚拟团队,将一些职能和责任从运营转移到开发,从而摆脱这种困境。

  但即使在DevOps环境中,我们仍然可以看到许多测试正在进行,大多数APM工具都是面向运营或性能专家的。正因为如此,只要满足功能要求,开发人员并不觉得他们最终要负责交付代码。这在发展和运营团队之间造成了一点分歧,仍然难以找到性能问题。为了跨越这两个团队,开发人员应该有更多能力来洞察并影响他们正在构建的应用程序性能。今天,以生产为中心的APM并不能赋予开发者这样的能力。

  诊断性能问题的来源

  一旦发现应用程序问题,诊断问题根源又变成一件棘手的事情。当你从开发过程转变为生产时,这是一项越来越困难的任务。测试较晚的团队将被迫诊断复杂基础架构和场景中正在发生的性能问题。实际上,86%的根本原因是应用程序级别问题,这些问题将在开发环境中体现出来,并与环境保持一致。因此,当找到根本原因更容易时,尽早捕捉这些应用程序级别问题是有道理的。

传统APM让开发者瞬间崩溃的三大问题是什么

  一旦应用程序投入生产,它就是一个大而复杂的系统的一小部分。不再仅仅是应用程序的工作,而是关于应用程序周围的所有技术,从网络基础设施到分布式系统。Dynatrace的一项研究发现,平均来说,单个交易使用82种不同类型的技术,这使得试图诊断生产中的性能问题来源如同大海捞针。

  由于这种复杂性使得难以准确诊断问题根源,大多数问题并没有得到真正解决,只是简单地修补。更糟糕的是,匆忙交付修补往往容易造成其他问题,每过一天,问题就越来越严重。

  正如前面已经介绍过的,传统APM是高层次的,足以告诉你存在一个问题,并指出受影响的一般区域。它们的目的是监控难以置信的复杂基础设施,所以一般的健康报告在运营团队生产场景中非常有用。但是,传统APM对于那些希望诊断问题根源的开发团队来说并不重要,因为他们没有提供详细的根源分析。当检测到问题并创建了报告将其传递给开发团队时,可能需要在分阶段环境中使用其他工具集的性能专家采取可操作的数据。

  通常,应用程序问题可能是有条件的,很难再现,问题可能与客户的部署环境相关,这也让问题修复变得复杂起来。

  修复性能问题

  这是传统APM最为暴露的领域,因为问题最终由开发人员解决。以生产为中心的APM并不与开发人员的日常工作流程保持一致,因此开发团队采用是一个挑战。开发人员已经在处理紧迫的期限和产品压力,因此传统APM的复杂性并不值得他们花时间去弄清楚如何获得可操作的数据。

  最重要的是,在开发环境中,传统APM被认为是绝对的矫枉过正。毕竟,它们是为操作而开发的,并且具有许多开发人员不需要的功能。这些APM解决方案只能指出问题的大致方向,但不提供低层次的数据演示,以迎合开发人员解决问题的需要。因此,企业在解决传统APM问题时经常会遇到以下问题。

  没有修复验证可用。在开发机器上设置和配置传统APM是一项可能回报很少的大任务,因为它们不提供有助于在开发环境中隔离,修复和测试问题的功能。传统APM无法为开发人员提供即时反馈,因此他们可以看到代码更改如何影响他们正在处理的应用程序性能。

  为了验证错误修复,开发团队必须等部署到生产阶段。如果bug存在,那么修复测试周期在时间和业务影响方面会非常昂贵。代码所有者和生产问题的表现之间的长反馈循环使修复更加复杂。

  修复有问题的代码往往涉及代码的开发人员,由于开发代码通常需要几个月的时间才能发布到开发环境中,开发人员直到编写代码后才看到这个有问题的代码。在这一点上,可能对代码已经不是很熟悉了,而其他代码可能已经构建在有问题的代码之上,使其成为大型代码库的一部分。在研究,复制和解决问题所需的时间中,可能会影响成百上千的客户。

  小贴士

  大多数公司目前处理绩效管理的方式被打破了。当你等待生产来解决应用问题时,你的客户会在你做之前找到它们。而当你把生产中发现的问题反馈给开发团队解决时,如果你在开发阶段或测试阶段就开始解决问题,那么花费的时间就会更长,成本也更高。每个团队,特别是DevOps专注的团队,都应该仔细研究如何提高发现,诊断和解决性能问题的速度。

  如果没有及早测试,客户就会变成你的测试人员。如果将真实用户置于未经过性能测试的产品代码上,这对于丢失客户是一个很好的选择。

  传统APM是为操作而构建的,对于生产来说必不可少,但不是为开发人员进行测试和开发而构建的。相反,开发人员需要寻找专门为开发和测试而构建的APM工具,尽早将工具集转向以开发为中心的解决方案。

关于传统APM让开发者瞬间崩溃的三大问题是什么问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程笔记行业资讯频道了解更多相关知识。


推荐阅读
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
  • 博客_2018年博客总结
    本文由编程笔记#小编为大家整理,主要介绍了2018年博客总结相关的知识,希望对你有一定的参考价值。前言     ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 解决Cydia数据库错误:could not open file /var/lib/dpkg/status 的方法
    本文介绍了解决iOS系统中Cydia数据库错误的方法。通过使用苹果电脑上的Impactor工具和NewTerm软件,以及ifunbox工具和终端命令,可以解决该问题。具体步骤包括下载所需工具、连接手机到电脑、安装NewTerm、下载ifunbox并注册Dropbox账号、下载并解压lib.zip文件、将lib文件夹拖入Books文件夹中,并将lib文件夹拷贝到/var/目录下。以上方法适用于已经越狱且出现Cydia数据库错误的iPhone手机。 ... [详细]
  • 众筹商城与传统商城的区别及php众筹网站的程序源码
    本文介绍了众筹商城与传统商城的区别,包括所售产品和玩法不同以及运营方式不同。同时还提到了php众筹网站的程序源码和方维众筹的安装和环境问题。 ... [详细]
  • 企业数据应用挑战及元数据管理的重要性
    本文主要介绍了企业在日常经营管理过程中面临的数据应用挑战,包括数据找不到、数据读不懂、数据不可信等问题。针对这些挑战,通过元数据管理可以实现数据的可见、可懂、可用,帮助业务快速获取所需数据。文章提出了“灵魂”三问——元数据是什么、有什么用、又该怎么管,强调了元数据管理在企业数据治理中的基础和前提作用。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 如何实现JDK版本的切换功能,解决开发环境冲突问题
    本文介绍了在开发过程中遇到JDK版本冲突的情况,以及如何通过修改环境变量实现JDK版本的切换功能,解决开发环境冲突的问题。通过合理的切换环境,可以更好地进行项目开发。同时,提醒读者注意不仅限于1.7和1.8版本的转换,还要适应不同项目和个人开发习惯的需求。 ... [详细]
  • 像跟踪分布式服务调用那样跟踪Go函数调用链 | Gopher Daily (2020.12.07) ʕ◔ϖ◔ʔ
    每日一谚:“Acacheisjustamemoryleakyouhaven’tmetyet.”—Mr.RogersGo技术专栏“改善Go语⾔编程质量的50个有效实践” ... [详细]
  • [翻译]微服务设计模式5. 服务发现服务端服务发现
    服务之间需要互相调用,在单体架构中,服务之间的互相调用直接通过编程语言层面的方法调用就搞定了。在传统的分布式应用的部署中,服务地 ... [详细]
  • 全局角度出发讨论敏捷
    JonKern对于是什么促成了敏捷的成功有着自己读到的见解。你可能会不同意他的观点。下面列出了一些建立在项目全局角度之上的关键实践,项目本身就是从此开始的。如果不能从系统角度来做项目,那它就不能达到预期的效果,甚至可能会失败。我很早以前就认为,开发软件就像是在完成一个很长的待办事项列表。我试了很多方法来运行项目,从记事贴到Jira(从Jira刚发布起我就开始使用)。我使用传统Scrum风格的Spr ... [详细]
  • 目前有哪些主流的编程语言呢?1、Java:应用广泛,Android的编程,大部分是用Java;相关岗位:软件工程师,软件架构师和DevOps工程师。2、Python:简单易学,软件 ... [详细]
author-avatar
mobiledu2502921803
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有