中国应用性能管理行业盛宴—2017中国应用性能管理大会(简称APMCon 2017)于8月10日至11日在北京新云南皇冠假日酒店隆重召开。本届APMCon是由听云、极客邦和InfoQ联合主办,作为国内APM领域最具影响力的技术大会,本次大会以“驱动应用架构优化与创新”为主题,致力于推动APM在国内的成长与发展。
听云产品副总裁Moca于APMCon 2017大会主论坛发表了题为《风起云涌-APM开启全新数字化体验时代》的演讲,现场解读了全球范围内,APM如何帮助企业进行数字化转型以及APM行业未来的发展趋势。
以下为演讲实录:
Moca:大家上午好,非常感谢大家来到第二届APMCon的现场,很荣幸作为听云的代表为大家分享关于APM的话题。
听云作为APM的先行者,从2014年到2017年经历了APM摸索阶段和、市场认知初期的状态,同时也是越来越多的厂商去应用APM,越来越多的技术在APM领域蓬勃发展的阶段。这其中非常大的变化,就是我看到百度搜索关键词的竞价排名单价翻了好几倍,所以说这个市场变热了,大家搜索的意愿都提升了,大家也对这个行业和这个技术有了更大的兴趣和应用。
这个调研表明了全球CEO在2017年度到2018年度中企业最关注的两件事是什么。第一点毋庸置疑的是企业的增长,第二就是与IT相关。所以在广义的企业中,不只是互联网厂商,在传统企业当中的IT部门里,我们整个IT的从业人员在企业的地位也是得到了很大的提升。那么为什么大家都开始关注IT相关的技术呢?是因为它被证实的确可以促进企业的发展和业务的增长。
这些都是大家耳熟能详的IT细分领域,包括企业上云、数字化营销、如何利用IT技术提升企业的产能等。这些细分领域都得到了相应的重视,就是因为其中的数字化转型,也就是说企业会更多的用IT的方式和数字化的方式去促进自己的业务增长。
数字化转型我认为给广义上的企业带来了最大的两个变化,第一个是业务更多的去通过数字化的媒介进行承载,比如像APP、微信,包括现在的微信公众号,以及IOT的设备、网站等;另外就是IT的运维团队原来可能更关注的只是保障系统的稳定性,现在还要去想如何适应企业的业务创新和快速发展,怎样用新的架构、新的开发模式来适应发展。
因此现在企业内部的IT团队和越来越多的业务团队,越来越通过数字化来承载业务,他们希望对业务的交易性能能有更高的能见度,这就很大的促进了整个IT性能管理软件这个细分领域的猛烈增长。基于现存的全球90亿美金的市场,2015年也有13.9%的增长。这个增长在IT的细分领域是非常大的,要知道全球普通的IT细分领域每年的增长也只是6%左右。
这是Gartner对性能分析技术这个软件细分领域的技术炒作趋势图,其中APM已经过了技术初期的状态,并从低谷逐渐走向了从技术成熟区,也就意味着这个技术在两年到五年之内会被整个的市场普遍的应用,这是整个国际的趋势,在国内可能稍微晚一点。
但是我发现在今年的APMCon中,大家对APM技术的关注越来越高,而且从整个市场的接受度来说,也可以看出现在已经不是初期的阶段,有很多的厂商,包括刚才Wood所讲的,很多观望者都已经开始进到了这个领域里。
APM是在IT性能分析软件的细分市场中唯一相对成熟且高价值的技术。由于数字化转型的到来,越来越多的业务通过数字化媒介去承载。
但是传统的IT监控体系其实更多的是从下往上建立的,也就是从数据中心内部,从技术组件、基础架构监控出发建立的。并且更多的IT运维团队,大部分的KPI是以9为论的,比如“四个9”。但是,我们发现这样的一个监控体系已经不能满足现在企业高速数字化转型的进程了,为什么呢?
因为我们发现,面向基础架构的监控只能发现30%左右的问题,而另外70%的问题是发现不了的。因此,当他们接到用户投诉的时候,由于这些问题并不是在基础架构组件中能发现的问题,并且用户并不会投诉说是不是你们的CPU过热了、磁盘IO是不是该清理了,他们肯定只会说我这个页面打不开,按纽点了没有反应,或者发生了白屏等等。那这些问题很多都是由于运营商劫持导致的,用户那边看到的内容跟本身的厂商提供的并不一样,或者是网络出现了问题,然后这边的内容根本就没有加载出来,出现白屏等这样的问题。所以我们认为,下一代的应用性能监控应该是从最终用户体验来出发,并且能够把整个前端的用户体验以及后端的应用、OS、后端的组件以及基础架构层做串联,当发现一个问题的时候我们可以把它串起来,并且第一时间发现问题根本原因。
Gartner对2016年的APM也做了提升的定义,其中APM不是新词,但是是这几年才火起来的技术领域。之所以火,就是因为有一些新的技术改革以及新的业界发展形态所带来的改变。Gartner对APM2016年做的必须具备的能力有三个,其中我认为可以突出讲的有以下几点。
第一是数字化用户体验的监控(DEM)。过去的APM其实更多强调的是应用的发现、拓扑、追踪与诊断。那现在由于更多的业务去通过数字化呈现给用户,数字化用户体验的监控就会变得非常重要。这中间就包括主动式的模拟探测监控以及被动式的嵌入式监控,这种监控方式能够第一时间发现终端用户产生的一系列的劫持、网络问题、崩溃等性能问题,并且能够通过传统APM的能力串联,最终追踪发现问题。
第二强调了应用分析(AA)。原来应用分析和性能的分析更多的是通过图表的分析去看趋势。那么现在Gartner要求我们对整个应用性能的分析过程中要加入自动化运维、加入大数据的分析和数据拟合建模分析能力,来帮助用户甚至预测性能发展的瓶颈和趋势。之后我们裴丹教授也会讲很多的算法,我们之间也有一些交流。就是如何用一些算法科学能够找到性能的瓶颈去做诊断。像这样的技术能力现在已经被越来越多的应用到APM的领域当中。
APM应用场景
我刚才讲了整个应用性能管理行业的趋势和新的变化,以及整个行业的认知。现在我给大家分享的就是在这三年当中我们所发现的,在2016年到2017年三个比较新的APM的应用场景。
APM的核心能力是能够把应用的整个拓扑关系,后端组件的依赖关系,通过一个事物去进行串联。过去传统的APM主要的意义在于发现问题并且能够定位到代码级别的问题,做根因的诊断。但是由于这两年数字化转型的变革,有一些新的应用场景。
1. 如何去用APM做用户体验的量化与优化。
2. 在很多上云的进程中,APM如何帮助企业做云的选型、上云后的管理,甚至帮助云厂商做云各个节点路由的优化策略。
3. APM如何结合DevOps内部的推进。
一、APM如何做用户体验的量化与优化
先来看看用户体验,大家都知道它非常重要。现在各个行业,尤其是最终用户的行业用户体验极为重要,因为竞争太激烈了。
这张图大家看着像油画,其实是卫星探测的共享单车,这个其实是比较夸张的,但这是我们现实中的图,能证明这个行业非常的激烈。如果你的性能不够好,用户很容易就切换到另外一家厂商。同时像航空业、国航、东航、南航,各个都有自己的App。用户更多的通过数字化来承载他们的业务,他们选择价格因素是其中之一,当时时效性的性能和体验也决定了用户是不是能够对你的品牌有忠诚度、好感度,以及后续的使用习惯。所以用户体验的优化其实是一个非常重要的,并且需要持续去做的一件事。
我们的客户经常问三个问题,这三个场景比较常见。第一个问题是像双11大促或者是有一些事件性的活动上线的时候,如何动态的掌握用户体验,能够及时止损,并且能够在这个过程中或者在之前就能做到优化和并且快速的决策;第二个问题,不光是我们互联网厂商,很多传统的企业,像航空业,包括制造业,高科技产业,他们内部的OA的APP每周都要迭代一次,迭代频率非常快。那么如何在迭代过程中从用户体验这边制定一个衡量的标准;第三个问题是如何定义用户体验并快速定位问题。什么意思?在座的各位想想,用户体验用什么指标来去定义,你们心中有一个统一的目标吗?大家会说响应时间。但到底是后端的响应时间还是什么呢?大家可能没有统一的定义。所以从监控的角度我们应该去定义到底什么是好的、什么是不好的,才能去帮助我们的客户和开发者快速的发现这个问题,才能有统一的标准。针对以上这三个问题我们怎么解决呢?
A、事件性的活动如何快速的决策,如何第一时间响应并发现问题
这是整个实时监控系统,并且是用户体验的监控大屏。这个大屏会被用到很多企业的IT指挥中心、作战中心,他们会把这块大屏嵌入到活动当中。这个大屏对于企业有怎样的优势呢?
1. 可以实时监测全国日活用户是怎样的,各个区域的响应时间是怎样的,其中红色代表不好,黄色比较差,绿色是比较好。
2. 结合活跃用户的发生区域看哪个地方是需要优先解决的。
3. 全国各地是否发生了劫持,劫持的区域是不是业务所重视的。
4. CDN加速情况,不同的CDN下全国的全网加速情况。
5. 将核心业务实时的展现出来,比如说我的登录页面、支付页面,在全国是否会有延迟现象。
以上这五点能够帮助用户在活动进行时做出快速准确的辅助决策。所以在做活动时的用户体验监控时,最重要的是信息化和可视化,尤其是在时效性为先的时候一定要有一块屏幕能够第一时间的发现用户体验的问题。
B、如何制定KPI,如何在快速迭代中制定这些目标,如何量化
这张图是针对APP用户体验、性能体验的打分,这个打分不光是简单的加权平均的算法,而是基于整个76个行业的划分,以及超过6亿终端的数据做的后期算法建模。其中蓝色是自己所在行业的分数,我们把这个性能分成几个重要的指标,如响应时间、崩溃、卡顿错误、流量消耗等,我们认为这几个指标是直接影响用户的体验和用户感受的。最后我们会对这几个指标进行权重以及算法,最后得出所在的行业整体用户体验大概是处于怎样的区间。根据你的APP用户体验到底是处于行业哪个位置,我们会给出一个历史评分,这其实就是行业基线的概念。所以当制定一个快速迭代的指标时,不光要看自己每次提升了多少,而是基于所在的行业去满足行业竞争的需求。
同时根据上图就可以看出客户在这段时间做了一次迭代,响应时间大大的降低了。所以这里是做了一个很明显的优化。通过这一套评分体系,就可以把用户体验的量化评分用作每次的迭代,然后去对比这次的迭代有没有上升,制定目标也是基于行业的基线去制定的目标。
C、如何定义用户体验
过去我们如果从前端开发和程序员的视角或者运维的视角来定义,要么就是服务有没有中断,要么就是整体页面加载情况怎么样,有没有错误的问题。
用户体验本身与业务很贴近,我们先去定义清楚用户体验的点,然后做切片,再去定位问题,这才是更好的视角。所以我们把用户体验这个页面的加载,把它做了一些划分,基于用户体验的重要性去做了划分,比如白屏时间、首屏时间,最小可交付的时间,以及加载时间等。根据不同的业务来自定义,比如是内容的业务,可能只关注首屏的时间加载的是不是够快就可以了,因为后面会随着刷新去加载的。另外有的页面是转到了一个可操作的页面,那可能更关注的是最小的可交互时间。所以通过这几个指标把网站的用户体验和关注的指标做切分。
所以用户体验的监控是属于数字化体验监控的范畴之内,我们做了一些创新和改造。传统其实也有一些页面级的监控软件,他们给出的就是整个的JS错误分析,Ajax请求分析,流媒体的监控,我们现在就是先从用户页面来定义这个问题,然后再分析原因。
大家可以看到,我们会把整个网站列出来,并且给出用户的访问量,以及完全加载、白屏、首屏、交互时间等各个指标。非常简单就能够看到想优化某一个页面的用户体验。发现用户体验问题,首先要关注的是PV多不多,如果不多的话就不用看。所以要基于业务的请求量排优先级。另外就是关注不同的指标做排序,关注什么就看什么的时间。
同时从不同的维度给出页面的不同维度分析,从而能够得出你的问题到底发生在哪儿。如果发现这个问题比较着重于某一个运营商,或者某一个地区的话,那么接下来就要看它的单样本数据去定位问题。所以整个流程我想给大家讲的是一个解决问题的思路,就是说过去是直接看有多少个错误,但现在的思路是要先看最重要的用户体验,并且能细分下去,然后再看单样本的数据去定位解决问题,这是现在解决问题的思路。
并不是说这个技术有多么的高深,但是这个思路才是符合现在数字化转型并解决用户体验问题的思路。通过这些元素的拓扑,我们能够发现导致加载慢的元素。并且,很多性能都会关联到后端的,比如说很多Ajax请求是由于后端的请求响应慢导致的。所以APM核心能力在用户体验解决问题的时候,要能够追踪到后面的应用,以及对应用的各个时间、分段做最后的追踪和定位问题。
刚才我从用户体验方面说了三点,一个是我们要有实时的监控体系,能够在一些事件性的情况下第一时间看到问题所在。第二就是我们要有指标体系、基线,可以达到在竞争环境中快速迭代、制定目标。第三个就是我们要能明确定义用户体验的指标,我们要优化哪些,优先解决哪些,怎么解决。
二、云体验度量
接下来就是云体验的度量。现在的情况是迎来了大拨传统企业上云,我估计今年年底的时候大家看公有云的业绩还是会有非常大的增长的。我们的客户又问了,云厂商选哪家好,云厂商分布的各个节点资源实际效果如何,因为云厂商提供的都是自己的测试报告,很难分辨出业务上去之后实际效果怎么样。一上去其实就是很难切换的,虽然说大家觉得云是一个很动态,很灵活的资源,但其实真的业务上去之后大家就会明白很难切换;第二就是上云之后如何继续保持业务的可建性,过去传统业务的板块上云之后就不工作了。第三就是云厂商也会问,如何从最终用户体验优化我的节点路由。接下来我说几个案例。
1、APM如何做云选型
这是给客户做的云的选型,从这边我们做了一个压测。我们会部署客户相同的应用到云上。另外就是通过全网的节点访问这个应用。经过节点的数量加压之后,再看网络层和应用层的监控数据,网络层主要看延时和丢包,云一明显延时比云二要高的。应用层这边的可用性比云二要好的。所以可以非常直观的看出实际业务在这上面跑了之后,云厂商给你分布的主机节点资源这些,在相同的配置下哪个更适合。
这是我们分别把云一和云二的各个服务器节点,北京、广东、上海的区域做了压测的对比。Apdex是应用的满意度指标,还包括应用服务器的响应时间,CPU使用率,磁盘IO这样的组件的数据,能看到CPU使用率云一是高于云二的。所以这也能够帮助你判断上云后所相对应的消耗大小。
2、上云后的可视化管理
上云后的管理也是非常重要的,上云后的管理需要11个相关的技术功能相互辅助。其中有一项就是Monitoring and monitering,能实时的监控、测量管理和度量,这也需要持续的使用应用性能管理的系统做管理,不管你的应用部署在哪里,APM有主动式、被动式,嵌入式的技术手段,你只要嵌入到当中就能掌握你的动态。可以排查出到底是应用的问题,还是网络问题,还是云这边机房出了问题,提前会有一个预判。
3、APM如何帮助云厂商做链路路由策略调优
这是对我们厂商节点优化的案例,其实很简单,这时APM能做的一个比较大的能力。比如说廊坊的节点给北京的用户分配,同时你这个机房,还有河南节点给北京的分配,是更好还是更次,所以需要有真实的探测和实时动态的掌握。所以这边做了两个机房服务区的对比,可以看到不同的两个北京的机房,在整个的响应时间里看,延时和丢包来说都不一样的,会有一些区别。并且这个探测是基于城市和运营商的,在这个测试结果中我没有列出具体的数据,但是北京2机房的移动效果访问不好,联通和电信比较好的。北京1的机房反而是移动比较好,在成都、杭州、济南、郑州,移动访问用户访问北京2的机房的效果不好,所以不建议在北京2的机房去服务这四个地区的移动线路。所以这就是一个非常明确和有效的链路选型的建议。
同时我们会给出基于不同运营商城市的路由,也就是说在不同的机房、在不同的城市,哪一个机房访问最终用户的体验是最好的,我们可以给它一个优化策略的路由表。所以我们现在的一些云厂商也是用这套策略和APM的办法来优化它的节点。
三、APM对DevOps的推动
DevOps就是开发人员和运维一体化,其本质是要保障促进业务的快速发展,并且是一个高质高量的保障,所以我们要有一系列的工具来保证这个效益。
#FormatImgID_18#
这是2017年DevOps的技术炒作曲线,大家可以看到APM也是在这个区间,也就是说APM是DevOps技术的高价值投入。
APM可以帮助DevOps完成从设定业务、迭代目标,到基于目标进行开发、测试、设定性能矩阵、生产环境以及设定度量的偏差,这些过程都是研发和运维一起完成的。研发要保障代码的质量,运维要保证快速的上线和迭代。
1、APM高价值的体现
其中APM对DevOps的应用最核心的价值,就是从用户端到网络层,到整个后端应用,到组件、中间件等等全部进行了串联,这也就是非常符合DevOps工作流程的方法。
a) APM对于DevOps来说是一个平台。APM可以将DevOps甚至商业部门以及测试部门用一个平台、一套数据以及一套方法论,将问题整合到一起去解决瓶颈。这个非常重要,因为现在每一个企业不同的系统、不同的部门都有不同的监控体系,他们的监测数据都是不一样的,所以如果你想实现这种快速的迭代和研发的话,就要确保大家都在一个平台,用一套语言、一套数据去说话。否则就会变成互相扯皮。
b) APM对于DevOps来说有有效的错误定位能力。APM的组件诊断的能力能够帮助DevOps团队理解并诊断基础设施组件的问题,包括函数的调用、依赖关系等等,来发现代码中的瓶颈和潜在的问题,保证DevOps中非常强调的高质量的代码。
c) APM对于DevOps来说可以快速发现特定切片的响应延迟。当产品快速上线或者测试的时候,基于事务可以从前到后拓扑出之间相互的依赖关系,以及问题发生在哪儿,哪儿有延迟,做切片的问题诊断。
d) APM对终端用户的管理,过去DevOps对终端用户的掌控力相对较弱,现在通过这一套平台能发现像劫持、崩溃等等只有终端用户才能发现的一些问题。
四、关于性能监控体系的几点建议
1、一定要把数据作为核心,APM最核心的不光是整个的体系和后台,它不是纯工具。APM在各个端、各个节点去采集数据,这些数据的来源非常可贵,因为这些数据的体现间接挖掘出了行业的基线,这样的一些数据建模的价值是很高的。同样企业内部也需要把这些数据做统一的管理和后期的挖掘,可以基于这些数据去做加强自动化运维的判断依据。
2、作为IT管理者,这里说的是广义的传统企业IT管理者,需要基于数字化转型去做新的监控体系策略。而不是只用过去传统的监控体系就够了,因为你的数字化转型如果不能随着可视化和可度量去做的话,这无异于是盲人摸象。
3、要从数字化用户体验层出发建立这套IT监控体系,并与业务数据做关联分析,这也是接下来的一个新的发展。