

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 大型机现代化：用于迁移应用程序代码的解耦模式
简介

*Krithika Palani Selvam 和 Kevin Yung，Amazon Web Services ()AWS*

*2021 年 4 月*（[文档历史记录](doc-history.md)）

许多企业正在将大型机工作负载迁移到云端，以利用成本降低、灵活性提高、技术债务减免、数字战略支持、大型机传统技能差距和数据分析等因素。大型机工作负载比基于 x86 的工作负载更难迁移，因为传统的大型机应用程序通常是以紧密耦合的方式开发和部署的。例如，大型机应用程序可能包括由多个子系统使用或由其他应用程序直接调用的程序。在这些情况下，对底层程序所做的更改也会影响相关的子系统和应用程序。

对于传统应用程序，Amazon Web Services (AWS) 建议采用渐进方法，即分阶段计划迁移，以此作为最佳实践。这种方法有助于降低风险，因为您可以选择并优先考虑要一起迁移的密切相关的应用程序。但是，对于大型机迁移，这种方法有时并不像基于 x86 的迁移那样简单，特别是因为大型机应用程序代码可以是时间耦合（同步调用）或部署耦合（使用链接模块）。迁移耦合的应用程序代码会影响依赖的应用程序，因此会带来一些风险。为了降低此类风险，您可以在不影响依赖应用程序的情况下解耦大型机应用程序代码。本指南介绍了一些用于解耦大型机应用程序代码以进行迁移的常用模式。

该指南适用于计划在 AWS 云中迁移大型机应用程序并对其进行现代化改造的 IT 和业务高管、架构师和业务分析师、迁移和技术主管、开发团队、项目和项目经理、产品所有者以及运营和基础设施经理。

## 目标业务成果


 本指南解决了将耦合程序从大型机迁移到 AWS大型机时可能面临的常见挑战。它提供了 AWS 专业服务顾问在与 AWS 客户互动中经常遇到的代码解耦模式。使用这些模式时，迁移的应用程序和旧版应用程序都可以在迁移过程中继续运行。

## 定义


在本指南中：
+ *大型机应用程序*是指一套相关的大型机程序和子程序，用于完成和促进一系列业务流程。大型机应用程序可以是批处理系统，也可以是联机事务处理（OLTP）系统。
+ *大型机组件*是指一组实现特定功能的程序和子程序。
+ *大型机程序*是指一组实现业务逻辑的语句。程序可以独立运行。
+ 编写*子程序*通常是为了处理多个应用程序所需的可重复使用的操作或业务逻辑。程序以静态或动态方式调用其子程序。
+ *业务域*是指代表在分析期间建模的自主业务单位的特定领域。例如，软件的业务领域是指用户应用该程序的主题领域。

## 假设


本指南中的示例和图表反映了以下假设：
+ 正在迁移的大型机应用程序可能运行单个程序或多个程序。为简单起见，本指南中的图表显示了两个程序和每个应用程序的单个子程序。
+ 大型机程序和子程序是用 COBOL 编写的，然后将代码迁移到 Java 上。 AWS但是，您可以将这些解耦模式与您选择的编程语言一起使用。
+ 迁移模式是*传统的自动重构*，在这种重构中，代码、数据和依赖关系会自动转换为现代语言、数据存储和框架，同时保证功能等同于相同的业务功能。重构涉及使用自动化工具将大型机编程语言（例如 COBOL）转换为现代编程语言（例如 Java 或.NET）。
+ 重构后的应用程序部署在由配置和管理的容器上。[AWS Fargate](https://aws.amazon.com/fargate/)Fargate 是一款用于容器的无服务器计算引擎，可与亚马逊[弹性容器服务 (Amazon ECS) 和亚马逊 Elastic Kubernetes 服务 (Amazon EKS](https://aws.amazon.com/ecs/)) [配](https://aws.amazon.com/eks/)合使用。Fargate 使您可以轻松地专注于构建应用程序，因为它无需配置和管理服务器。
+ 大型机数据库表和大型机文件随应用程序一起迁移。

## 代码迁移场景


 从代码迁移的角度来看，传统大型机应用程序的两种主要类型是：
+ [独立应用程序](standalone.md)
+ [与其他应用程序共享程序的应用程序](shared.md)

以下各节描述了这两种场景的解耦模式。