写点什么

专访 OneAPM 创始人何晓阳:APM 将是开发者必备服务

  • 2015-04-17
  • 本文字数:2995 字

    阅读完需:约 10 分钟

总编访谈”是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:感谢晓阳接受专访。

2015-04-17 02:255727
用户头像

发布了 501 篇内容, 共 255.7 次阅读, 收获喜欢 60 次。

关注

评论

发布
暂无评论
发现更多内容

系统性能的主要技术指标以及变化

皮蛋

架构师训练营第 1 期第 11 周作业

好吃不贵

极客大学架构师训练营

【Java基础】-- instanceof 用法详解

秦怀杂货店

Java

架构师训练营第 1 期第 11 周学习总结

好吃不贵

极客大学架构师训练营

到手的股权,又没了 | 法庭上的CTO(2)

赵新龙

股权 CTO 28天写作

java集合【10】——— LinkedList源码解析

秦怀杂货店

Java 集合 linkedlist

11.8作业

张荣召

使用PicGo存储markdown图片(阿里云或者github)

秦怀杂货店

markdown 图床

Mybatis【5】-- Mybatis多种增删改查那些你会了么?

秦怀杂货店

Java mybatis JDBC

架构师训练营 - 第十一周作业

一个节点

极客大学架构师训练营

JDBC【4】-- jdbc预编译与拼接sql对比

秦怀杂货店

sql JDBC

第七周总结

孤星

架构师训练营 -week11-总结

大刘

极客大学架构师训练营

架构师训练营 - 第十一周总结

一个节点

极客大学架构师训练营

月薪8k和月薪38K的程序员差距在哪里?学习Linux C/C++ 这些你就知道了

ShenDu_Linux

c++ Linux 程序员 Linux服务器开发 C、C++程序员

架构师训练营第 1 期第11周作业

业哥

5 千字长文+ 30 张图解 | 陪你手撕 STL 空间配置器源码

herongwei

c++ 源码 后端 内存 stl

性能压测的时候,随着并发压力的增加,系统响应时间和吞吐量如何变化,为什么?

落朽

架构师训练营第七周作业

丁乐洪

架构师训练营第11周课后作业

吴传禹

极客大学架构师训练营

架构师训练营第11周总结

吴传禹

极客大学架构师训练营

从华为看VUCA时代如何让组织不断乘风破浪?

Alan

华为 战略思考 组织发展 组织活力

《Linux就该这么学》PDF版免费下载

计算机与AI

Linux

架构词典:缓存

lidaobing

缓存 架构

JVM,JRE,JDK之间的区别和联系

入门小站

JVM

IT做得好的时候,是什么状态?

boshi

职业

第七周作业

孤星

11.1安全架构:Web攻击与防护

张荣召

秒懂DHCP是什么

【java基础】-- java接口和抽象类的异同分析

秦怀杂货店

Java 接口

Mybatis【6】-- Mybatis插入数据后自增id怎么获取?

秦怀杂货店

mybatis

专访OneAPM创始人何晓阳:APM将是开发者必备服务_Java_崔康_InfoQ精选文章