Windows 工作负载的现代化 - 使用 AWS Transform 批量转换 .NET 和 SQL Server
解析使用 AWS Transform for Windows 对 .NET Framework 和 SQL Server 进行现代化改造。介绍全栈转换、波次迁移方式和成本削减效果。
Windows 工作负载现代化迫在眉睫的原因
企业核心系统中运行着大量使用 .NET Framework 4.x 构建的 Web 应用程序、Windows 服务和 SQL Server 数据库。这些只能在 Windows Server 上运行,加之 Windows Server 2012 R2 的支持终止(2023 年 10 月)也日益临近,许可成本(Windows Server CAL、SQL Server 许可)占运维费用的很大比例。此外,微软已停止 .NET Framework 的新功能开发,建议迁移到 .NET(原 .NET Core)。但是,如果分别迁移应用层和数据库层,依赖关系不一致和测试工时增加就会成为问题。AWS Transform for Windows 是一项以全栈方式批量转换应用程序(.NET)、UI 框架、数据库(SQL Server)和部署流程的代理式 AI 服务。
全栈转换的架构
AWS Transform 连接源代码仓库(最多数百万行 .NET 代码库)和 SQL Server,自动分析应用程序和数据库的依赖关系。基于分析结果创建现代化波次(转换组),从依赖关系少的组开始分阶段推进转换。每个波次协调执行以下转换。(1).NET Framework 到 .NET 的转换:将 ASP.NET Web Forms/MVC 转换为 ASP.NET Core,将 Windows 依赖的 API 替换为跨平台 API。(2)SQL Server 到 Aurora PostgreSQL 的转换:自动完成架构转换、存储过程向 PL/pgSQL 的转换,以及应用程序端连接字符串和 ORM 设置的修改。(3)部署转换:将 Windows Server 上的 IIS 部署转换为面向 Linux 容器(ECS)或 EC2 Linux 的部署。
SQL Server 迁移的详细与注意事项
从 SQL Server 到 Aurora PostgreSQL 的转换是 AWS Transform 中特别复杂的处理。架构转换中自动执行数据类型映射(如 NVARCHAR → VARCHAR、DATETIME2 → TIMESTAMP WITH TIME ZONE、UNIQUEIDENTIFIER → UUID)。存储过程会从 T-SQL 转换为 PL/pgSQL,但游标处理、临时表、动态 SQL 等 T-SQL 特有语法有时需要个别处理。Transform 会事先检测这些难以转换的部分,并报告需要手动介入的位置。在应用程序端,将 Entity Framework 的连接提供程序更改为 Npgsql,并将 SQL Server 特有的 LINQ 查询修改为与 PostgreSQL 兼容。转换后,通过自动生成的测试验证与原 SQL Server 的行为等价性。
Transform for Windows 的定价
AWS Transform for Windows 的定价基于转换目标应用程序数量和复杂度的个别报价。包含 .NET Framework 到 .NET 8 的转换和 SQL Server 到 Aurora PostgreSQL 迁移的全栈转换,与手动迁移工时(数月至 1 年)相比可大幅缩短工期。转换后不再需要 Windows Server 和 SQL Server 的许可成本,Linux + Aurora 的组合在很多情况下可将年度基础设施成本削减 50% 至 70%。
.NET 现代化的方法
使用旧版 .NET Framework 编写的应用程序依赖 Windows,在许可成本和可扩展性方面往往存在限制。现代化会将其迁移到支持跨平台的新 .NET,使其能够在 Linux 上或容器中运行。这样可以削减 Windows 的许可费用,并在容器平台上实现灵活扩展。AWS Transform for Windows 支持此类转换,并辅助代码的改写。不是一次性全部改写,而是从影响较小的部分开始逐步现代化,这是现实的做法。
迁移的推进方式
Windows 工作负载的现代化要取得成功,关键在于有计划地推进。首先评估目标应用程序,掌握依赖关系和迁移难度。根据影响范围和关联性,将其划分为一起迁移的单位(波次),确定优先顺序后分阶段推进。先在规模小、影响有限的应用程序上进行试点,确认流程和效果后再全面推广。在每个阶段充分验证,确认没有问题后再进入下一步,就能在控制风险的同时稳步推进现代化。整体批量迁移的风险较高,因此需避免。
许可成本的削减
许可成本的削减是 Windows 工作负载现代化带来的重大效果之一。Windows Server 和商用数据库的许可,有时会占运维成本的很大一部分。通过使应用程序支持跨平台并在 Linux 上运行,或将数据库迁移到开源数据库,有望大幅减少这些许可费用。削减效果因配置而异,因此需在迁移前后估算成本,判断投资回报。摆脱许可的束缚,是实现长期运维成本降低的重要动机。
风险与验证
现代化伴随着应用程序行为发生变化的风险。Windows 特有的功能以及依赖特定库的部分,在迁移目标环境中不一定能同样运行。在迁移前评估兼容性、梳理依赖之处是很重要的。转换后,需充分测试功能是否与以往一样正常运行,并确认性能和行为上的差异。切换到生产环境时需分阶段进行,并做好出现问题时可以回退的准备。自动转换工具生成的产物,也要由人进行验证以确保质量。反复进行谨慎的验证,是安全完成现代化的前提。
总结 - Windows 现代化的指南
AWS Transform for Windows 全栈批量转换 .NET Framework、SQL Server 和部署流程,以传统方式 5 倍的速度执行现代化。波次方式的分阶段转换可以在控制风险的同时稳步推进迁移。除了 Windows Server 和 SQL Server 的许可成本削减(最高 70%)外,Linux 容器化带来的可扩展性提升和开源生态系统的活用是长期优势。
参考资料(AWS 官方)
本页的第一手信息来源是 AWS 官方网站及官方文档。最新的规格与价格请以下列官方页面为准。
如本页内容与官方文档不一致,请以官方文档为准。