

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在 上執行 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)和 [參數存放區](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html)，提供環境中繼資料，例如 Amazon Simple Storage Service (Amazon S3) 儲存貯體 AWS Systems Manager。

下列架構旨在使用無伺服器執行現代化大型主機工作負載 AWS 服務，無需管理和維護內部部署基礎設施。



![在無伺服器基礎設施上執行 AWS 的現代化大型主機應用程式的架構圖。](http://docs.aws.amazon.com/zh_tw/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. 使用下列其中一種 Elastic Load Balancing 資源來提供請求的進入點：
   + 對於 HTTP 型服務，請使用 [Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html)。這可讓您使用 TLS 憑證來提供傳輸中加密和應用程式運作狀態檢查。
   + 對於其他 服務，例如 IBM CICS，請使用 [Network Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html)。這會透明地建立與 Amazon ECS 叢集中容器的代理 TCP 連線 （第 4 層）。
**注意**  
對於 Network Load Balancer，容器運作狀態檢查需要建立 TCP 連線。

1. 在 Secrets Manager 或 參數存放區中存放環境組態，例如資料庫端點和登入資料。使用 Secrets Manager，您可以根據儲存的秘密數量和進行的 API 呼叫來支付費用。此服務最適合任何敏感資料，例如資料庫登入資料。透過 參數存放區，標準參數和 API 互動的標準輸送量無需額外費用。此服務最適合其他非敏感資料，例如 Java 記錄參數。

1. 使用 [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) 存放任務輸入和輸出。堡壘包裝函式中的 [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。連線詳細資訊，例如端點和登入資料，會在執行時間提供給任務。現代化大型主機工作負載時最具挑戰性的層面之一，就是確保大型主機與應用程式現代化版本之間的輸入相符。很少有即時的變更資料擷取 (CDC) 解決方案，可將資料從大型主機複寫到 PostgreSQL 等現代資料庫引擎。確保您充分了解現代化應用程式所需的資料，以及如何提供資料。

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)或 [Amazon 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 中包裝批次任務的操作。工作流程可以啟動批次任務、監控其進度，以及處理任何錯誤。

對於大型主機工作負載，可能需要一定程度的自訂。此架構旨在與常見使用案例相容，您可以將其擴展以支援許多需求。