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 字节码插