10 月 23 - 25 日,QCon 上海站即将召开,现在购票,享9折优惠 了解详情
写点什么

Allegro 如何为 2000 多个微服务进行自动化代码迁移

  • 2025-05-21
    北京
  • 本文字数:1281 字

    阅读完需:约 4 分钟

大小:623.58K时长:03:32
Allegro如何为2000多个微服务进行自动化代码迁移

Allegro 分享了它用于大规模管理代码迁移的流程细节。该公司将 GitHub 的 Dependabot 和 OpenRewrite 项目结合起来,形成了一个定制解决方案,形成了一个定制解决方案,帮助开发人员自动执行跨多个源代码仓库的日常代码迁移任务。公司解决了很多边缘情况,以确保流程能顺利进行,缓解了开发人员之间最初的信任问题。

 

Allegro 创建并管理着一个庞大的微服务平台,涵盖了超过 2000 个的服务。在如此大的规模下,代码迁移可能会变得令人头疼。Allegro 的首席工程师Bartosz Gałek描述了手动应用代码迁移的挑战:

 

当公司范围内的库引入新版本时,跨多个仓库迁移代码极其痛苦,因为它们引入了破坏性的变更。传统上,开发人员必须遵循发布说明中的迁移指南,确定所需的更改,并手动更新他们的代码。这个过程不仅耗时,而且容易出现人为错误,这可能导致生产中的不一致性和潜在问题。这也引发了许多关于 Slack 支持渠道的问题。

 

公司选择尽可能多地自动化代码迁移,并决定使用GitHub的DependabotOpenRewrite项目。工程师们创建了一个名为 allegro-rewrite 的自定义 GitHub 应用程序,并为自己设定了一个使命,即为支持大规模自动化代码迁移提供一个开发人员友好的流程。项目背后的团队希望实现特定的目标,例如支持新工具的轻松采用,提供可审计性和可逆性,实施对时间敏感的迁移的截止日期流程,并确保迁移可以根据需要轻松地重新运行。

 

该解决方案依赖于 Dependabot 持续监控 Allegro 的 GitHub 组织中的过时依赖项。当 Dependabot 创建一个拉取(pull)请求时,自定义的 allegro-rewrite GitHub 应用程序会触发一个工作流程,该工作流程会根据一系列的 OpenRewrite 配方来解决基于变更用例的破坏性变更。

 

自动化代码迁移流程(来源:Allegro技术博客

 

该团队以多种方式扩展了最初的实现。工程师们为 GitHub 的拉取请求引入了注释命令,使 PR 审查者和 allegro-rewrite 应用程序之间能够进行交互。此外,该应用程序支持强制合并对时间敏感的更改,例如,当安全漏洞影响许多仓库时,必须在特定的截止日期前解决。他们还将同一应用程序作为 CLI 版本提供,以便公司的工程师可以本地使用它,并潜在地将其用于其他用例,而不仅仅是与 GitHub 相关的工作流程。


使用 CLI 运行自定义的 OpenRewrite 配方(来源:Allegro技术博客

 

推出代码迁移的自动化流程面临着一些挑战。最初,该公司的开发人员对于以自动化方式执行大规模迁移持怀疑态度,担心应用的变更数量以及在规模上引入问题的可能性。此外,在某些情况下,代码解析和 YAML 格式化偶尔会遇到一些不可预见的部署后问题。尽管如此,该团队迅速改进了配方测试覆盖率,以避免将来出现此类的问题。最后,如果内部库维护者需要实现 OpenRewrite 配方来帮助处理新库版本中引入的破坏性更改,那么自动化迁移流程会给他们带来额外的工作量。

 

Allegro 的开发人员仍在努力进行进一步的改进,并计划将解决方案开源,以便其他组织可以从他们的经验中受益。

 

Mark Brown在博客文章中评论道:

 

这太神奇了。我们也正好在尝试解决同样的问题。期待能够使用这个工具。干得好,伙计们!

 

原文链接:

https://www.infoq.com/news/2025/05/allegro-code-migrations-scale/

2025-05-21 17:008197

评论

发布
暂无评论

腾讯云首发大数据高性能计算引擎Meson,支持三大产品线性能升级

腾讯云大数据

大数据

前端开发-- Webpack 代码分割和懒加载技术

不在线第一只蜗牛

前端 Web webpack

技术干货|数据科学助力制造业智能化变革

Altair RapidMiner

人工智能 机器学习 算法 数据分析 altair

一群追星星的人,对AI的盼与怕

脑极体

AI

TON钱包选择全面资产保护教程,bitget钱包

BlockChain先知

一文读懂有关 LISTA、bitget 钱包的所有信息

股市老人

OpenAI 曝新项目「草莓」,提升 AI 推理能力;智谱 AI 开源视频理解模型丨 RTE 开发者日报

声网

在线PDF转PPT软件!这2款AI工具值得推荐!

彭宏豪95

职场 PPT 办公软件 效率软件 AI生成PPT

卷不动了!去香港工作可以重启人生吗?

王中阳Go

Go 面试题

企业全历史行为数据 让你对竞争对手的一切清清楚楚

客户在哪儿AI

ToB营销 ToB获客 ToB增长 大客户营销

大模型落地,「city不city」?

白洞计划

AI

小智常见报表示例--层次坐标--同比报表

小智数据

阿里巴巴中国站1688商品详情API返回值分析:商品数据驱动的竞争对手分析

技术冰糖葫芦

API 安全 API 文档 API 开发 API 协议

玩转生成式 AI ,抓住时代机遇

科技热闻

利用财务团队的转型来推动企业业务成功

智达方通

企业管理 全面预算管理 财务管理

基于低代码思想的可视化开发平台:引领未来软件开发的新趋势

不在线第一只蜗牛

软件开发 低代码 可视化

Sentieon | 应用教程:Sentieon分布模式

INSVAST

基因数据分析 生信服务 分布式数据存储模块 分布模式 Sentieon

如何实现一个分布式锁

不在线第一只蜗牛

分布式 WPF

如何基于 Elasticsearch 实现排序沉底或前置

字节跳动云原生计算

elasticsearch ES

观测云对接 Fluentd 采集业务日志最佳实践

观测云

Fluentd

谷歌DeepMind被曝抄袭开源成果,论文还中了顶流会议

Openlab_cosmoplat

人工智能 开源 ChatGPT

Allegro如何为2000多个微服务进行自动化代码迁移_架构_Rafal Gancarz_InfoQ精选文章