IBM 的 IDE 将一项原本需耗时一个月的应用程序现代化改造项目,压缩至三天内完成。这一流程弃用了 127 个 API 调用,并助力这家 IT 咨询公司构建出更新且大幅简化的应用程序。随后,该应用程序在创纪录的时间内部署给了 30,000 多名用户。
编者按:IBM Bob 现已正式发布。本文是系列技术客户案例的第一篇,该系列将深入探讨 IBM 的 AI 开发助手如何助力旧版代码库现代化、创建新文档、确保合规性,并提出关键安全更新建议。
对于许多开发人员而言,一想到要将面向客户端的 Java 11 应用程序升级至 Java 21 版本并实现现代化,就会心生畏惧。再加上已弃用的 API、存在已知安全漏洞的过时依赖项以及未经测试的代码等其他挑战,现代化的前景变得令人望而生畏。
在南非 IT 咨询公司兼 IBM 合作伙伴 Blue Pearl,这类工作已在开发积压任务中搁置多年。Blue App 是 Blue Pearl 的旗舰人才匹配平台,可为约 26,000 名顾问及自由职业者,对接包括大型金融机构、全球科技公司和顶尖咨询公司在内的企业客户。
若采用传统方法对该应用程序进行现代化改造,需投入超过 30 个开发人员工作日的专属精力,还会带来显著的回归风险。结合客户的时间要求和 Blue Pearl 团队的冲刺能力,这些因素均无法接受。该公司选择借助 IBM Bob——IBM 的集成开发环境 (IDE),来加快现代化改造进程。
结果令人印象深刻:该平台在三天内完成了现代化改造。Bob 助力解决了 127 个已弃用的 API 调用(涵盖代码库内部及面向外部供应商的调用),并将测试覆盖率从 0 提升至 92%。Bob 还助力该现代化平台顺利发布至生产环境,未出现任何部署问题。
这项任务看似简单实则复杂:需在不中断客户与求职者依赖的工作流的前提下,对一款高频使用的 Java 平台进行现代化改造。真正的难点在于,这款 2020 年开发的旧版系统在整个技术栈中积累了大量技术债务。
这些技术债务包括过时的 API 调用、50 多个过时的依赖项、多个已知的常见漏洞与风险 (CVE),以及完全缺乏正式的自动化测试覆盖。更重要的是,其基础设施设计已不再符合该平台的规模及可靠性要求。代码一片混乱。
IBM Bob 提供的价值不仅限于代码生成。它为 Blue Pearl 提供了一种解决方案,可将开发过程中的发现、规划和转型阶段,压缩为一个受管控的统一工作流。
旧代码库混乱且过度设计,包含大量不必要的 API 调用,且安全状态较为过时。Bob 迅速排查出这些问题,并将分析结果与现代化指导相结合,让最终的应用程序摆脱了旧版 Web 应用的卡顿感,变得更流畅、更具现代化质感。
Blue Pearl 团队花了大约三个小时构建了一个详细的提示。他们向 Bob 提供了架构图、AWS 工作流信息、端点定义、服务间依赖关系、数据流图,以及客户与顾问使用该应用程序的详细说明。这种前期的上下文设置包含了客户与自由职业者对该平台的需求反馈。这种严谨的设置对输出质量起到了重要作用。
在此基础上,Bob 生成了整个 Java 代码库的依赖关系图,找出了已弃用的 API 调用,标注了过时的库,并发现了从未正式记录的整合点。Blue Pearl 团队接受了 Bob 的建议,并批准 Bob 对代码和架构进行现代化改造:
该平台还被重组为界面更清晰的低耦合服务,既提高了可测试性,也降低了未来变更带来的影响范围。
安全架构与运营架构的优化,也是此次转型的一部分。Blue Pearl 增强了身份验证与授权逻辑,实现了输入验证与数据净化流程的标准化,梳理了敏感数据流,并引入了结构化日志记录、分布式跟踪钩子及健康检查端点。
Bob 还将缺乏可观测性列为一项架构风险。它建议在服务边界之间采用结构化 JSON 日志记录,并使用 Logstash Logback 编码器。Bob 还建议在 HTTP 入口、出口点、外部服务调用及数据库层,采用 Micrometer Tracing 和 OpenTelemetry 桥接实现分布式追踪。在业务逻辑需要的位置,添加了手动追踪跨度。
此次现代化改造引入了结构化日志记录和跨所有服务的端到端分布式追踪,几秒钟内即可实现完整的追踪可见性,彻底替代了手动日志搜索。这也缩短了漏洞解决时间,增强了部署信心,并为未来 AI 和云原生工作负载奠定了坚实的平台基础。
现代化后的代码库首次尝试就通过了 Semgrep、Snyk 和 SonarQube 的扫描检测。在交付环节,一名高级开发人员在实施前审查了 Bob 生成的每一项建议,随后通过 Jest 集成测试和内部 UAT 进行了验证。该应用程序已部署至 AWS 平台,并顺利通过 AWS 部署流程,未出现任何问题。Bob 的建议也影响了托管和 CI/CD 方面的改进。
最显著的成果体现在速度上:仅用三天就完成了 Java 版本的更新,相比原本需要的 30 多个开发人员工作日,交付速度提升了约 90%。但更重要的成果是,Blue App 最终为其旗舰产品搭建了坚实的技术基础。
Blue Pearl 反馈称:
Java 虚拟机 (JVM) 优化还带来了约 15% 的性能提升。
这些成果共同改变了总拥有成本 (TCO) 的格局。更快的交付固然有益,但在具备文档化架构、正式测试、更清晰的服务边界和更完善的可观测性的前提下,更快的交付能降低长期拥有成本。
仅依赖关系映射这一项,就将原本需要多个开发冲刺周期才能完成的工作,缩短至数小时内。自动化测试基线的建立,意味着未来的漏洞修复和功能开发工作可进行持续验证,无需再依赖人工判断。可观测性层为运营团队提供了前所未有的可见性。
实际上,工程团队的精力可以从代码溯源和回归测试焦虑,转移到用户能感知到的产品优化工作上。
对最终客户的影响也十分显著。Blue App 主要用于帮助组织筛选人才,通过匹配技能、认证和经验,从顾问数据库中筛选出最匹配的候选人。部署后,未收到任何客户投诉,也未出现任何部署后问题,目前团队的工作已转向用户界面优化和新增功能开发,而非后端清理工作。
在 Blue Pearl 的项目中,IBM Bob 并未取代工程师的专业判断。成功的模式是:上下文优先,Bob 辅助,高级开发人员验证最后。该模式对技术产品经理和工程负责人十分实用,因为它将 AI 编码辅助定位为架构分析、现代化规划、代码转换和测试生成的助推器。此外,这一流程还能让经验丰富的工程师承担相应的责任。
Blue Pearl 认为,此次 Java 现代化改造只是 Bob 主导的众多机遇中的第一步。
更重要的是,Blue 应用程序本身现在更易于扩展。服务耦合度更低,依赖树实现了现代化,测试套件提供了回归安全保障,可观测性层还能让生产团队更清晰地洞察分析运行时行为。技术债务的消除,让开发人员能够放心扩展产品功能,无需担心过程中出现任何故障。
通过将 IBM Bob 同时作为现代化加速器和可靠的编程合作伙伴,Blue Pearl 将一项为期一个月、风险较高的 Java 升级任务,转变为在近 30,000 名客户依赖的平台上,仅用三天就完成的生产部署。最终成果是为维护该应用程序的工程师们提供了一个更安全、更易于测试和更可扩展的应用程序。它还为每天依赖它的客户和最终用户带来了更可靠的体验。