

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

# 大型主機現代化：遷移應用程式程式碼的解耦模式
<a name="welcome"></a>

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

*2021 年 4 月* ([文件歷史記錄](doc-history.md))

許多企業正在將其大型主機工作負載移至雲端，以利用諸如降低成本、提高敏捷性、技術債務扣除、數位策略支援、大型主機傳統技能差距和資料分析等因素。大型主機工作負載比 x86 型工作負載更難遷移，因為傳統大型主機應用程式通常以緊密耦合的方式開發和部署。例如，大型主機應用程式可能包含許多子系統所使用的程式，或是由其他應用程式直接呼叫的程式。在這些情況下，對基礎程式所做的變更也會影響相關聯的子系統和應用程式。

對於舊版應用程式，Amazon Web Services (AWS) 建議使用增量方法，其中遷移是以波浪形式規劃，這是最佳實務。這種方法有助於降低風險，因為您選取與遷移密切相關的應用程式，並排定其優先順序。不過，對於大型主機遷移，這種方法有時並不像 x86 型遷移那樣簡單，尤其是因為大型主機應用程式程式碼可以是暫時耦合 （同步叫用） 或部署耦合 （使用連結模組）。遷移耦合的應用程式程式碼會影響相依的應用程式，因此會帶來一些風險。若要降低此類風險，您可以分離大型主機應用程式程式碼，而不會影響相依的應用程式。本指南說明一些常用的模式，用於分離大型主機應用程式程式碼以進行遷移。

本指南適用於 IT 和業務主管、架構師和業務分析師、遷移和技術主管、開發團隊、計畫和專案經理、產品擁有者，以及營運和基礎設施經理，他們計劃在 AWS 雲端遷移和現代化其大型主機應用程式。

## 目標業務成果
<a name="business-outcomes"></a>

 本指南說明從大型主機遷移耦合程式時可能面臨的常見挑戰 AWS。它會呈現 AWS 專業服務顧問在 AWS 與客戶互動時經常遇到的程式碼解耦模式。當您使用這些模式時，遷移和舊版應用程式都可以在遷移過程中繼續運作。

## 定義
<a name="definitions"></a>

在本指南中：
+ *大型主機應用程式*是指完成和促進一組業務程序的一組相關的大型主機程式和子程式。大型主機應用程式可以是批次處理系統或線上交易處理 (OLTP) 系統。
+ *大型主機元件*是指一組可實現特定功能的程式和子程式。
+ *大型主機程式*是指一組實作商業邏輯的陳述式。程式可以獨立執行。
+ *子程式*通常用於處理多個應用程式所需的可重複使用操作或商業邏輯。程式會以靜態或動態方式呼叫其子程式。
+ *商業網域*是指代表在分析期間建模之自主業務單位的特定球體。例如，軟體的商業網域是指使用者套用該程式的主題區域。

## 前提
<a name="assumptions"></a>

本指南中的範例和圖表反映了下列假設：
+ 正在遷移的大型主機應用程式可能會執行單一程式或多個程式。為了簡化，本指南中的圖表顯示每個應用程式的兩個程式和單一子程式。
+ 大型主機程式和子程式是以 COBOL 撰寫，程式碼會遷移至 Java on AWS。不過，您可以將這些解耦模式與您選擇的程式設計語言搭配使用。
+ 遷移模式是*傳統自動化重構*，其中程式碼、資料和相依性會自動轉換為現代語言、資料存放區和架構，同時確保具有相同業務函數的功能等效性。重構涉及使用自動化工具將大型主機程式設計語言 （例如 COBOL) 轉換為現代程式設計語言 （例如 Java 或 .NET)。
+ 重構應用程式會部署在由 佈建和管理的容器上[AWS Fargate](https://aws.amazon.com/fargate/)。Fargate 是容器的無伺服器運算引擎，可與 [Amazon Elastic Container Service (Amazon ECS)](https://aws.amazon.com/ecs/) 和 [Amazon Elastic Kubernetes Service (Amazon EKS)](https://aws.amazon.com/eks/) 搭配使用。Fargate 可讓您輕鬆地專注於建置應用程式，因為它不需要佈建和管理伺服器。
+ 大型主機資料庫資料表和大型主機檔案會隨應用程式遷移。

## 程式碼遷移案例
<a name="scenarios"></a>

 從程式碼遷移角度來看，傳統大型主機應用程式的兩種主要類型為：
+ [獨立應用程式](standalone.md)
+ [與其他應用程式共用程式的應用程式](shared.md)

下列各節說明這兩個案例的解耦模式。