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

本文探讨了使用OpenRewrite开源工具进行应用重构的技术方案,详细介绍了其基于规则的重构引擎、无损语义树数据模型,以及如何解决Java版本升级和日志库迁移等具体技术挑战。

我们与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 设计