议题五 Pecker系统助力微博软件质量提升 微博于喆

1. 大会视频回放链接:http://www.itdks.com/eventlist/detail/2823
2. Pecker系统助⼒力力微博软件质量量提升 于喆
3. 1 微博特点介绍 ⽬目录 2 设计⽬目标 3 流程与架构 4 成果与展望
4. 微博特点介绍 全球最⼤大的中⽂文社交媒体,世界第七⼤大社交产品 业务线多 Feed、视频、图⽚片、⾳音乐、⽂文 章、运动、问答、⽀支付 流量量⼤大 截⽌止2018年年6⽉月,⽉月活4.31 亿,⽇日活1.9亿 迭代快 单周发版,各业务线需求的持续更更新的同 时,也让微博软件的质量量⾯面临了了巨⼤大的挑战 受众⼴广 政府部⻔门、社会组织、企业机构、 媒体、公众⼈人物、专业⼈人⼠士
5. ⾯面临的挑战 微博在业务爆发增⻓长的过程中,软件质量量也受到了了前所未有的挑战 上线突发Crash 业务复杂,发版前⼈人⼯工很难保证全覆盖测试 崩溃信息不不完善 之前的⽇日志系统是在微博创建之初开发的,已 经不不能满⾜足现在微博的需求了了,主要体现在性 能瓶颈和Native Crash信息不不全 性能波动 发版前没有做性能监控 ⾃自动化程度低 发现问题⼤大部分是⼈人⼯工,整个流程在时 间上是不不可控的,效率上也是低下的 反馈不不及时 线上问题不不能及时反馈给功能开发者。会 让问题持续在线上存留留,更更有可能代⼊入下 ⼀一次的版本中
6. 设计⽬目标 预防新增 只有⽌止住新增问题,才能确保问题的收敛。优化了了开发流程,尽最⼤大可能不不带着问题上线 去除存量量 版本上线后,收集回来的问题⼀一定在下⼀一次的版本中解决才会发版,确保存量量问题会逐渐的收敛 提供详尽的崩溃信息 如果能提供详尽的信息,对于问题的解决会起到事半功倍的效果 ⾃自动化 除了了⾃自动化测试,还包括报警⾃自动化,⾃自动创建jira,并邮件通知负责⼈人以及打包和发热修复 及时响应 完善线上的报警机制,确保能在问题发⽣生的第⼀一时间收到线上报警通知 应急修复 线上修复紧急问题
7. 系统架构 数据反馈 异常报警 任务分发 邮件通知 应急修复 报表统计 数据监控 发版前 静态检查 OOM检查 Alpha监控 性能检查 线上 Crash监控 新增监控 灰度监控 渠道监控 性能异常监控 SDK Infer LeakCanary Lint AQTS Switch
8. 开发流程图 提交代码 Pecker系统与开发流程结合 编译检查 ⾃自动打包 代码扫描 功能测试 ⾃自动部署 启动耗时 ⽇日志上传 ⾃自动化测试 …… 内存检测 稳定性检测 ⽇日志收集 修改问题 邮件通知 ⾃自动分配 创建jira 分类聚合 ⽇日志分析
9. Dev阶段 代码提交 代码扫描 Dev Branch 代码提交 Release A 存在必修问题 合格 进版 预防新增 Release B 减少存量量
10. Alpha阶段 之前流程 ⼈人⼯工测试 测试⼈人员 创建jira 开发者 ⼈人⼯工测试 ⾮非Crash问题创建jira 测试⼈人员 现在流程 ⾃自动化测试 Crash信息上传 ⽇日志聚合 问题列列表 开发者 发版前,问题列列表 不不为空,暂停发版 开发者 Pecker系统可以提供全链路路的⾃自动化处理理
11. 线上阶段 出现Crash ⽤用户 ⽇日志上传 聚合 Top 20 ⽇日志处理理 触发报警 ⾃自动通知 • 报警机制 可以让微博研发⼈人员能及时应对线上出现的问题 • 线上必解问题收集 通过⽇日志聚合整理理出来线上的必解问题,处理理完必解问题将作为下个版本发版的必要条件 热修复
12. AQTS 设计⽬目标 功能稳定 采集系统不不能出现崩溃 体积轻便便 作为SDK,⼀一定要体积⼩小,轻便便,不不 能给使⽤用者带来过⼤大的体积的困扰 简单易易⽤用 尽量量简单的接⼝口,使⽤用⽅方便便⼜又不不易易出错 灵活配置 提供⾃自定义的⽇日志上传机制和上传策 略略,减少其他应⽤用接⼊入成本
13. AQTS 主要功能 异常检测 发⽣生异常要能迅速捕捉到 异常存储 当App发⽣生异常时,要能准确保存异常信息 ⽀支持配置为离线存储 异常上报 ⽀支持动态配置上报策略略,结合设备当前的⽹网络状态,可 以实时上传,也可以定时上传 信息详尽 提供尽量量多的异常时刻崩溃信息,为开发者提供详尽的⽇日志, 帮助开发者快速定位和解决问题 数据完整 确保上传到服务器器的数据是完整可⽤用,默认⽀支持失败重 试机制
14. AQTS 业务接⼝口 总控⼊入⼝口 业务组件 Crash检测 Memory检测 性能检测 基础组件 数据采集 数据存储 数据上报 ⼯工具组件 ⽹网络库 数据存储 数据监听 dump⽂文件⽣生成 …
15. AQTS-Java崩溃采集 出发点: 尽最⼤大可能为开发者还原崩溃现场 ⼒力力争模拟开发者debug时所能看到的⽇日志
16. AQTS-Native崩溃采集 Google Breakpad⼆二次开发 提供Java调⽤用栈信息 提供Logcat信息
17. 内存检测 静态: 代码提交 代码扫描 Infer 动态:
18. 启动耗时优化 Pecker系统除了了为稳定性提升提供有⼒力力的⽀支持,也为性能优化提供了了丰富的数据⽀支撑 之前WeiboAPK结构 classes.dex classes2.dex classes3.dex classes4.dex A.jar B.jar C.jar D.jar … Assets APK
19. 启动耗时优化 第⼀一次优化-针对ART DexClassLoader Android5系列列 Android6以及上 Hook execv 传⼊入不不存在的output⽂文 件夹
20. 启动耗时优化 第⼆二次优化 classes.dex classes2.dex classes3.dex … APK classesN.dex 细节: 4.4系统,要对RawDexFile->pDvmDex->memMap分配内存空间 解压缩dex放到native层,防⽌止OOM
21. 成果与展望 Pecker系统上线后,可以从数据上看到微博客户端在稳定性和性能上的改变 Crash率趋势 启动时间趋势
22. 感谢