大型主機現代化:使用微型焦點在 AWS 上的 DevOps 作業 - AWS Prescriptive Guidance

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

大型主機現代化:使用微型焦點在 AWS 上的 DevOps 作業

由容凱文 (AWS) 創作

來源:IBM z/OS 大型主機

目標:AWS

R 型態:N/A

環境:PoC 或試驗

技術:DevOps 營運;基礎設施

AWS 服務:Amazon EC2; AWS CloudFormation; AWS CodeBuild; AWS CodeCommit; AWS CodeDeploy; AWS Systems Manager; AWS CodePipeline

Summary

客戶挑戰

在大型主機硬體上執行核心應用程式的 Organizations 通常會遇到一些挑戰,當硬體需要擴充以滿足數位創新的需求。這些挑戰包括下列限制條件。 

  • 由於大型主機硬體元件缺乏彈性以及變更成本高,大型主機開發與測試環境無法擴充。

  • 大型主機開發面臨技能短缺,因為新開發人員不熟悉,並且對傳統的大型主機開發工具不感興趣。現代技術,如容器,持續整合/持續交付(CI/CD)管道和現代測試框架在大型主機開發中不可用。

模式結果

為了解決這些挑戰,AWS 合作夥伴網路 (APN) 合作夥伴 Amazon Web Services (AWS) 和微型焦點已經合作建立此模式。此解決方案旨在協助您達成下列結果。

  • 改善開發人員生產力。開發人員可以在幾分鐘內獲得新的大型主機開發執行個體。

  • 使用 AWS 雲端建立具有幾乎無限容量的新大型主機測試環境。

  • 快速佈建新的大型主機 CI/CD 基礎架構。使用 AWS AWS CloudFormation 式和 AWS Systems Manager 可以在一小時內完成在 AWS 上的佈建。

  • 用於大型主機 DevOps 的 AWS 開發工具原生使用,包括 AWS CodeBuild、AWS CodeCommit、AWS CodePipeline、AWS CodeDeploy 和 Amazon Elastic Container Registry (Amazon ECR)。

  • 在大型主機專案中將傳統瀑布開發轉換為敏捷開發。

技術摘要

在此模式下,目標堆疊包含下列元件。

邏輯元件實作解決方案描述
Source code repositoriesMicro Focus AccuRev Server, CodeCommit, Amazon ECRSource code management – The solution uses two types of source code. 
  • 大型主機源代碼,例如 COBOL,JCL 等 

  • AWS 基礎設施範本和自動化指令碼 

Both types of source code need version control, but they are managed in different SCMs. Source code deployed into mainframe or Micro Focus Enterprise Servers is managed in Micro Focus AccuRev Server. AWS templates and automation scripts are managed in CodeCommit. Amazon ECR is used for the Docker image repositories.
Enterprise developer instancesAmazon Elastic Compute Cloud (Amazon EC2), Micro Focus Enterprise Developer for EclipseMainframe developers can develop code in Amazon EC2 by using Micro Focus Enterprise Developer for Eclipse. This eliminates the need to rely on mainframe hardware to write and test code. 
Micro Focus license managementMicro Focus License ManagerFor centralized Micro Focus license management and governance, the solution uses Micro Focus License Manager to host the required license.
CI/CD pipelinesCodePipeline, CodeBuild, CodeDeploy, Micro Focus Enterprise Developer in a container, Micro Focus Enterprise Test Server in a container, Micro Focus Enterprise ServerMainframe development teams need CI/CD pipelines to perform code compilation, integration tests, and regression tests. In AWS, CodePipeline and CodeBuild can work with Micro Focus Enterprise Developer and Enterprise Test Server in a container natively.

先決條件和限制

先決條件

名稱描述
py3270py3270 is a Python interface to x3270, an IBM 3270 terminal emulator. It provides an API to a x3270 or s3270 subprocess.
x3270x3270 is an IBM 3270 terminal emulator for the X Window System and Windows.  This can be used by developer for unit testing locally.
Robot-Framework-Mainframe-3270-LibraryMainframe3270 is a library for Robot Framework based on py3270 project.
Micro Focus VerastreamMicro Focus Verastream is an integration platform that enables testing mainframe assets the way that mobile apps, web applications, and SOA web services are tested.
Micro Focus Unified Functional Testing (UFT) installer and licenseMicro Focus Unified Functional Testing is software that provides functional and regression test automation for software applications and environments.
Micro Focus Enterprise Server installer and licenseEnterprise Server provides the runtime environment for mainframe applications.
Micro Focus Enterprise Test Server installer and licenseMicro Focus Enterprise Test Server is an IBM mainframe application test environment
Micro Focus AccuRev installer and license for Server, and Micro Focus AccuRev installer and license for Windows and Linux operating systemsAccuRev provides source code management (SCM). The AccuRev system is designed for use by a team of people who are developing a set of files.
Micro Focus Enterprise Developer for Eclipse installer, patch and licenseEnterprise Developer provide mainframe developer a platform to develop and maintain the core mainframe online and batch applications.

限制

  • 在 CodeBuild 中不支援建置 Windows 泊塢視窗映像。這一個報告的問題需要來自 Windows kernel /HCS 和 Docker 團隊的支援。因應措施是使用 Systems Manager 來建立 Docker 映像建置 Runbook。這種模式使用解決方法來構建 Eclipse 和微焦點企業測試服務器容器映像的微焦點 Enpise 開發人員。 

  • Windows 尚未支援來自 CodeBuild 的虛擬私有雲 (VPC) 連線,因此該模式不使用微焦點 License Manager 可證管理器來管理微焦點企業開發人員和微焦點企業測試服務器容器中的許可證。

產品版本

  • 微型焦點企業開發商 5.5 或更新版本

  • Micro Focus Enterprise 測試伺服器 5.5 或更新版本

  • 微型 Focus Enterprise Server 5.5 或更新版本

  • 微型對焦能力 7.x 或更高版本

  • 微型焦點企業開發人員和企業測試伺服器的 Windows Docker 基本映像:微軟/點網框架 4.7.2 執行階段

  • 適用於 AccuRev 客戶端的 Linux 碼頭基本映像檔:上限連結:2

Architecture

大型主機環境

在傳統的大型主機開發,開發人員需要使用大型主機硬件來開發和測試程序。它們面臨容量限制,例如限制開發/測試環境的每秒百萬指令 (MIPS),而且它們必須仰賴大型主機電腦上可用的工具。

在許多組織中,大型主機開發遵循瀑布開發方法,團隊依賴長週期來釋放變更。這些發行週期通常比數位產品開發更長。  

下圖顯示了多個大型主機項目共享大型主機硬件為他們的發展。在大型主機硬件,它是昂貴的擴展開發和測試環境更多的項目。

  

AWS 架構

此模式將大型主機開發延伸到 AWS 雲端。首先,它使用微型焦點 AccuRev SCM 在 AWS 上託管大型主機原始程式碼。然後,它讓微焦企業開發人員和微焦企業測試伺服器可用於在 AWS 上建置和測試大型主機程式碼。 

下列章節描述此陣列的三個主要元件。

1SCM

在 AWS 中,該模式使用微型焦點 AccuRev 為大型主機原始程式碼建立一組 SCM 工作區和版本控制。其串流式架構可為多個團隊提供平行的大型主機開發。若要合併「變更」,AccuRev 會使用推進概念。若要將該變更新增至其他工作區,AccuRev 會使用更新概念。

在專案層級,每個團隊都可以在 AccuRev 中建立一個或多個串流,以追蹤專案層級的變更。這些被稱為項目流。這些專案資料流是從相同的父資料流繼承的。父流用於合併來自不同項目流的更改。

每個專案串流都可以將程式碼升級至 AccuRev,並設定升級後觸發程序來啟動 AWS CI/CD 管道。項目流更改的成功構建可以被提升為其父流進行更多的回歸測試。 

通常,父流被稱為系統集成流。從專案資料流升級至系統整合資料流時,推廣後觸發程序會啟動另一個 CI/CD 管道以執行迴歸測試。

除了大型主機程式碼之外,此模式還包括 AWS CloudFormation 範本、Systems Manager 自動化文件和指令碼。遵循基礎設施即程式碼的最佳實務,它們在 AWS CodeCommit 中受版本控制。 

如果您需要將大型主機程式碼同步回大型主機環境以進行部署,微型焦點提供企業同步解決方案,它會將 AccuRev SCM 的程式碼同步回大型主機 SCM。

2. 開發人員和測試環境

在一個大型組織中,擴展超過一百甚至超過一千個大型主機開發人員是具有挑戰性的。為了解決此限制,該模式使用 Amazon EC2 Windows 執行個體進行開發。在這些實例上,安裝了 Eclipse 工具的微型焦點企業開發人員。開發人員可以在執行個體上執行所有大型主機程式碼測試和偵錯。 

AWS Systems Manager 狀態管理員和自動化文件可用來自動佈建開發人員執行個體。建立開發人員執行個體的平均時間是 15 分鐘內。已準備好下列軟體和組態。

  • 用於簽出和提交源代碼到 AccuRev 的視窗客戶端

  • 微焦企業開發人員適用於 Eclipse 工具,用於在本地編寫,測試和調試大型主機代碼

  • 開源測試框架 Python 行為驅動開發(BDD)測試框架行為,py3270 和用於創建腳本來測試應用程序的 x3270 模擬器

  • Docker 開發人員工具,用於建置企業測試伺服器 Docker 映像,並在企業測試伺服器 Docker 容器中測試應用程式 

在開發週期中,開發人員使用 EC2 執行個體在本機開發和測試大型主機程式碼。成功測試本機變更時,開發人員會將變更升級至 AccuRev 伺服器。 

3. CI/CD 管道

在模式中,CI/CD 管道用於集成測試和回歸測試部署到生產環境之前。 

如 SCM 一節所述,AccuRev 使用兩種類型的資料流:專案資料流和整合資料流。每個串流都與 CI/CD 管道連接。若要執行 AccuRev 伺服器與 AWS CodePipeline 之間的整合,此模式會使用 AccuRev 推廣後指令碼建立事件以啟動 CI/CD。

例如,當開發人員在 AccuRev 中提升項目流的變更時,它會啟動一個後推廣腳本以在 AccuRev 服務器中運行。然後,指令碼會將變更的元數據上傳到 Amazon SSimple Storage Service (Amazon S3) 貯體,以建立 Amazon Simple S3 事件。此事件將啟動一個 CodePipeline 配置的管道來運行。 

相同的事件啟動機制用於整合串流及其相關聯的管線。 

在 CI/CD 管道中,程式 CodePipeline 使用 CodeBuild 與微型焦點 Accurev Linux 用戶端容器來檢查最新的程式碼從 AccuRev 資料流。然後管線會啟動 CodeBuild 使用微型焦點企業開發人員 Windows 容器來編譯原始程式碼,並使用微型焦點企業測試伺服器 Windows 容器,在 CodeBuild 中測試大型主機應用程式。

CI/CD 管道是使用 AWS CloudFormation 範本建置的,藍圖將用於新專案。透過使用範本,專案在 AWS 中建立新的 CI/CD 管道所需的時間不到一小時。

為了在 AWS 上擴展您的大型主機測試功能,該模式建立了微型焦點 DevOps 測試套件、微型焦點動詞流和微型焦點 UFT 伺服器。透過使用現代 DevOps 工具,您可以視需要在 AWS 上執行任意數量的測試。

下圖顯示具有微型 Focus 在 AWS 上的大型主機開發環境範例。

 

目標技術堆疊

本節詳細介紹樣式中每個元件的架構。

1原始程式碼儲存庫 —

微聚焦 AccuRev SCM 設置用於管理大型主機源代碼版本。為了達到高可用性,AccuRev 支援主要模式和複本模式。操作員可以在主要節點上執行維護時容錯移轉至複本。 

為了加快 CI/CD 管線的回應速度,該模式使用 Amazon CloudWatch Events 偵測原始程式碼變更並啟動管線的開始。

  1. 該 CodePipeline 被設置為使用 Amazon S3 源。

  2. CloudWatch 事件規則已設定為從來源 S3 儲存貯體擷取 S3 事件。

  3. CloudWatch 事件規則會將目標設定至管線。

  4. AccuRev SCM 配置為在升級完成後,在本機執行升級後的升級程序檔。

  5. AccuRev SCM 會產生包含促銷的中繼資料的 XML 檔案,而程序檔會將 XML 檔案上傳至來源 S3 儲存貯體。

  6. 上傳之後,來源 S3 儲存貯體會傳送事件以符合 CloudWatch 事件規則,而 CloudWatch 事件規則則會啟動 CodePipeline 以執行。 

管道執行時,它會啟動 CodeBuild 專案,以使用 Accurev Linux 用戶端容器來檢出最新的大型主機程式碼,從相關聯的 AccuRev 資料流。  

下圖顯示 AccuRev Server 設定流程。

2. 企業開發人員範本 

該模式使用 Amazon EC2 範本來簡化開發人員執行個體的建立。通過使用狀態管理器,它可以一致地將軟件和許可證設置應用到 EC2 執行個體。

Amazon EC2 範本以其 VPC 內容設定和預設執行個體設定建置,並遵循企業標記要求。透過使用範本,專案團隊可以建立自己的新開發執行個體。 

當開發人員執行個體啟動時,藉由與標籤產生關聯,Systems Manager 會使用狀態管理員來套用自動化。自動化包括下列一般步驟。

  1. 安裝微焦點企業開發軟體並安裝修補程式。

  2. 安裝微型焦點 AccuRev 用戶端的視窗。

  3. 安裝預先設定的指令碼,讓開發人員加入 AccuRev 串流。初始化 Eclipse 工作區。

  4. 安裝開發工具,包括 x3270,py3270 和碼頭。

  5. 設定授權設定以指向微型焦點 License Manager 負載平衡器。

下圖顯示由 Amazon EC2 範本建立的企業開發人員執行個體,其中狀態管理員將軟體和組態套用至執行個體。企業開發人員執行個體連線至微型焦點 License Manager 以啟動其授權。

 

3.  CI/CD 管道

如 AWS 架構部分所述,在模式中,有專案層級的 CI/CD 管道和系統整合管道。每個大型主機專案團隊建立一個管線或多個 CI/CD 管線,用於建立他們正在一個專案中開發的程式。這些專案 CI/CD 管道會從相關聯的 AccuRev 資料流檢出原始程式碼。 

在專案小組中,開發人員會在相關聯的 AccuRev 資料流中促進其程式碼。然後推廣啟動項目管道來構建代碼並運行和集成測試。 

每個專案 CI/CD 管道使用 CodeBuild 專案與微型焦點企業開發人員工具 Amazon ECR 映像和微型焦點企業測試伺服器工具 Amazon ECR 映像。 

CodePipeline 和 CodeBuild 生成用於創建 CI/CD 管道。因為 CodeBuild 和 CodePipeline 沒有預付費用或承諾,您只要支付您的用量。與大型主機硬體相比,AWS 解決方案大幅縮短硬體佈建前置時間,並降低測試環境的成本。

在現代開發中,使用多種測試方法。例如,測試驅動開發(TDD),BDD 和機器人框架。有了這種模式,開發人員可以使用這些現代工具進行大型主機測試。例如,通過使用 x3270,py3270 和行為 python 測試工具,您可以定義在線應用程序的行為。您也可以在這些 CI/CD 管道中使用建置大型主機 3270 機器人架構。

下圖顯示群組串流 CI/CD 管道。 

下圖顯示了由 CodePipeline 在大型機器人 3270 機器人框架和行為產生的項目 CI/CD 測試報告。

 

測試報告-大型主機 3270 機器人框架  

測試報告-Py3270 和行為 BDD

成功通過專案層級測試之後,測試的程式碼會手動提升至 AccuRev SCM 中的整合資料流。您可以自動化這一步之後,團隊對他們的項目管道的測試覆蓋率有信心。

當程式碼提升時,系統整合 CI/CD 管道會檢出合併的程式碼,並執行迴歸測試。合併的代碼從所有並行項目流中提升。

根據測試環境的需求,客戶可以在不同的環境中擁有更多的系統整合 CI/CD 管道,例如 UAT、前期生產。 

在該模式中,在系統集成管道中使用的工具是微焦點企業測試服務器,微焦點 UFT 服務器和微焦點 Verastream。所有這些工具都可以部署到 Docker 容器中,並與 CodeBuild 一起使用。

成功測試大型主機程序後,工件將使用版本控制存儲在 S3 存儲桶中。 

下圖顯示系統整合 CI/CD 管道。

 

成功在系統整合 CI/CD 管線中測試人工因素之後,就可以將其升級為生產部署。 

如果您需要將原始程式碼部署回大型主機,微焦點提供企業同步解決方案,將 AccuRev 的原始程式碼同步回大型主機。

下圖顯示將人工因素部署到微型焦點企業伺服器的生產 CI/CD 管線。在此範例中,CodeDeploy 會協調測試的大型主機成品部署到微型焦點企業伺服器。

除了 CI/CD 管道的架構逐步解說之外,您也可以閱讀 AWS DevOps 部落格文章使用微焦企業套件在 AWS 上自動化數千個大型主機測試以取得有關在 CodeBuild 和 CodePipeline 中測試大型主機應用程式的詳細資 如需在 AWS 上進行大型主機測試的最佳實務和詳細資訊,請參閱部落格文章。

Tools

工具

AWS 自動化工具

微型對焦工具

其他工具

Epics

任務描述必要的技能
使用 AWS CloudFormation 部署主要 AccuRev SCM 伺服器。

AWS CloudFormation
創建「AccuRev 管理員」用戶。

登入 AccuRev SCM 伺服器,然後執行 CLI 命令以建立管理員使用者。

SCM 伺服器管理員
建立驗證資料流。

建立依序從上層資料流繼承的 AccuRev 資料流:生產、系統整合、團隊串流。

Ac3 SCM 管理員
建立開發人員 AccuRev 登入帳號。

使用 AccuRev SCM CLI 命令為大型主機開發人員建立 AccuRev 使用者登入帳戶。

Ac3 SCM 管理員
任務描述必要的技能
使用 AWS CloudFormation 部署 Amazon EC2 啟動範本。

使用 AWS CloudFormation 為微型焦點企業開發人員執行個體部署 Amazon EC2 啟動範本。範本包含微型焦點企業開發人員執行個體的 Systems Manager 自動化文件。

AWS CloudFormation
從 Amazon EC2 範本建立企業開發人員執行個體。

AWS 主控台登入和大型主機開發人員技能
任務描述必要的技能
創建微焦點企業開發人員工具 Docker 映像。

使用 Docker 命令和微焦點企業開發人員工具 Docker 檔來建立 Docker 映像。

Docker
在亞馬遜 ECR 中創建碼頭存儲庫。

在 Amazon ECR 主控台上,建立微型焦點企業開發人員 Docker 映像的存放庫。

Amazon ECR
將微型焦點企業開發人員工具 Docker 映像推送到 Amazon ECR。

執行 Docker 推送命令以推送企業開發人員工具 Docker 映像,以將其儲存在 Amazon ECR 的 Docker 存放庫中。

Docker
任務描述必要的技能
建立微型焦點企業測試伺服器 Docker 映像。

使用 Docker 命令和微型焦點企業測試伺服器 Docker 檔案來建立 Docker 映像。

Docker
在亞馬遜 ECR 中創建碼頭存儲庫。

在 Amazon ECR 主控台上,為微型焦點企業測試伺服器 Docker 映像建立 Amazon ECR 存放庫。

Amazon ECR
將微型焦點企業測試伺服器 Docker 映像推送到 Amazon ECR。

執行 Docker 推送命令,以在 Amazon ECR 中推送和儲存企業測試伺服器 Docker 映像。

Docker
任務描述必要的技能
建立 AWS CodeCommit 儲存庫。

在 CodeCommit 主控台上,為基礎設施和 AWS CloudFormation 程式碼建立以 GIT 為基礎的存放庫。

AWS CodeCommit
將 AWS CloudFormation 範本和自動化程式碼上傳到 CodeCommit 存放庫。

執行 Git 推送命令,將 AWS CloudFormation 範本和自動化程式碼上傳到存放庫。

Git
透過 CloudFormation 部署團隊串流 CI/CD 管道。

使用準備好的 AWS CloudFormation 範本來部署團隊串流 CI/CD 管道。

AWS CloudFormation
任務描述必要的技能
創建微焦點 UFT 碼頭映像。

使用碼頭命令和微型焦點 UFT 碼頭文件創建微型焦點碼頭圖像。

Docker
在亞馬遜 ECR 中為微型焦點 UFT 映像創建 Docker 存儲庫。

在亞馬遜 ECR 主控台上,為微焦 UFT 映像創建 Docker 存儲庫。

Amazon ECR
將微型焦點 UFT 碼頭圖像推送到亞馬遜 ECR。

執行 Docker 推送命令,以在 Amazon ECR 中推送和儲存企業測試伺服器 Docker 映像。

Docker
建立微型焦點動畫串泊塢視窗映像。

使用 Docker 命令和微型焦點動詞流停駐檔來建立 Docker 映像。

Docker
在 Amazon ECR 中為微型焦點動詞流映像建立 Docker 儲存庫。

在 Amazon ECR 主控台上,為微焦點動詞流映像建立 Docker 存放庫。

Amazon ECR
透過 CloudFormation 部署系統整合 CI/CD 管道。

使用準備好的 AWS CloudFormation 範本來部署系統整合 CI/CD 管道。

AWS CloudFormation
任務描述必要的技能
使用 AWS 快速入門部署微型焦點企業伺服器。

若要使用 AWS CloudFormation 部署微型焦點企業伺服器,請在 AWS 快速入門上啟動微型焦點企業伺服器。

AWS CloudFormation
部署生產部署 CI/CD 管線。

在 AWS CloudFormation 控台上,使用 AWS CloudFormation 格式範本部署生產部署 CI/CD 管道。

AWS CloudFormation

References

AWS Marketplace

AWS Quick Start