去哪儿网内部常用应用个数超 3000 个、代码行超 5000 万,开发人均负责 5 个应用、10 万行代码。这种情况下,一方面对历史代码的维护负担重,另一方面业务高速发展、对开发效率要求高。
为解决这个矛盾,在 2022 全年开展了公司级的系统瘦身项目,最终成功精简了约 50% 的代码,超 2500w 行代码被删除。在整个过程中我们找到了一条高效、零风险的系统瘦身的方法,积累了大量代码精简经验,分享给大家。希望能让开发同学轻装上阵,减少系统债务、提升研发效能。
一年狂砍 2500 万行代码,零故障!去哪儿网系统瘦身技术揭秘
1. 背景介绍
1)背景
2)问题
3)目标
4)挑战
5)整体思路
2. 服务精简实战
1)可精简服务特征分析
- 合并服务:能合并的服务,有什么特征 - 删除服务:能删除的服务,有什么特征
2)“找得到”:根据特征自动、批量找到可精简服务目标集
- 没流量 - 不迭代 - 删得好
3) “删得好”:删除服务,要求 准、全、快
3. 代码精简实战
1)可精简代码特征分析
2)“找得到” 方案选型:通过技术手段,找到线上无流量的代码集。可选方案:AOP、Agent、SA
3)SA 方案详细设计
- 性能无损跑数 - 跑数代码实现 - 计算可精简方法集 - 校准可精简方法集
4)SA 整体方案串联
5) “删得好”
- 全自动代码精简方案 - 半自动代码精简方案 - 验证 “删得好”
4. 最终效果
1)平均需求耗时降低 10.9%
2)平均发布耗时降低 9.5%
5. 未来展望
1)代码行粒度流量分析
2)长周期代码
3)配置精简
4)依赖精简
5)自动化服务合并
1. 后端开发者:了解多种代码精简技术及其优缺点,重点掌握 SA 技术,零风险实现对线上代码的精简
2. 团队管理者:获得一种团队代码治理、提升开发效率的手段
去哪儿网基础架构组资深开发工程师、公司云原生 SIG 成员,专注于云原生、效能领域。负责测试环境治理平台 Noah、代码瘦身平台。优化过 Noah,使环境构建成功率提升 35%、耗时降低 30%。22 年深度参与的“线上服务瘦身50%”项目获得公司级技术型一等奖,指导多个团队完成系统精简,积累了大量经验。毕业后曾就职于 BES,从事 PaaS 云、DevOps 平台开发工作。