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