《系统精简之道如何以极低风险高效清理线上无用代码_马阳阳.pdf》由会员分享,可在线阅读,更多相关《系统精简之道如何以极低风险高效清理线上无用代码_马阳阳.pdf(38页珍藏版)》请在三个皮匠报告上搜索。
1、系统精简之道系统精简之道:如何以极低风险,高效清理线上无用代码去哪儿旅行 基础架构部/资深研发工程师 马阳阳背景介绍背景介绍0102030405服务精简服务精简代码精简代码精简最终效果最终效果未来展望未来展望背景背景痛点痛点目标目标规划规划挖掘特征挖掘特征度量特征度量特征删除服务删除服务挖掘特征挖掘特征度量选型度量选型度量方案度量方案清理代码清理代码目 录精简成果精简成果指标分析指标分析效果指标效果指标01 01 背景介绍背景介绍为什么去哪儿网会启动系统瘦身项目?背景背景痛点痛点目标目标规划规划2023-7-214系统瘦身背景系统瘦身背景01020304业务历史悠久短周期业务多复杂度单调递增人
2、员流动频繁背景背景痛点痛点目标目标规划规划2023-7-215系统瘦身背景系统瘦身背景&痛点痛点人均代码:10w人均应用:5个一年内无变更应用:20%线上方法行覆盖率:40%维护成本高估时误差大开发进度慢背景背景痛点痛点目标目标规划规划效效率率下下降降2023-7-216系统瘦身目标系统瘦身目标&挑战挑战50%50%目标高范围广无参考背景背景痛点痛点目标目标规划规划2023-7-217系统瘦身时间及组织架构规划系统瘦身时间及组织架构规划2022.52022.112022.7服务精简代码精简瘦身公共支撑团队(虚拟)机票酒店门票火车票其他通用工具技术支持提出需求获取帮助背景背景痛点痛点目标目标规划
3、规划2023-7-218系统瘦身两步走系统瘦身两步走能筛选出目标对象准、全、快背景背景痛点痛点目标目标规划规划2023-7-219挖掘挖掘特征特征度量度量特征特征收集收集数据数据匹配匹配特征特征筛选模型(方法论)筛选模型(方法论)从具体入手明确如何度量自动化背景背景痛点痛点目标目标规划规划背景介绍背景介绍0102030405服务精简服务精简代码精简代码精简最终效果最终效果未来展望未来展望背景背景痛点痛点目标目标规划规划挖掘特征挖掘特征度量特征度量特征删除服务删除服务挖掘特征挖掘特征度量选型度量选型度量方案度量方案清理代码清理代码指标分析指标分析效果指标效果指标找找得得到到删删得得好好02 02
4、 服务精简服务精简如何自动化、低风险地精简服务?挖掘特征挖掘特征度量特征度量特征删除服务删除服务2023-7-2112可精简服务特征可精简服务特征分析分析删除删除合并合并挖掘特征挖掘特征度量特征度量特征删除服务删除服务2023-7-2113“找得到找得到”没流量网关定时任务Trace不迭代发布少Config挖掘特征挖掘特征度量特征度量特征删除服务删除服务2023-7-2114“删得好删得好”准全快准全快标准化自动化平台化挖掘特征挖掘特征度量特征度量特征删除服务删除服务2023-7-2115OR 回收主机回收应用删除起点计划中待下线下线中已下线完成人工确认人工确认观察 2 周03 03 代码精简
5、代码精简如何精准找到线上无流量的方法?挖掘特征挖掘特征度量选型度量选型度量方案度量方案清理代码清理代码2023-7-2117可精简代码特征分析可精简代码特征分析未被引用的方法(静态)重构没有流量的方法(运行时)量大(效果效果)通用性(效率效率)挖掘特征挖掘特征度量选型度量选型度量方案度量方案清理代码清理代码2023-7-2118“找得到找得到”方案选型方案选型方案一:AOP方案二:Agent 字节码插桩编写Agent加载AgentAgent记录日志上报、存储日志DB取出日志获取代码全集可精简代码集挖掘特征挖掘特征度量选型度量选型度量方案度量方案清理代码清理代码2023-7-2119“找得到找得
6、到”方案选型方案选型方案三:基于 SA 工具1、猜测:有方法执行次数的计数器2、有办法用 java 代码读到方法计数值吗?Serviceability AgentCode解释执行编译执行起初执行多次后挖掘特征挖掘特征度量选型度量选型度量方案度量方案清理代码清理代码2023-7-2120“找得到找得到”方案选型方案选型方案三:基于 SA 工具挖掘特征挖掘特征度量选型度量选型度量方案度量方案清理代码清理代码2023-7-2121“找得到找得到”方案选型方案选型方案方案性能损耗性能损耗故障风险故障风险实现复杂度实现复杂度AOP 拦截器高低高Agent 字节码插桩低中高基于 SA 工具无无低方案选型挖
7、掘特征挖掘特征度量选型度量选型度量方案度量方案清理代码清理代码2023-7-2122SA SA 方案详细设计方案详细设计 性能性能无损跑无损跑数数不接线上流量了 (进程还在)重启重启发布发布下线下线进行 SA 跑数pre_offline下线post_offline完成下线挖掘特征挖掘特征度量选型度量选型度量方案度量方案清理代码清理代码2023-7-2123SA SA 方案详细设计方案详细设计 跑数代码实跑数代码实现现Code解释执行编译执行起初执行多次后挖掘特征挖掘特征度量选型度量选型度量方案度量方案清理代码清理代码2023-7-2124SA SA 方案详细设计方案详细设计 解释执行方解释执行
8、方法法Code解释执行编译执行起初执行多次后挖掘特征挖掘特征度量选型度量选型度量方案度量方案清理代码清理代码2023-7-2125SA SA 方案详细设计方案详细设计 编译执行方编译执行方法法Code解释执行编译执行起初执行多次后挖掘特征挖掘特征度量选型度量选型度量方案度量方案清理代码清理代码2023-7-2126SA SA 方案详细设计方案详细设计 计算可精简方法集计算可精简方法集聚合,取并集有流量方法集通过 Spoon工程方法全集取取差差集集可精简方法集挖掘特征挖掘特征度量选型度量选型度量方案度量方案清理代码清理代码2023-7-2127SA SA 方案方案业务流程图业务流程图挖掘特征挖掘
9、特征度量选型度量选型度量方案度量方案清理代码清理代码2023-7-2128“删得好删得好”-多种手段多种手段全自动手段半自动手段挖掘特征挖掘特征度量选型度量选型度量方案度量方案清理代码清理代码2023-7-2129“删得好删得好”-最佳实践最佳实践全自动精简半自动精简按包路径按包路径分重要性分重要性业务业务是否重要是否重要大仓库大仓库否是否是半自动精简全自动精简重要包不重要包挖掘特征挖掘特征度量选型度量选型度量方案度量方案清理代码清理代码2023-7-2130验证验证“删得好删得好”006挖掘特征挖掘特征度量选型度量选型度量方案度量方案清理代码清理代码04 04 最终效果
10、最终效果代码少了多少?带来了哪些收益?精简成果精简成果指标分析指标分析效果指标效果指标2023-7-2132精简成果精简成果精简成果精简成果指标分析指标分析效果指标效果指标50%50%目标回顾达成情况2023-7-2133效果指标分析效果指标分析开发域测试域交付域(CI/CD)运维域新人:熟悉成本需求估时需求耗时需求耗时环境构建/更新时长编译时长发布耗时发布耗时告警量精简成果精简成果指标分析指标分析效果指标效果指标2023-7-2134最终效果最终效果3.022.69需求耗时(天)%0.00.51.01.52.03.03.54.04.55.05.56.06.57.07.58.08.59.09.50.00.51.01.52.03.03.54.04.55.05.56.06.57.07.58.08.59.09.5270244发布耗时(秒)10.9%精简成果精简成果指标分析指标分析效果指标效果指标05 05 展望未来展望未来之后还有哪些方向和技术值得探索?2023-7-2136未来未来展望展望Q&AQ&A