在 Azure 上重新设计大型机批处理应用程序
此参考体系结构演示如何使用 Azure 重新设计 z/OS 大型机批处理应用程序,以使用 Azure 在云中提供安全、可缩放且高度可用的系统。 由于业务需求不断演变,数据和应用程序需要交付和缩放,而不会影响基础结构。 对云进行重新工程可以帮助企业在财务、健康、保险和零售方面最大程度地减少其产品或功能交付时间,并降低成本。
大型机体系结构
第一个图显示了在 z/OS 大型机上运行的典型批处理应用程序的体系结构。
下载此体系结构的 Visio 文件。
Workflow
大型机批处理进程可以使用操作、规划和控制(OPC)计划程序在计划的时间触发。 它们也可以由放置在消息队列中的消息触发,例如,消息会报出文件已创建。
大型机直接访问存储设备(DASD)用于存储输入和输出文件;例如,应用程序所需的平面文件。 可以通过在 DASD 存储上创建文件来触发批处理。
批处理是执行一组作业,例如在内部运行用户或系统程序执行特定任务的作业。 通常,批处理进程无需用户交互即可运行。 大型机中的所有批处理作业都在作业执行系统(JES)的控制下执行。
批处理中的程序可以从以下项读取/写入数据:
- 基于文件的数据库,如虚拟存储访问方法(VSAM)。
- 关系数据库,如 Db2 或 Informix。
- 信息管理系统(IMS)等非关系数据库。
- 消息队列。
可以通过 OPC 计划程序或 Tivoli 工作负荷计划程序(TWS)监视作业执行的输出。 JES 中的系统显示和搜索设施(SDSF)也用于大型机检查作业执行状态。
管理层提供以下服务:
- 源代码管理,如 Endevor 或 Changeman。
- 安全性,如资源访问控制设施(RACF)。 此安全性为运行批处理、访问文件以及访问数据库提供身份验证。
- 支持存储和搜索作业执行日志的输出管理。
Azure 体系结构
第二个关系图显示了如何使用 Azure 服务重新设计具有附加功能和灵活性的类似应用程序。
下载此体系结构的 Visio 文件。
Workflow
使用以下触发器之一启动 Azure 批处理。
- 使用 Azure Databricks 作业计划程序或 Azure Function 计划程序。
- 使用 Azure 逻辑应用创建定期批处理任务。
- 使用存储事件,例如在 Azure Blob
中创建或删除文件或 文件存储 。 - 使用基于消息的触发器,例如 Azure 服务总线上的消息到达。
- 创建 Azure 数据工厂 触发器。
使用 Azure Blob 存储或 Azure 文件存储存储从大型机迁移的文件。 在 Azure 上重新设计批处理可以从此存储中读取/写入数据。
Azure 提供各种服务来实现大型机批处理工作负荷。 根据业务需求选择特定服务。 例如,所需的计算能力、总执行时间、将大型机批处理拆分为更小的单位和成本敏感度的能力。
- Azure Databricks 是基于 Apache Spark 的分析平台。 作业可以采用 R、Python、Java、Scala 和 Spark SQL 语言编写。 它为计算环境提供快速群集启动时间、自动终止和自动缩放。 它与 Azure 存储(如 Azure Blob 存储和 Azure Data Lake Storage)内置集成。 如果需要在短时间内处理大量数据,请使用 Azure Databricks。 如果需要运行提取、转换和加载(ETL)工作负载,这也是一个不错的选择。
- AKS 和 Service Fabric 提供实现基于服务的应用程序体系结构的基础结构。 对于单个应用程序来说,它可能不具有成本效益。 可以使用 Java Spring Boot 重构大型机应用程序。 在 Azure 上运行 Spring Boot 应用的最佳方式是使用完全托管的 Spring 服务 Azure Spring Apps。 Java 开发人员可以使用它轻松地在 Azure 上生成和运行 Spring Boot 微服务。
- 可以使用 .NET 或 Java 重新设计大型机批处理应用程序。 Batch 提供大规模运行此应用程序的基础结构。 它创建和管理虚拟机池(VM),安装应用程序,然后计划要在 VM 上运行的作业。 没有用于安装、管理或缩放的群集或作业计划程序软件。 使用 Windows 或 Linux 支持的任何编程语言编写应用程序。
- 可以重新设计运行 COBOL 或 PL/1 批处理程序的短时间。 对于这些程序,请使用 Functions、WebJobs 或逻辑应用等 Azure 服务。
Azure 提供各种数据服务来存储和检索数据。
- 可以迁移大型机关系数据库(如 Db2 和 Informix),只需对 Azure 关系数据库产品/服务的可见性进行最小更改。 例如,关系数据库服务,例如 Azure SQL VM、Azure SQL DB 或 Azure SQL MI。 还可以使用任何开源关系数据库管理系统(RDBMS),例如 Azure PostgreSQL。 Azure 数据库的选择取决于工作负荷类型、跨数据库查询、两阶段提交要求和许多其他因素。
- 可以将大型机非关系数据库(例如 IMS、集成数据管理系统(IDMS)或 VSAM 迁移到 Azure Cosmos DB。 Azure Cosmos DB 提供快速响应时间、自动和即时可伸缩性以及任何规模的保证速度。 对于任何大小或规模的不可预知或零星工作负荷,这是一个经济高效的选项。 开发人员可以轻松开始,而无需规划或管理容量。
- 可以使用 Azure Cache for Redis 加快重新设计的应用程序。
应用程序、OS 和 Azure 资源可以使用代理将日志和指标发送到 Azure Monitor 日志。
- Application Insight 监视已迁移的应用程序。 它会自动检测性能异常,并包括功能强大的分析工具来帮助诊断问题。
- Azure Log Analytics 有助于存储、索引、查询和从收集的日志数据派生分析。
可以使用 Log Analytics 和 Application Insights 的输出来创建警报和仪表板,或导出到外部服务。 还可以使用输出执行操作,例如 VM 的缩放。
此层提供用于源代码管理、安全性和输出管理的 Azure 服务。 这些服务可能包括 Azure DevOps 和 Microsoft Entra ID。
组件
此解决方案使用以下组件。
网络和标识
Azure ExpressRoute 是一种连接服务,它通过来自连接提供商的专用连接将本地网络扩展到Microsoft云。 通过使用 ExpressRoute,可以建立与 Microsoft 云服务(如 Microsoft Azure 和 Microsoft 365)的连接。 在此体系结构中,ExpressRoute 在本地大型机环境和 Azure 服务之间提供安全的高带宽连接。
Azure VPN 网关 是一种特定类型的虚拟网络网关,用于通过公共 Internet 在 Azure 虚拟网络和本地位置之间发送加密流量。 在此体系结构中,VPN 网关提供替代连接选项,用于在 ExpressRoute 不可用时访问 Azure 资源。
Microsoft Entra ID 是可与本地目录同步的标识和访问管理服务。 在此体系结构中,Microsoft Entra ID 为访问重新创建的批处理系统的用户和应用程序提供身份验证和授权服务。
应用
逻辑应用 是一项云服务,可帮助你按计划创建和运行自动重复任务和流程。 可以在 Azure 内外调用服务,例如 HTTP 或 HTTPS 终结点。 还可以将消息发布到 Azure 服务(如服务总线)或获取上传到文件共享的文件。 在此体系结构中,逻辑应用提供用于触发和协调批处理的工作流业务流程和计划功能。
服务总线 是一种云消息传送服务,可用于用户界面和后端服务之间的消息传递。 此系统可以分离应用程序和服务,并提高可靠性和使用情况。 在此体系结构中,服务总线提供可靠的消息传送功能,用于触发批处理进程并在重新设计系统的不同组件之间进行协调。
Azure Databricks 是基于 Apache Spark 的分析平台和基于云的数据工程工具,用于处理和转换大量数据。 然后,可以通过机器学习模型浏览该数据。 在此体系结构中,Azure Databricks 提供高性能计算功能,用于处理具有快速群集启动时间和自动缩放的大型批处理工作负荷。
Azure Spring Apps 是一项完全托管的服务,用于在 Azure 上部署、管理和运行 Spring 微服务。 它支持 Java 和 .NET Core。 在此体系结构中,Azure Spring Apps 提供了一个平台,用于运行以 Java Spring Boot 作为微服务编写的重新工程大型机应用程序。
Azure Kubernetes 服务(AKS) 是一种托管的 Kubernetes 服务,通过将作开销卸载到 Azure,简化了在 Azure 中部署托管 Kubernetes 群集。 在此体系结构中,AKS 提供容器业务流程功能,用于在可缩放的基于微服务的体系结构中运行重新构建的批处理应用程序。
Azure Batch 是一项云服务,旨在跨许多 VM 在云中运行常规用途批处理计算,这些 VM 可以根据工作负荷进行缩放。 它支持 ETL 或 AI 用例,其中多个任务并行实现,彼此独立。 在此体系结构中,Batch 提供了可缩放的计算基础结构,用于跨多个 VM 运行重新构建的大型机批处理作业。
Azure Functions 是一种无服务器计算服务,可用于运行小段代码。 通过使用 Functions,云基础结构提供所有 up-to日期服务器,这些服务器需要使应用程序大规模运行。 在此体系结构中,Functions 为最初以 COBOL 或 PL/1 编写的短运行批处理程序提供无服务器计算。
Azure 应用服务 是一个完全托管的平台,用于生成、部署和缩放 Web 应用和 API。 通过使用应用服务的一项功能 WebJobs,可以将可重用的后台业务逻辑编码为 Web 作业。 在此体系结构中,使用 WebJobs 的应用服务提供了用于运行后台批处理任务的平台。
Azure Redis 缓存 是一项完全托管的内存中缓存服务,它允许应用程序使用大量后端数据来缩放和提供高度优化的性能,方法是与 Redis 等内存中数据存储集成。 Azure Redis 缓存提供 Redis 开源(OSS Redis)和 Redis Enterprise(Redis 实验室的商业产品)作为托管服务。 在此体系结构中,Azure Redis 缓存提供高速缓存,以提高重新设计批处理应用程序的性能。
存储
Azure 存储提供多层热、冷和存档数据。 这些存储层的有效使用可提供价格到性能的优势。
Azure Cosmos DB 是一项完全托管的 NoSQL 数据库服务,可用于从大型机迁移非表格数据。 在此体系结构中,Azure Cosmos DB 提供全球分布式 NoSQL 数据库服务,用于迁移大型机非关系数据库,例如 IMS、IDMS 和 VSAM。
Azure 文件 存储是一项完全托管的文件共享服务,可提供简单、安全且无服务器的企业级云文件共享。 Azure 文件对于重新生成的大型机解决方案特别有用。 它为托管 SQL 存储提供有效的加载项。 在此体系结构中,Azure 文件存储提供多个批处理节点可以访问的共享文件存储。
Azure 队列存储 是一项经济高效的持久消息队列服务,适用于大型工作负荷。 在此体系结构中,队列存储提供可靠的消息队列,用于协调批处理作业执行和工作流管理。
Azure SQL 是 SQL Server 的完全托管服务系列。 可以在 Azure 虚拟机上的其他 Azure 服务(如 Azure SQL 托管实例或 SQL Server)中有效地迁移和使用关系数据。 在此体系结构中,Azure SQL 为迁移的大型机数据库(如 Db2 和 Informix)提供托管的关系数据库服务。
Blob 存储 是一种可缩放且安全的对象存储服务,适用于云原生工作负载、存档、数据湖、高性能计算和机器学习。 在此体系结构中,Blob 存储为批处理输入文件、输出数据和中间处理结果提供可缩放的对象存储。
Azure 表存储 是一种 NoSQL 键值存储,可用于使用大型半结构化数据集进行快速开发。 在此体系结构中,表存储为批处理元数据和查找数据提供快速 NoSQL 存储。
监测
- Azure Monitor 是一种监视服务,可提供全面的解决方案,用于从云和本地环境收集、分析和处理遥测数据。 它包含 Application Insights、Azure Monitor 日志和 Log Analytics 功能。 在此体系结构中,Azure Monitor 为重新建模的批处理应用程序(包括性能指标、日志和警报)提供端到端监视和可观测性。
管理
Azure DevOps 是一组开发工具,可帮助你在软件开发和团队协作的每个阶段在 Azure 上重新创建大型机应用程序。 在此体系结构中,Azure DevOps 提供全面的 DevOps 功能,用于源代码管理、持续集成/持续部署(CI/CD)和整个大型机重新工程流程的项目管理。 DevOps 提供以下服务:
Azure Artifacts 是一种包管理服务,支持来自公共或专用源的 Maven、npm、Python 和 NuGet 包源。 在此体系结构中,Azure Artifacts 管理重新创建的大型机应用程序所需的依赖项和库。
Azure Boards 是一种敏捷项目管理工具,提供工作项跟踪、冲刺规划、可视化和报告功能。 在此体系结构中,Azure Boards 通过跟踪开发任务、用户情景和迁移里程碑来帮助管理大型机重新工程项目。
Azure Pipelines 是一种 CI/CD 服务,支持多种语言、平台和云环境,包括容器和 Kubernetes。 在此体系结构中,Azure Pipelines 自动执行重新设计大型机应用程序的生成、测试和部署过程。
Azure Repos 是一种云托管的 Git 存储库服务,它为无限的专用存储库提供协作拉取请求和高级文件管理。 在此体系结构中,Azure Repos 为重新生成的应用程序代码和配置文件提供版本控制。
Azure 测试计划 是一项测试管理服务,提供手动测试、探索测试和用户验收测试功能。 在此体系结构中,Azure 测试计划通过全面的测试工作流确保重新设计大型机应用程序的质量和功能。
方案详细信息
大型机主要用于处理大量数据。 批处理是处理大量组合在一起的事务,然后对数据库进行批量更新的方法。 触发后,只需最少的用户交互即可。 例如,大型机系统使银行和其他金融机构能够进行季度末处理和生成报告,例如季度股票或养老金报表。
潜在的用例
此解决方案非常适合金融、保险、医疗保健和零售行业。 使用此体系结构在 Azure 上重新设计大型机应用程序。 该体系结构最适合:
- 资源密集型大型机批处理应用程序。
- 在特定时间(如月末、季度或年份)需要高计算的批处理应用程序。
- 大型机批处理进程是重复的,而不是资源密集型的,但可能需要外部系统使用。
考虑
这些注意事项实现 Azure Well-Architected 框架的支柱,这是一组指导原则,可用于提高工作负荷的质量。 有关详细信息,请参阅 azure Well-Architected Framework
可靠性
可靠性可确保应用程序能够履行对客户的承诺。 有关详细信息,请参阅 可靠性的设计评审清单。
- 除了 Log Analytics 之外,还可以使用 Azure Monitor 和 Application Insights 来监视 Azure 资源的运行状况。 设置警报以主动管理资源运行状况。
- 有关 Azure 中的复原能力的详细信息,请参阅 设计可靠的 Azure 应用程序。
安全性
安全性提供针对故意攻击和滥用宝贵数据和系统的保证。 有关详细信息,请参阅 安全的设计评审清单。
- 此参考体系结构使用 ExpressRoute 从本地环境与 Azure 建立专用且高效的连接。 但是,还可以创建 站点到站点 VPN。
- 可以使用 Microsoft Entra ID 对 Azure 资源进行身份验证。 可以使用基于角色的访问控制(RBAC)管理权限。
- Azure 中的数据库服务支持各种安全选项,例如静态数据加密。
- 有关设计安全解决方案的详细信息,请参阅 Azure 安全文档。
成本优化
成本优化是研究减少不必要的开支和提高运营效率的方法。 有关详细信息,请参阅 成本优化的设计评审清单。
使用 Azure 定价计算器 估算 Azure 资源的成本。
有关服务成本估算示例,请参阅 Azure 大型机批处理应用程序。
卓越运营
卓越运营涵盖部署应用程序并使其在生产环境中运行的运营流程。 有关详细信息,请参阅 卓越运营的设计评审清单。
- 本文中的批处理体系结构使用多节点计算或 PaaS 服务,可提供高可用性。
- Azure 数据库服务支持区域冗余,你可以将其设计为在发生中断或维护时段期间故障转移到辅助节点。
性能效率
性能效率是工作负荷的缩放能力,以满足用户以高效方式满足它的需求。 有关详细信息,请参阅 性能效率的设计评审清单。
此体系结构中的以下 Azure 服务具有自动缩放功能:
- Azure Databricks
- AKS
- Spring Apps
- Batch
- Azure Functions
- Logic Apps
有关 Azure 中的自动缩放的详细信息,请参阅 自动缩放指南。
贡献
本文由Microsoft维护。 它最初由以下参与者编写。
主体作者:
- 阿什·汗德尔瓦尔 |首席工程体系结构管理器
若要查看非公共LinkedIn配置文件,请登录到LinkedIn。
后续步骤
- 有关详细信息,请联系 datasqlninja@microsoft.com。
- 请参阅
Azure 数据库迁移指南。