应用重构配方: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市场列表,同时通过与微软共同销售带来了商业利益。