第三方数据延迟取不了 APM(应用性能监控) 行业认知系列 - 一
背景
我在 2017 年学习 APM 行业相关知识并获取相关认证时总结的笔记(知识是16-17年的知识)。今天偶然翻到了,看了一下仍然有一定意义,所以重新整理发出。总共会有 十七 部分。
大纲如下:
从 APM 到 DPM ( 一 -> 四)APM/DPM 市场 (五 -> 六)监控, 和性能 (七 -> 十一)用户体验 (十二 -> 十三)APM/DPM 的需求(十四 -> 十七)一《影响应用性能的主要因素》
影响应用性能的因素有两大类: 和 app 。
应用程序性能中的问题最常见于应用程序代码或基础架构服务。对于新的微服务应用架构(横跨本地和云端), 通过APIs连接后端, 影响应用性能的首要因素很明显就是the end to end of your - 从用户体验, 应用性能, 甚至 直到云服务. 有能力简化和精简端到端的应用视图, 让你在用户受影响之前直接看到你需要看的 瓶颈.
1.1 应用必须面临的复杂环境1.1.1 基础设施的复杂性
影响应用程序性能的最重要因素是支持应用程序的基础架构和服务的复杂性。这些组件和服务现在可以跨越多个位置 - 云,本地数据中心,混合。
在代码错误之外,性能问题始终源自应用程序与外部系统接口这一点。容器,虚拟机,存储或网络.
数字服务现在必须在非常复杂的基础设施中进行大规模和高速度的转变,这些基础设施可以包括混合云和软件定义的网络。因此,应用程序服务交付可能会在从前台到后台服务器路径上的任何地方遇到问题.
1.1.2 云
影响应用程序性能的最大因素之一是决定在云中托管应用程序。
IT部门需要更广泛地关注, 无缝地确保用户体验和管理通过内部部署资源与公共云的应用程序性能.
影响现代数字时代应用性能的主要因素是云中的应用和基础设施。这产生了大量的依赖.现代应用和基础设施栈,由弹性架构,微服务和面向服务架构组成, 挑战我们认为我们所知道的保证应用程序性能的一切。
1.1.3 第三方服务
第三方元素的影响会影响应用程序的性能. 对于企业网站来说,这个问题特别繁重,每个页面都可能有几十个标签,小部件,广告,插件和其他第三方组件. 其中任何一个都可以减缓整个网站。除了网站之外,第三方元素可能会影响移动应用,SaaS应用和任何其他现代应用。
应用程序越来越多地依赖于通常对应用程序所有者几乎无法控制的第三方服务。由于基于微服务的应用架构变得更加常见, 应用程序的依赖性变得更加分散和动态。如果车轮上的单个齿轮失效,整个系统可能停止工作,导致减速(性能下降),用户体验受挫和收入损失。
影响这些应用程序性能的主要因素之一是他们必须连接的大量第三方。事实上,第三方组件占应用程序体验的2/3. 随着第三方增加, 复杂性和错误风险增加,可用性差和响应时间慢。
例子包括越来越多的专业工具 - 营销分析,社交媒体插件和电子商务店铺等等。在实施之前和期间,组织必须能够辨别第三方服务的整体性能影响.您可以重新思考最新所谓的“必须”的消费者功能,是否它最终会减慢您的网站的速度,并驱使用户离开.此外,必须制定应急计划,以消除并可能取代任何可能行为不端的服务。
1.1.4 移动端
最近的研究报告中的数据讲述了这样一个故事:互联网上的所有网页浏览量的一半以上都是在移动设备上进行的,但是通过3G的页面平均加载时间是19秒。所有服务器请求中几乎有一半来自第三方呼叫,例如广告,衡量和管理这些调用的性能至关重要。比较更快的网站(5s内加载)与较慢的网站(19s),更快的网站的平均会话长度长了70%,跳出率降低了35%,前者几乎是后者收入的两倍。
1.1.5 相互依赖
今天的应用和服务包括来自多个供应商(Web和应用程序服务器,多层中间件,数据库,大型数据存储,缓存层,云端和其他服务)的各种组件,这些组建需要以预期的方式运行,以提供很好的终端用户体验。这种应用程序及其支持组件的复杂性的增加也增加了应用程序失败的机会。IT运营团队和开发人员需要专注于对应用程序的性能进行全面的了解,而不仅仅是单个组件的性能。他们还需要了解动态环境中应用程序组件之间的相互依赖关系,以确保应用程序的高可用性和最佳性能。
分布式应用程序架构的复杂性使得确定性能问题成为挑战。应用程序依赖于大量与基础设施资源的不希望的依赖关系和交互。微服务,容器,云基础设施...甚至是次要的防火墙更新可以降低整个应用程序。今天许多应用程序都是其他应用程序的混搭,所有这些应用程序必须彼此交互才能使服务正常执行。我曾说过一个零售网站由80个不同的应用程序组成, 为客户提供单一体验!如果混搭的任何部分失败,集体在线体验失败。这就是为什么应用程序发现和依赖关系映射(特别是异构环境), 以及对fulll-stack基础设施监控的需求是至关重要的。IT基础设施变得越来越脆弱,每次都不会有同样的失败.
1.2 环境的更多挑战, 包括容器, 微服务和网络问题1.2.1 虚拟化和容器化
今天的应用程序分解成可以部署在高度虚拟化或容器化上的多个组件。因此,不同组件之间交互的流程的可视化,对于IT运维为应用程序提供最佳的用户体验是至关重要的。
在过去十年中,我们已经看到了云的商品化,并且在虚拟化硬件上运行应用程序的趋势继续发展到更高级别的模块化和分区化:容器,微服务,软件定义的网络,虚拟存储,和更多。小的,容器化的,独立的组件,并且可作为可回收的多用途构建块是趋势。所有这些都可能使复杂系统的开发和操作更快更便宜,但在APM,调优,监控,日志记录,调试等方面,复杂性会增加。相应的工具需要能够查看和分析所有物理和虚拟组件以及它们的交互方式,并允许开发人员和操作团队了解所有这些数据点。
1.2.2 微服务
在具有成千上万的相互依赖的服务的应用环境中隔离任何应用程序性能问题,如果没有实时监测和监控,可能是具有挑战性的。手动检测这些微服务器并设置静态阈值不是不可能, 但是一项非常困难的任务。企业需要自动发现这些大量的微服务,并在性能偏离正常基线时,动态地对其性能进行基准,收集深度诊断和警报。Anand Akela 产品营销总监
现代应用越来越依赖于无状态微服务,通常与有状态数据服务(如NoSQL,Kafka,等)配合使用,并且部署在容器上或利用 架构。随着应用基质的变化,影响这些应用性能的因素也在变化。这些因素包括各种微服务如何相互交互,其可用性以及这些服务之间的错误,延迟和吞吐量等相关问题。单个服务本身表现并不重要。另外,像Mesos,和 Swarm这样的编排系统也变得越来越重要,应用程序性能将越来越依赖于这些业务流程系统如何有效地管理资源,无论是应用还是基础设施。
1.2.3 服务设计
我所看到的最大的影响就是忽略了以用户为中心的设计原则。经验告诉我们,传统的客户端/服务器应用程序将无法与当今的现代应用程序一起使用。来自用户位置/体验的服务设计不当是灾难的源头。
1.2.4 SIDE CODE 服务端代码
虽然用户对低应用程序的容忍程度较低,但性能不佳的主要原因仍然是服务器端代码效率低下。随着组件越来越互联,确定缓慢或故障的原因继续需要更长时间,从而形成对端到端APM的需求。
1.2.5 网络延迟
延迟是影响应用程序性能的首要因素。如果用户和服务器之间的延迟较高,最成熟的应用程序都将非常慢。最烂的应用程序都可以在一切都是本地的时候获得各种赞誉。我认为低延迟是IT经理在其网络上可以拥有的最重要的资产。您应该专注于减少端到端延迟的任何方式。这包括减少对于延迟的各种贡献,例如处理延迟,队列延迟,序列化延迟,以及最后但绝对不是最不重要的, 传播延迟。
应用程序页面加载时间的百分之七十五来自网络的延迟
1.2.6 加载
基于业务环境的变化,应用程序可能会变得过载。更多的工作,负载或用户可能会对性能产生负面影响。
1.2.7 资源可用性
应用程序性能受资源可用性的影响最大
1.2.8 缓存瓶颈
无法尽可能地使用缓存, 直接导致需要更多的主机实例, 意味着要在云上花更多的钱. 坚实的APM技术可以快速,自动地识别任何层级的应用程序基准性能的偏离,从根本上保护用户体验,品牌声誉和数字信任。在没有APM工具查看瓶颈的情况下,在云端托管应用程序是扔钱。
1.3 应用程序 前后端交互1.3.1 数据库
根据 的数据,近90%的应用性能问题与数据库层有关。这是由于许多情况下 - 数据库是大多数应用程序的核心; 他们很复杂 他们很难水平地缩放; 最后但并非最不重要的是,大多数操作团队对其中的内容几乎没有可见性。
虽然应用程序的前端和后端通过应用程序类型差别很大,但几乎所有的共同点都是它们对事务数据库的依赖.最强大的应用团队使用一个APM工具,可以在一个统一的视图中提供此上下文信息。
1.3.2 数据