将 IBM z/OS OLTP 工作负载迁移到 Azure
在线事务处理 (OLTP) 系统是您企业的门面,因为它们直接与客户互动。 通过迁移到动态适应性的基础设施,您的企业可以快速创建和发布产品,以便客户可以更快地使用您的产品。
建筑
下图显示了在迁移到 Azure 之前在 z/OS 大型机上运行的 OLTP 系统的体系结构:
工作流程
以下工作流与上图相对应:
用户使用 TN3270 和 HTTPS 等标准大型机协议,通过传输控制协议 (TCP) 或 Internet 协议 (IP) 连接到大型机。
事务管理器与用户交互并调用应用程序以满足用户请求。
在应用程序层的前端,用户与客户信息控制系统 (CICS) 或信息管理系统 (IMS) 屏幕或网页进行交互。
事务管理器使用以通用面向业务语言 (COBOL) 或编程语言 1 (PL/I) 编写的业务逻辑来实现事务。
应用程序代码使用数据层的存储功能,比如 DB2、IMS DB 或 VSAM。
除了事务处理之外,其他服务还提供身份验证、安全性、管理、监控和报告。 这些服务与系统中的所有其他服务进行交互。
下图显示了如何将此体系结构迁移到 Azure。
下载此体系结构的 Visio 文件。
大型机用户熟悉 3270 终端和本地连接。 在迁移的系统中,他们通过公共 Internet 或通过 Azure ExpressRoute 实现的专用连接与 Azure 应用程序交互。 Microsoft Entra ID 提供身份验证。
输入请求将转到全局负载均衡器服务,例如 Azure Front Door 或 Azure 流量管理器。 负载均衡器可以为地理位置分散的用户群提供服务。 它根据为支持的工作负载定义的规则路由请求。 这些负载均衡器可以与 Azure 应用程序网关或 Azure 负载均衡器协调,以对应用程序层进行负载均衡。 Azure 内容分发网络服务将静态内容缓存在边缘服务器中,以便快速响应。 Web 应用程序防火墙 (WAF) 有助于保护服务。
应用程序层的前端使用 Azure 服务(如 Azure 应用服务)来实现应用程序屏幕并与用户交互。 这些屏幕是大型机屏幕的迁移版本。
应用程序层后端的 COBOL 和 PL/I 代码实现业务逻辑。 该代码可以使用 Azure Functions、WebJobs 和 Azure Spring Apps 微服务等服务和功能。 应用程序可以在 Azure Kubernetes 服务 (AKS) 容器中运行。
内存中数据存储可加速高吞吐量 OLTP 应用程序。 示例包括 In-Memory OLTP(Azure SQL 数据库和 Azure SQL 托管实例的一项功能)和 Azure Cache for Redis。
数据层可以包括:
- 使用 Azure 存储实现的文件、表和 Blob。
- Azure SQL 系列中的关系数据库。
- PostgreSQL 和 MySQL 开源数据库的 Azure 实现。
- Azure Cosmos DB,这是一个 NoSQL 数据库。
这些存储保存从大型机迁移的数据,供应用程序层使用。
Application Insights 和 Azure Monitor 等 Azure 原生服务会主动监控系统的运行状况。 可以使用 Azure 仪表板集成 Azure Monitor 日志。
组件
此体系结构由多个 Azure 云服务组成。 它分为四类资源:联网和身份、应用程序、存储和监控。 以下部分介绍每个资源的服务及其角色。
网络和标识
在设计应用程序架构时,必须优先考虑网络和身份组件,以帮助确保通过公共 Internet 或私有连接进行交互期间的安全性、性能和可管理性。 体系结构中的以下组件对于有效满足此要求至关重要。
ExpressRoute 在本地基础结构和 Azure 数据中心之间传输专用连接。
Microsoft Entra ID 是一种身份和访问管理服务,可以与本地目录同步。
Azure Front Door 提供全局 HTTP 负载均衡和即时故障转移。 它的缓存选项可以加快静态内容的交付。
流量管理器 根据您选择的流量路由方法定向传入的域名系统请求。
Azure WAF 有助于保护 Web 应用程序免受恶意攻击和常见的 Web 漏洞,例如 SQL 注入和跨站点脚本。
内容分发网络 将静态内容缓存在边缘服务器中以实现快速响应,并使用网络优化来改进对动态内容的响应。 如果用户群遍布全球,内容分发网络特别有用。
应用程序网关 是一种应用程序交付控制器服务。 此服务在第 7 层(应用程序层)运行,具有各种负载均衡功能。
Load Balancer 是第 4 层(TCP 或用户数据报协议)负载均衡器。 在此体系结构中,它为 Azure Spring Apps 和 AKS 提供负载均衡选项。
应用程序
Azure 提供的托管服务支持更安全、可扩展和高效的应用程序部署。 上述体系结构使用的应用层服务可以帮助您优化应用程序体系结构。
Azure API 管理 支持 API 的发布、路由、保护、日志记录和分析。 您可以控制数据的显示和扩展方式以及哪些应用程序可以访问数据。 您可以限制对应用程序的访问或允许第三方访问。
应用程序服务是用于构建、部署和扩展 Web 应用的完全托管服务。 您可以使用 .NET、.NET Core、Node.js、Java、Python 或 PHP 构建应用程序。 这些应用程序可以在容器中运行,也可以在 Windows 或 Linux 上运行。 在大型机迁移中,前端屏幕或 Web 界面可以编码为基于 HTTP 的 REST API。 它们可以根据大型机应用程序进行隔离,并且可以是无状态的,以编排基于微服务的系统。
WebJobs 是应用服务的一项功能,可在与 Web 应用、API 应用或移动应用相同的实例中运行程序或脚本。 Web 作业是实现可共享和可重用程序逻辑的不错选择。 有关详细信息,请参阅 在应用服务中使用 WebJobs 运行后台任务。
AKS 是一项完全托管的 Kubernetes 服务,用于部署和管理容器化应用程序。 AKS 通过将运营开销卸载到 Azure,简化了 Azure 中托管 AKS 群集的部署。
Azure Spring Apps 是一项完全托管的 Spring 服务,由 Microsoft 和 VMware 联合构建和运营。 可以使用 Azure Spring Apps 轻松部署、管理和运行 Spring 微服务,并使用 Java 或 .NET 编写 Spring 应用程序。
Azure 服务总线是一种可靠的云消息传递服务,可以实现简单的混合集成。 服务总线和存储队列可以将前端与迁移系统中的业务逻辑连接起来。
Azure Functions 提供了一个环境,用于运行小段代码(称为函数),而无需建立应用程序基础结构。 您可以使用它来处理批量数据、集成系统、使用物联网以及构建简单的 API 和微服务。 使用微服务创建连接到 Azure 服务并始终保持最新的服务器。
Azure Cache for Redis 是一种完全托管的内存中缓存服务,用于在计算资源之间共享数据和状态。 它包括开源 Redis 和 Redis Enterprise(Redis Labs 的商业产品)作为托管服务。 可以通过将高吞吐量 OLTP 应用程序设计为可缩放并使用内存中数据存储(如 Azure Cache for Redis)来提高其性能。
存储和数据库
此架构解决了可扩展且更安全的云存储以及托管数据库问题,以实现灵活和智能的数据管理。
存储 是一组可大规模扩展且更安全的云服务,适用于数据、应用程序和工作负载。 其中包括 Azure 文件存储、Azure 表存储和 Azure 队列存储。 Azure 文件存储是迁移大型机工作负载的有效工具。
Azure SQL 是一系列 SQL 云数据库,为应用程序迁移、现代化和开发提供了灵活的选项。 该系列包括:
Azure Cosmos DB 是一项完全托管的 NoSQL 数据库服务,它为 MongoDB 和 Cassandra 提供开源 API。 可以使用 Azure Cosmos DB 将大型机非表格数据迁移到 Azure。
Azure Database for PostgreSQL 是一种完全托管、智能且可缩放的 PostgreSQL,它与 Azure 服务建立本机连接。
Azure Database for MySQL 是一个完全托管的可缩放 MySQL 数据库。
In-Memory OLTP 是 SQL 数据库 和 SQL 托管实例 的一项功能,可提供快速的内存中数据存储。 有关详细信息,请参阅 在 SQL 数据库中使用内存中技术优化性能。
监测
以下监控工具提供全面的数据分析和对应用程序性能的宝贵见解。
Azure Monitor 从 Azure 和本地环境收集、分析和处理个人数据。
Azure Monitor 警报是 Monitor 的一项功能。 有关详细信息,请参阅使用 Azure Monitor 创建、查看和管理指标警报。
Log Analytics 是 Azure 门户中的一个工具,可用于使用强大的查询语言查询 Azure Monitor 日志。 可以与查询结果交互,或将其与其他 Azure Monitor 功能(例如日志查询警报或工作簿)一起使用。 有关详细信息,请参阅 Azure Monitor 中的 Log Analytics 概述。
Application Insights 是 Azure Monitor 的一项功能,可提供对应用程序使用情况、可用性和性能的代码级监视。 它监视应用程序,检测异常情况(例如性能平庸和故障),并将个人数据发送到 Azure 门户。 您还可以将 Application Insights 用于日志记录、分布式跟踪和自定义应用程序指标。
方案详细信息
由于业务需求和数据不断变化,应用程序必须在不产生基础设施问题的情况下扩展并产生结果。 此示例工作负载演示如何使用 Azure 平台即服务 (PaaS) 服务将 z/OS 大型机 OLTP 应用程序迁移到云中更安全、可缩放且高度可用的系统。 这种迁移有助于金融、健康、保险和零售领域的企业最大限度地缩短应用程序交付时间。 它还有助于降低运行应用程序的成本。
可能的用例
此体系结构非常适合具有以下特征的 OLTP 工作负载:
他们为国际用户群提供服务。
它们的使用量随时间变化很大,因此它们受益于灵活的扩展和基于使用量的定价。
注意事项
这些注意事项实施 Azure 架构良好的框架的支柱原则,即一套可用于改进工作负荷质量的指导原则。 有关详细信息,请参阅 Well-Architected Framework。
可靠性
可靠性有助于确保应用程序能够履行对客户的承诺。 有关详细信息,请参阅可靠性设计评审核对清单。
您可以在多个区域中部署此 OLTP 体系结构。 它还可以具有异地复制的数据层。
Azure 数据库服务支持区域冗余,并且可以在发生中断时故障转移到辅助节点,或者允许进行维护活动。
安全
安全性提供针对故意攻击和滥用宝贵数据和系统的保证。 有关详细信息,请参阅可靠性设计审查检查表。
ExpressRoute 从本地环境创建与 Azure 的专用连接。 您还可以使用站点到站点 VPN。
Microsoft Entra ID 可以使用 Azure 基于角色的访问控制对资源进行身份验证并控制访问。
Azure 中的数据库服务支持各种安全选项,例如静态数据加密。
有关如何设计更安全的解决方案的一般指导,请参阅 安全快速链接。
成本优化
成本优化侧重于减少不必要的开支和提高运营效率的方法。 有关详细信息,请参阅成本优化设计评审核对清单。
使用 Azure 定价计算器 估算实施的成本。
卓越运营
卓越运营涵盖了部署应用程序并使其在生产环境中保持运行的运营流程。 有关详细信息,请参阅设计卓越运营的审查清单。
此方案使用 Azure Monitor 和 Application Insights 来监视 Azure 资源的运行状况。 可以设置警报进行主动管理。
性能效率
性能效率是指工作负荷能够高效地缩放以满足用户需求。 有关详细信息,请参阅性能效率设计评审核对清单。
此体系结构使用 Azure PaaS 服务,例如具有自动缩放功能的应用服务。
有关详细信息,请参阅 自动缩放。
供稿人
Microsoft维护本文。 以下参与者撰写了本文。
主要作者:
- Ashish Khandelwal | 首席工程体系结构经理
- Nithish Aruldoss | 工程架构师
要查看非公开的 LinkedIn 个人资料,请登录到 LinkedIn。
后续步骤
- 有关详细信息,请联系 datasqlninja@microsoft.com。
- Azure 数据库迁移指南
相关资源
请参阅以下相关架构和相关技术信息。
相关体系结构
- 大容量批处理事务处理
- 使用 Avanade AMT 进行 IBM z/OS 大型机迁移
- Azure VM 上的 Micro Focus Enterprise Server
- 将 IBM z/OS 大型机耦合工具重构到 Azure
- 在 Azure 中复制和同步大型机数据
- 使用 TmaxSoft OpenFrame 将 IBM 大型机应用程序迁移到 Azure