应用重构秘籍:OpenRewrite自动化代码现代化实战

本文深入探讨了使用OpenRewrite工具进行应用程序现代化的技术实践,涵盖Lossless Semantic Tree数据模型、基于规则的代码重构引擎,以及从Netflix到微软Pegasus计划的实际应用案例,帮助企业高效解决技术债务和框架迁移挑战。

应用重构秘籍:Computer Weekly停机上传播客

我们与Moderne CEO兼OpenRewrite发明者Jonathan Schneider探讨了应用程序现代化。

考虑将组织整个应用程序资产从某个Java版本升级到另一个版本的挑战,这既是维护IT安全所需,也可能是从WebSphere等应用服务器迁移到Tomcat等替代方案的必要步骤。

Moderne CEO兼联合创始人Jonathan Schneider是OpenRewrite的发明者,这是一个专为解决此类编程挑战而设计的开源软件自动重构工具。

Schneider曾任职于Netflix,希望解决一个难题——如何准确重写代码并保留原始代码风格使其能被接受。解决方案是一种新的代码数据模型(称为无损语义树)和基于规则的重构引擎,该引擎由指定代码重写方法的配方驱动。

在描述Netflix代码重构的挑战和复杂性时,他表示无法设定截止日期将代码迁移到新平台:“我们无法对产品工程师的行为施加约束。”当时,Schneider所在的中央团队提供现在称为开发者体验(包括平台工程)的服务。

OpenRewrite中使用的无损语义树提供了代码结构和关系的详细图谱。基于规则的重构引擎利用此图谱,由指定代码重写方法的配方驱动。

他提到Netflix最初的用例之一是一个内部日志库:“我们想用开源SLF4J(Java简单日志门面)替换它。”该过程涉及遍历代码和日志信息以识别内部日志库的使用位置。

Schneider围绕保持代码更新的复杂性构建了业务。每段代码在部署到生产环境后基本上都会成为技术债务。他表示:“我今天可以围绕应用架构做出所有完美决策并选择所有最佳库,但两个月后,出于某种原因,它就不再是最优选择。”

从历史上看,代码通常由产品工程师维护,他们持续修订应用程序并保持更新。有时会引入IT咨询公司建立软件工厂,专门从事应用程序维护,一次处理一个应用。

据Schneider称,这种应用现代化策略并未奏效。Moderne采取的方法是考虑能够横向解决、覆盖整个业务的任务。

这种方法引起了微软的注意。Moderne已登陆Azure Marketplace,并加入了微软Pegasus计划(旨在推广初创企业)。谈到Pegasus的好处时,Schneider表示:“微软始终寻求对其关键客户重要的能力,并尝试将解决方案与客户需求匹配。在这种情况下,技术工程和IT高管希望加速应用现代化。”他表示该计划通过“简化大量繁琐程序”帮助了Moderne的Azure Marketplace上市,同时通过与微软联合销售带来了商业利益。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计