eBay整合了负责提供“查看商品”页面的服务——该页面每天加载超过 2.5 亿次——去除了重复代码,提高了开发人员的工作效率。结果,他们的团队速度翻了一番,现在甚至可以每天将变更部署到该页面,并且变更失败率降低了许多。
在经历了十年的自然增长之后,eBay 用于支撑“查看商品”页面的代码库已经变得相当难以维护,因为需要将更改复制到 4 个支撑平台(桌面、移动 Web、iOS 和 Android)上。这导致一次页面更改需要花费数周的时间,而部署最多一个月才能进行一次。
图片来源:https://tech.ebayinc.com/engineering/how-ebay-modernized-the-most-important-page-on-our-platform/
团队决定解决这个问题,并一致同意改进关键的DevOps指标(参见 Nicole Forsgren、Jez Humble 和 Gene Kim 在Accelerate 一书中的定义)。新架构需要将现有的 3 个服务整合到一个 View Item Experience Service 中,以支持不同的平台,增强所有平台的用户体验,消除重复代码,提高开发体验和生产力。
为了实现增量迁移,在替换现有架构时需要引入一个新的服务。该服务开始时只负责代理数据,然后逐渐迁移并合并所有平台的业务逻辑。最后,升级客户端使其使用新服务,并停用遗留服务。
为了做好变更准备,团队一开始时曾试图分析遗留代码并编写文档。事实证明,这个过程非常缓慢而有挑战性。因此,他们改变了策略,集中精力快速了解了遗留模块,获得了一个高级视图,然后基于此对现有的功能进行了逆向,并编写了描述新实现的文档。为了进一步简化流程,他们将后端更改与面向用户的更改解耦,使得后端团队可以加速后续的迁移。
eBay(买家体验工程)副总裁Lakshimi Duraivenkatesh及其协同开发者描述了这项现代化工作的成果:
这些改进最终将速度提高了 200%。更好的是,我们立马在项目的模块迁移阶段看到了这种提升。从第一个模块到最后一个模块,每个模块的迁移都会带来相应的速度提升。随着项目接近完成,我们在新产品改进方面的的工作量已经减少了 50%(以天为单位)。
团队超额完成了所有初始目标,变更失败率变得非常低(即使部署更频繁)。与此同时,变更的交付时间和平均恢复时间(MTTR)也大大减少了。
图片来源:https://tech.ebayinc.com/engineering/how-ebay-modernized-the-most-important-page-on-our-platform/
新的业务逻辑实现使用了新的现代化技术栈和更快的自动化管道。更好的文档、更干净的代码则改善了开发体验,降低了团队新成员的上手难度。
原文链接:
https://www.infoq.com/news/2023/06/ebay-view-item-page-rework/
领取专属 10元无门槛券
私享最新 技术干货