【AICon】探索八个行业创新案例,教你在教育、金融、医疗、法律等领域实践大模型技术! >>> 了解详情
写点什么

阿里巴巴陈武:通过亿级用户 App 的实践验证,锤炼高质量 APM 体系

  • 2016-08-02
  • 本文字数:3524 字

    阅读完需:约 12 分钟

在这个飞速运转的移动 App 时代,有一句格言——快总比慢好。这也使得对移动 App 性能的管理、优化需求变得越来越急切,不可忽视。

2016 年 8 月 18-19 日,由极客邦、InfoQ 和听云联合主办的 APMCon2016 中国应用性能管理大会将在北京举行(现在报名,享8 折优惠),聚焦当前最为关键的移动端、Web 端和Server 端的性能监控和管理技术。本届大会,我们有幸邀请到了阿里巴巴高级无线技术专家陈武(花名:苍井),前来分享《性能可视化实践之路》的内容,向参会者介绍系统化的App 性能度量实践体系,以及百川在APM 领域的开放方案。

而在会前,我们对陈武老师进行了专访,以下是专访文字整理。

InfoQ:您之前在腾讯从事产品开发,后来到阿里做技术研发工作,对技术和产品领域深有经验,能不能谈谈您对技术性产品的理解?

陈武:这个问题需要从三个层面来回答。

产品层面的挑战:在 App 开发领域,产品大部分是面向终端用户,把服务包装成 App,在很多产品场景下,产品经理可以很好的参与产品体验。而在技术产品领域,受众则是广大的开发人员,我们提供的不是一种日常的业务场景,而是某种开发场景,所以想找一个对技术很了解的产品经理是非常难的一件事情,让一个技术很好的开发把产品梳理的很清晰也是一件非常难的事情,所以在整个业界有很多很牛的开源技术,但是真正产品化很好的开源技术却非常少。

技术层面的挑战:在国内 BAT 都做了很多技术开放,包括百川也做了 2 年的技术开放,这些开放产品大部分是 to B 的场景,很多厂商接了你的 SDK,首先考虑的是包的大小,包大小意味着推广成本。其次是运行时对性能的影响,这个直接关系到体验。最后是服务的效率,像阿里的 TAE、百度的 BAE 这种服务,用户基本是把身家性命都挂在你上面了,服务不可用之后能否快速发现并快速解决是至关重要的。

技术选型:大公司技术大部分比较成熟,比如百川的产品大部分都经过手淘、支付宝这种亿级的 App 的实践验证,加上严格的研发测试流程,确保了整体产品稳定性。

InfoQ:能否介绍一下您在淘宝参与过的无线中间件研发,有哪些中间件?是否有开源计划?

陈武:我在淘宝主要参与无线大数据采集系统和研发支撑体系建设,从客户端 SDK 到服务端数据网关都有涉猎,大部分数据产品都带一些业务属性,暂时没有开源计划。

InfoQ:请陈老师简单介绍一下百川技术开放平台的架构是怎么样的?这样的架构有何优点?

陈武:百川技术开放平台主要是给移动开发者赋能的一个平台,百川为开发者提供了快速构建,提升留存,帮助开发者通过电商变现三项能力。技术开放平台是基于 PaaS 的服务,包括一系列的客户端 SDK 和百川产品控制台。开发者可以按照自己的需求选择接入客户端 SDK,比如用户反馈,性能调试,电商变现,掌中测(新产品)等 SDK。百川控制台提供了统一的 PaaS 服务,这样的结构对开发者来说客户端接入是最轻量的,服务也是可定制化的。

InfoQ:我们看到阿里百川为开发者提供了很多创新的工具和服务,如热更新服务,能否简单介绍一下。对于这些工具和技术的服务化过程中有哪些难点?

陈武:热更新服务提供给开发者一种无需发版等待,实时修复应用线上 bug 的方案。通过线上发送补丁的方式,在类加载阶段操作指针进行方法的替换,实现在线 bug 热修复的功能。热更新服务端还提供分应用、分版本发布,提供完善的版本管理服务;多阶段发布,本地测试、灰度测试、全量发布,防止补丁错发误发;

对于这些工具和技术的服务化过程中,难点在于如何将纯粹的技术转化为面向大众开发者的服务化工具,这就要求我们更好地包装技术,提供给开发者更加简易的接入使用方式,更加安全可靠的使用体验,更加贴近开发者的服务化功能。

相较于业界的其他热修复产品,HotFix 对设备的兼容性稳定性更好,HotFix 同时支持 Dalvik 和 ART,兼容极大多数的 2.3.3 到 6.0 的设备。阿里的 Hotfix SDK 无需重启就可以立即生效,对金融类和电商类这种时效性很强的业务无疑是更好的选择。

InfoQ:中间件技术是淘宝的核心技术,能列举一下您的团队现在正在使用的中间件吗?在研发过程中遇到过哪些障碍?解决方案是什么?

陈武:手机淘宝是一个多 bundle 的架构,几乎所有模块都包装成了 SDK,包括业务的 SDK 和基础的 SDK,大家使用比较多的有 accs(网络连接),Agoo(推送),weex(动态化),WindVane(H5 容器)HotFix(热修复)等。阿里在没有做多 bundle 解耦之前模块依赖比较严重,手淘几百个人的团队经常打个包需要好几天时间来处理集成的冲突问题,后面我们做了中间件的隔离,业务之间通过暴露服务来解耦,整体研发效率和代码可维护性都得到了比较好的控制。再加上我们的摩天轮打包平台,把集成、编译、安全、发布做了统一的收口,用系统化的方式保证了快速交付的能力。

InfoQ:在移动性能优化中,一些调试工具如 Instrument 和 mAPM 监控的分工是怎样的?

陈武:Instrument 是一个开发期的调试工具,主要用来客观的定位某台设备的性能瓶颈,其功能要比 mAPM 强大很多,受设备数和生产环境影响,Instrument 很难收集用户复杂使用场景下暴露的性能问题。mAPM 是一套移动 App 的运维监控体系,可以收集运维期的用户性能数据,如 crash、网络失败、卡顿等,mAPM 可以发现一些用户特定使用场景下的性能问题。一般是看开发的生命周期,结合使用。

InfoQ:阿里百川在移动应用性能监控方面能提供哪些能力?

陈武:具体能力如下:

  • 百川 APM 提供移动应用端 + 服务端深度应用性能监控服务,提供精确至代码行的故障定位,是一套非常全面的端到端应用性能解决方案。
  • 移动应用端关注影响用户体验的核心问题:崩溃、ANR、网络请求错误以及响应时间过长等,帮助开发者提升移动应用的用户体验。
  • 服务端关注关键节点的性能情况:数据库操作、NoSQL 操作、API 接口调用等,同时提供性能问题追踪、服务端环境监控、自定义告警等服务。

InfoQ:阿里百川 APM 有哪些性能指标?

陈武:首先,阿里百川 APM 的移动端实现了对崩溃、卡顿以及网络性能的监测。崩溃(以及卡顿)部分会展示异常发生的次数、影响的设备情况、在不同设备和系统中的分布等。同时,还提供详细的错误日志,来帮助用户找到出错的代码行,并进行错误定位。网络部分会对响应时间、错误率、请求量、运营商、网络环境等因素进行统计,多维度展示网络性能情况,同样对于网络错误,也有丰富的日志信息来定位问题。

InfoQ:阿里百川 APM 在性能监控方面,如何做到最小侵入?怎样对性能影响最小?

陈武:这是两个问题,分别回答如下。

接入成本:百川 APM 的 SDK 探针采取 AOP 的编程方式结合 Java ByteCode Instrument 机制,在编译时注入监控代码,以减少开发者的接入成本。另外,我们还通过配置文件进行初始化做到了零代码集成。

性能影响:我们在性能开销上做了很多优化,比如我们的帧率探针,我们会按照用户点击屏幕的频率来动态调整检查的时钟,以保证尽量的减少 CPU 消耗。网络的一些数据我们在客户端采集的时候有一些缓存队列,缓存满了才 commit,在上传数据的时候也做了压缩,减少网络开销。

InfoQ:阿里百川目前使用的数据可视化框架是什么?是自研还是第三方?

陈武:内部有 G2、Data-v、Ant-D,Ant-V 等,业界有 D3,E-Charts。百川按照产品线的业务场景有不同的技术选型。

InfoQ:对于运维领域的数据可视化实现,您认为有哪些难点,如何确保展示真正有用的信息?

陈武:难点有端到端的全链路分析,需要结合业务来跟踪请求数据,要从接入层、到 Web 容器、应用业务中间层、DB 等都打上标记,在数据大盘上清晰的看到一个业务请求经过的路径和耗时,对于慢请求分析,全链路压力测试都有非常直观的帮助。

还有如何统计应用概览数据,数据大盘的概览数据需要非常简洁概要的表现应用的整体情况,这一层的数据是根据各个模块的数据聚合汇总起来,难点在于数据聚合模型的建立和计算空间时间复杂度上的平衡,既要保证数据是准确体现业务运行情况的,又要保证一定的实时性。

InfoQ:在 8 月份的 APMCon2016 大会上,您将现场分享《性能可视化实践之路》内容,具体会讲那些技术点呢?参会者能有哪些受益?

陈武:主要围绕影响用户体验的几个因素,包括耗电,耗流量,卡顿,闪退,网络错误,视觉还原体验等常见的影响留存的 case,探讨研发生命周期中如何做到研发期性能可视化,运维期性能监控告警。带给开发者的是一个系统化的 App 性能度量的实践体系,以及百川在 APM 领域的开放方案。

InfoQ:感谢陈武老师接受我们的专访,期待您在 APMCon2016 大会上的精彩演讲。

关于受访者

陈武,阿里巴巴高级无线技术专家。91 无线最早一批 iOS 开发者,2010 年加入腾讯先后经历手机 QQ、QQ 空间、应用宝等多款产品开发,2013 年进入阿里巴巴,从无线数据采集到性能可视化,再到百川平台,参与阿里多款无线技术中间件产品的研发。

公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2016-08-02 00:097069
用户头像

发布了 162 篇内容, 共 71.4 次阅读, 收获喜欢 196 次。

关注

评论

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

[架构师训练营] 第一周学习总结

Fango

架构师训练营 4 期

第十一周课后练习

晴空万里

第一周架构方法-周总结

潘涛

知识改变命运,你相信这句话吗?

熊斌

成长 演讲 教育

第九周-学习总结

Mr_No爱学习

物联网基础知识整理及实战

garlic

物联网

SAML和OAuth2这两种SSO协议的区别

程序那些事

权限系统 OAuth2 程序那些事 SAML SSO

系统安全高可用总结

Mars

第六周命题作业

cc

北极科考:我们为什么要在北极呆上一年?

脑极体

甲方日常 78

句子

工作 随笔杂谈 日常

架构师训练营第一周作业-学习总结

阿德儿

[架构师训练营] 食堂就餐卡系统设计

Fango

架构师训练营 4 期

架构师培训第一周学习总结

跳蚤

LeetCode题解:264. 丑数 II,二叉堆,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

架构师训练营 1 期:大作业(一)

piercebn

架构师训练营第 1 期

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

菜青虫

架構師訓練營 大作業二

ilake

食堂就餐卡系统设计

永不言弃

架构

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

万有引力

架构师训练营第 11 周课后练习

菜青虫

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

阿德儿

指令重排序、内存屏障很难?看完这篇你就懂了!

Java鱼仔

Java 程序员 面试 JMM 指令重排序

Spring 源码学习 12:registerBeanPostProcessors

程序员小航

Java spring 源码

系统高可用原因分析&方案

Mars

编程常用的加密方式

皮蛋

加密 加解密 加密技术

Week11总结

lggl

食堂就餐卡系统设计

跳蚤

第六周学习心得

cc

架构师第一周总结

永不言弃

分析了2020年3万多条的微博热搜,我看到了什么

CoderW

Python 程序人生 爬虫 后端 微博热搜

阿里巴巴陈武:通过亿级用户App的实践验证,锤炼高质量APM体系_DevOps & 平台工程_Lucien_InfoQ精选文章