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

本文深入探讨了OpenRewrite开源工具如何通过无损语义树和规则引擎实现Java应用现代化,涵盖从Netflix实战经验到微软合作案例,解析自动化代码重构的技术架构与商业价值。

应用重构配方:Computer Weekly停机上传播客

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

代码重构的复杂性

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

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

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

Netflix的实战经验

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

OpenRewrite中使用的无损语义树提供了代码结构和关系的详细映射。基于规则的重构引擎利用这一点,该引擎由指定代码重写方式的配方驱动。

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

技术债务与业务模式

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

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

根据Schneider的说法,这种应用现代化策略并未奏效。Moderne采取的方法是考虑可以横向解决、跨越整个业务的任务。

微软合作与市场拓展

这一点引起了微软的注意。Moderne已在Azure市场上架,该公司也是微软Pegasus计划的一部分,该计划旨在推广初创企业。在讨论Pegasus的好处时,Schneider表示:“微软一直在寻找对其关键客户重要的能力,并试图将解决方案与客户需求配对。在这种情况下,我认为技术工程和IT高管希望加速应用现代化。”他表示,该计划通过“减少大量繁琐程序”帮助了Moderne的Azure市场列表,同时通过与微软共同销售带来了商业利益。

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