

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

# 用于在上运行 Blu Age 现代化工作负载的解决方案架构 AWS
<a name="solution-architecture"></a>

该解决方案在通过 [Amazon Elastic Container Service（Amazon ECS）](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html)编排的 [Docker](https://aws.amazon.com/docker/) 容器内运行现代化的应用程序。容器映像内运行的包装器 shell 脚本管理现代化的 Java 应用程序，例如收集输入、运行 Java 代码以及处理和交付输出。

容器内的 Java 应用程序代码不在本指南的范围内。简而言之，包装器 shell 脚本充当容器的入口点，其编排各种任务。在运行时，ECS [任务定义](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html)通过使用[AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html)与参数存储的本机集成来提供环境元数据，例如亚马逊简单存储服务 (Amazon S3) Service 存储桶，[而参数](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html)存储的功能为。 AWS Systems Manager

以下架构旨在使用无服务器运行现代化的大型机工作负载 AWS 服务，无需管理和维护本地基础架构。



![\[在 AWS 无服务器基础设施上运行现代化大型机应用程序的架构图。\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/run-bluage-modernized-mainframes/images/architecture-diagram.png)


此图显示以下流程：

1. 在 [Amazon Elastic Container Registry（Amazon ECR）](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html)中创建并存储容器映像。Amazon ECS 任务定义使用映像标签引用该映像。

1. 使用以下类型之一的弹性负载均衡资源为请求提供入口点：
   + 对基于 HTTP 的服务，使用[应用程序负载均衡器](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html)。这允许使用 TLS 证书提供传输中加密和应用程序运行状况检查。
   + 对 IBM CICS 等其他服务，使用[网络负载均衡器](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html)。这可以透明地创建到 Amazon ECS 集群中容器的代理 TCP 连接（第 4 层）。
**注意**  
对于网络负载均衡器，容器运行状况检查需要建立 TCP 连接。

1. 将数据库端点和凭证等环境配置存储在 Secrets Manager 或 Parameter Store 中。使用 Secrets Manager 时，您可以根据存储的机密密钥数量和进行的 API 调用次数付费。此服务最适合数据库凭证等敏感数据。使用 Parameter Store 时，无需为标准参数和标准吞吐量的 API 交互额外付费。此服务最适合 Java 日志记录参数等其他非敏感数据。

1. 使用 [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) 存储任务输入和输出。bash 包装器内的 [AWS Command Line Interface （AWS CLI）](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)处理容器与 Amazon S3 的集成。`PutObject` 请求等 Amazon S3 事件可用于触发工作流程，例如为批处理作业运行 Amazon ECS 任务或向下游用户交付输出。

1. 使用 [Amazon Aurora PostgreSQL 兼容版](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html)来替代大型机数据库引擎，例如 IBM Db2 或 IBM IMS。端点和凭证等连接详细信息将在运行时提供给任务。对大型机工作负载进行现代化改造时，最具挑战性的环节之一是确保输入在大型机与应用程序的现代化版本之间保持一致。能够将数据从大型机复制到 PostgreSQL 等现代数据库引擎的实时更改数据捕获（CDC）解决方案寥寥无几。确保充分了解现代化应用程序所需的数据以及如何获取这些数据。

1. 实时服务的任务定义包括有关容器镜像、应向负载平衡资源提供哪些 TCP/IP 端口以及任何给定时间所需的容器数量的详细信息。内置的 [Amazon ECS 部署断路器](https://aws.amazon.com/blogs/containers/announcing-amazon-ecs-deployment-circuit-breaker/)（AWS 博客文章）提供了一种托管的滚动更新部署机制，可消除管理服务部署的运营开销。

1. 批处理作业的任务定义包括有关容器映像的详细信息以及配置所需的任何环境变量。这些可能包括可用的资源（例如 CPU、RAM 或临时存储）、输入、输出以及其他设置。

1. 使用 [Amazon S3 事件通知](https://docs.aws.amazon.com/AmazonS3/latest/userguide/NotificationHowTo.html)或[亚马逊 EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html)启动工作流程。这些服务可以根据 Amazon S3 中的事件（例如任务向存储桶写入输出对象时）启动工作 AWS Step Functions 流程或处理对象。

1. 使用 [AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html) 打包 Amazon ECS 中的批处理作业运行。该工作流程可以启动批处理任务、监控其进度并处理任何错误。

使用大型机工作负载时，可能需要一定程度的自定义。此架构旨在兼容常见使用案例，您可以对其进行扩展以支持许多需求。