博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
专访OneAPM创始人何晓阳:APM将是开发者必备服务
阅读量:5797 次
发布时间:2019-06-18

本文共 3353 字,大约阅读时间需要 11 分钟。

\\\
\

”是InfoQ推出的一个高端访谈栏目,由总编辑

主持,致力于深入采访国外内顶尖技术力量,报道最前沿、最有深度的内容,分享干货和经验。

\\\
\\

本期采访嘉宾是OneAPM创始人何晓阳,他应邀接受了InfoQ专访,就APM的发展历史、现状、技术细节、未来趋势做了深入的分析。

\\\\

InfoQ:感谢晓阳接受专访,对于国内的开发者来说,APM是个比较新颖的概念,能给大家介绍一下APM吗?是如何发展起来的?

\\
\

何晓阳:从IT的发展史来看,一般来说,关键技术的变化经常会引起某个具体行业领域的变革。APM市场就是其中很好的例证。APM是Applicaiton Performance Management的缩写,也就是应用性能管理,在国外已经流行多年,这个市场是如何发展起来的呢?其中最关键的是Application(应用)的变化。如果相比以前,我们可以发觉现在Application已经无处不在了,比如看看我们的手机,上面的应用非常多,包括O2O、电商等。随着应用数量的快速膨胀,APM也从一个很小的细分市场成长为一个涵盖面很广的领域。这就是技术变化带来的巨大影响。

\\\\

那么,有些读者可能会有疑问,APM和传统的代码分析有什么区别呢?这和应用的变化紧密相关。现在随便一个应用的用户数可能就是海量的,像“足记”这样的应用,一夜之间就是上百万用户;第二个特点,云计算已经落地,原来集中式的应用部署方式,现在部署到云平台比如几百台虚机上,导致整个业务逻辑的执行路径变长。而且现在SOA很热,一个应用后端被切成几个不同的service(服务),被应用调用,各种跳转,在这种情况下,IT企业和工程师很难通过测试或者模拟来发现大部分问题。只能通过生产环境的实时监控做到。以前,我们可以通过一些测试工具跑500个或者1000个virtual user来测试性能,但现在几百万的访问量导致生产环境和测试环境产生了巨大的差异。正是在这种情况下,APM市场才慢慢壮大起来。

\
\\
\\\

InfoQ:APM本身可以分好几块,比如监控、分析、优化等,现在OneAPM主要关注哪些领域?

\
\\
\

何晓阳:APM行业本身在飞速发展。APM在上一代,强调的是监控,也就是把所有的生产环境信息收集起来,交给客户,但是并不判断问题存在哪里。而现在新一代的APM,也就是OneAPM所关注的、所强调的是分析,比如性能瓶颈在哪里?异常交易在哪里?现在无论是敏捷还是Devops,强调的都是快,所以对于开发团队来说,想立刻知道异常问题出现在哪里,这是新一代APM正在做的事情。

\\\\

以OneAPM Application Insight为例,它针对应用性能管理领域定义了五个功能维度:真实用户体验管理、应用拓扑的发现和可视化、用户自定义业务分析、应用组件深度监控、IT运营分析。

\
\\\\

InfoQ:有了APM厂商和工具,是否意味着软件公司不再需要性能测试工程师了?

\\
\

何晓阳:按照我的理解,性能测试应该是一个过去的概念,而APM是一个与时俱进的概念。现在,大多数公司可能都没有性能测试,而专业的测试工具收费比较贵,可以说,200人以下的创业公司没有考虑过这个岗位,如果是这种情况,那么创业公司可以直接用APM服务来代替性能测试工程师。对于大公司,我认为还是需要性能测试工程师,不过应该把APM服务和工具引入到正常的性能测试工作中,成为测试人员的工具箱,APM可以帮助测试人员监控和发现问题。

\
\\\\

InfoQ:OneAPM代码级的探针所采用了哪些关键技术?

\\\\
\

何晓阳:先从我最熟悉的Java说起吧。对于单机来说,应用运行在一个JVM上,对于开发者来说,基本的性能分析需求包括几点:方法的调用栈、方法的执行时间、线程锁是否异常、消耗CPU最多的线程、内存是否泄漏等等。从技术角度讲,JVM的探针,就是利用了Java bytecode instrument机制,指的是在Java字节代码生成之后,对其进行修改,增强其功能。这种做法相当于对应用程序的二进制文件进行修改。对于Java来说,就是改变JVM在加载类文件时候的行为,在客户的代码中注入一些监控的语句,实现数据收集、分析的能力。对于分布式的架构来说,就是在多个JVM之间的调用的出入口记录tag。

\\\\

像.NET、Ruby、Python等语言都是类似的机制。

\\\\

这种探针都是经过精心设计的,非常轻量级,对于应用的性能影响都控制在1%以内,与很多应用服务器自带的沉重的trace机制完全不一样。另外,我们还使用了采样分析的技术,将性能影响降到最低。

\
\\\\

InfoQ: 目前国内对APM的使用还处于初级阶段,你认为随着市场不断的成熟,开发者或者厂商是否会对APM采取更拥抱的态度?

\\\\
\

何晓阳:是的,而且不用等太久。目前创业的趋势发生了变化,在去年以前,大部分数创业者是产品经理,关注的是商业模式的创新,从去年开始,更多的技术人开始创业,关注的也是技术创新,开始精细化运营,用技术的方式来解决问题。

\\\\

第二个变化是人力成本变高了,也就是程序员越来越贵了。以前美国硅谷一个人的工作在国内可以招10个人,大家各负其责,可以承担大部分APM要做的事情,但是美国只有一个人,那么他自己搞不定APM,需要使用第三方的服务。现在中国的IT人力成本也提高了,企业发现与其招聘几个人做APM,不如直接购买线上的APM服务,性价比更高。像云计算、CDN都是这样的例子。

\\\\

通常只有火了的应用才会出现性能问题,不火的应用也没有那么大用户压力。最近有本书《创业小败局》,里面提到了21个创业失败的案例,我之前特意写过一篇文章,其中有4个案例是因为性能问题失败的,这是很遗憾的事情。

\\\\

国外创业是抱着做成的心态,中国的创业赌性比较大。等用户量上来了,才引入APM。用户体验是第一位的。国外是精细化运营的,人比较少,所以要留住每一个用户,国内不一样,只要增长率高于流失率就可以。很多行业初期是这样,后期则关注精细化运营,才想到APM的重要性。

\
\\\\

InfoQ:客户对APM最强烈的需求有哪些方面?

\\
\

何晓阳: 我认为主要有三个。首先是端到端的性能管理可视化。在分布式部署的复杂IT环境中,从前端浏览器到后端应用服务器、数据库,能够有效的监控和分析每一个交易环节的性能信息。第二个是用户体验,具体说面向真实的用户体验,实时的知道甚至预测何时出现问题,在用户还没有察觉之前,就由工程师来解决掉。第三个是,从业务的角度看IT,通过APM分析数据,把业务信息、性能信息放在一起分析,进一步发现数据之间的关联。有点类似于BI。

\
\\\\

InfoQ:用户的性能问题最容易出现在哪些方面?

\\
\

何晓阳:举三个典型例子吧。第一个是在数据库调用方面出现了严重的问题,循环几千次,对于其他的第三方服务也是类似的问题。第二个是,多个交易系统,其中某个不受重视的系统对资源的配置没有设置上限,结果该系统的用户在突然增加时,耗尽了关键的共享资源,其他交易系统无法正常工作。第三个则是配置方面,预分配了太多的资源,而实际使用率很低,导致性能问题。

\
\\\\
\

InfoQ:OneAPM刚搬到新办公室,据说又要换更大的地方?

\
\\
\
\

何晓阳:是的,我们已经在旁边的写字楼预定了一块更大的办公空间。现在员工大约有200人,以后每年都会有100多人的招聘计划,现在我们的SaaS平台客户需求非常旺盛,需要补充更多的人才来满足业务。

\
\\\\

InfoQ:上次参加OneAPM的“C to O”发布会,以应对Compuware退出中国的遗留问题,现在进展如何?

\
\\
\

何晓阳:主要三个方面吧。首先,大约40%的渠道商已经选择了与我们合作;其次,原来Compuware客户也都在与我们谈后续的合作;第3点,员工方面,我们已经招聘了一些原来公司的优秀的APM专家,包括研发、测试等职位,目前不少已经正式上班。

\
\\\\

InfoQ:感谢晓阳接受专访。

\

转载地址:http://mvsfx.baihongyu.com/

你可能感兴趣的文章
CIDR与VLSM的区别
查看>>
Spring Boot--自定义Starter之spring-boot-starter-quartz
查看>>
iOS开发,UIWebview与H5之间的交互
查看>>
poll 示例
查看>>
给scrapy设置HTTP代理
查看>>
Elastix的TCP/UDP端口映射
查看>>
Linux时间变慢解决方法
查看>>
如何利用python使用libsvm
查看>>
python:numpy(文件存取)
查看>>
MySQL 参数浅析之 innodb_file_per_table
查看>>
RHEL6启动原理和故障排除
查看>>
iOS 绝对路径和相对路径
查看>>
jquery插件页面滚动元素进入视口触发动画jquery-aniview
查看>>
(译)MySQL:在 WHERE 条件语句中使用 IF 语句
查看>>
C++程序windows To linux移植经验案例
查看>>
论文翻译-语音合成:WaveNet
查看>>
使用Python读Excel数据Insert到MySQL
查看>>
heartbeat搭建高可用NFS
查看>>
Nginx工作原理和优化、漏洞。
查看>>
Spring Boot之使用JPA操作mysql
查看>>