闲鱼应用迁移实践

379次阅读  |  发布于3年以前

背景

idlecenter是闲鱼服务端元老级应用,在2013年6月idlecenter写下了第一行代码,随后陪伴闲鱼走过了8年的时间。

随着闲鱼业务规模的不断庞大,业务复杂度的不断增加,idlecenter逐渐暴露出一些问题:

直接引发的影响是研发效率:多个团队几十个研发共同维护上百个业务,每次发布都会有十几个分支,每增加一个分支,都会面临代码冲突的风险。据统计一次应用发布构建加部署需要半个小时,分支冲突解决需要二十分钟,严重影响开发效率。

长远影响:

为了解决idlecenter的各种问题,我们从7月份开始对idlecenter进行拆分迁移。到目前我们idlecenter整体迁移进度过半,人力投入成本不到20d,迁移零故障。

本文把我们这次迁移的思路和实践经验沉淀下来,希望能为做应用迁移的同学提供一些思路。

迁移总体分为两个部分:

代码迁移

在开发期的代码迁移环节,我们需要思考的问题是:

这里我们沉淀了关于代码迁移的普适性原则:

流量迁移

在运行期的流量迁移环节,我们主要考虑的两个问题是:

迁移方案

太高昂的迁移成本会为迁移项目的推进增加很多阻力,因此在方案调研阶段,需要关注迁移成本问题。我们在方案调研阶段明确了目标:

最终我们设计了基于HSF路由功能的平迁方案。

HSF全称High-Speed Service Framework, 是一个集团内的RPC框架。直接对标的产品是Dubbo。其运行机制总体如下:

引用自hsf-guide文档

涉及核心组件:

我们方案复用了HSF框架中的服务调用路由规则能力。通过路由规则介入服务消费方的选址逻辑,完成服务提供方的流量迁移。

基于HSF的平迁方案,我们实现了:

最终体现在人力成本上的结果是:迁移成本降到最低,一个人一个星期可以完成一个服务的迁移上线。

解决了迁移成本的问题后,我们需要解决迁移最重要的问题:稳定性保障。

稳定性建设

关于流量迁移过程的稳定性,我们的思路是复用集团内部沉淀的安全生产方法论——安全生产三板斧:可灰度、可观测、可回滚。围绕安全生产三板斧构建稳定性体系。

可灰度实际就是对HSF平迁方案的灰度能力做验证,确保应用在平迁过程中流量分布能符合预期。我们需要考虑的问题有:

其次,我们需要验证HSF平迁方案的可回滚能力:

针对以上待验证点,我们在测试环境做方案POC验证,输出了《HSF平迁方案可行性报告》。简单总结验证结果:

可灰度与可回滚能力解决了发布过程中影响面可控的问题。而可观测性是我们稳定性保障的最后一道屏障。可观测性是否准确细致决定了我们灰度平迁过程能否平稳落地。

在我们实践中可观测性建设分为两个部分:

在稳定性体系的建设下,我们最终实现了迁移零故障的成绩。

写在最后

最后,要做好应用迁移还有非常重要的一点:做好checklist。提前制定好迁移步骤,切流放量节奏;每次放量时能对影响面有大概量级的评估,在上线前能在测试环境完整演练一遍流程。这里我列出我们程的checklist模板:

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8