

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 클라우드에서 고급 메인프레임 파일 뷰어 구축
<a name="build-an-advanced-mainframe-file-viewer-in-the-aws-cloud"></a>

*Bopath GOPALSAMY, Jeremiah O'Connor, Amazon Web Services*

## 요약
<a name="build-an-advanced-mainframe-file-viewer-in-the-aws-cloud-summary"></a>

이 패턴은 서버리스 서비스를 사용하여 메인프레임 고정 형식 파일을 검색하고 검토하기 위한 고급 도구를 구축하는 데 도움이 되는 코드 샘플과 단계를 제공합니다. 이 패턴은 탐색 및 검색을 위해 메인프레임 입력 파일을 Amazon OpenSearch Service 문서로 변환하는 방법의 예를 제공합니다. 파일 뷰어 도구를 사용하면 다음과 같은 결과를 얻을 수 있습니다.
+ 대상 마이그레이션 환경의 일관성을 위해 동일한 메인프레임 파일 구조 및 레이아웃 유지(예: 파일을 외부로 전송하는 배치 애플리케이션에서 파일에 대해 동일한 레이아웃을 유지할 수 있음)
+ 메인프레임 마이그레이션 중에 개발 및 테스트 속도 향상
+ 마이그레이션 후 유지 관리 활동 지원

## 사전 조건 및 제한 사항
<a name="build-an-advanced-mainframe-file-viewer-in-the-aws-cloud-prereqs"></a>

**사전 조건 **
+ 활성 상태의 AWS 계정
+ 기존 플랫폼에서 연결할 수 있는 서브넷이 있는 Virtual Private Cloud(VPC)
+ 
**참고**  
입력 파일 및 해당 공용 비즈니스 지향 언어(COBOL) 카피북(참고: 입력 파일 및 COBOL 카피북 예는 GitHub 리포지토리의 [gfs-mainframe-solutions](https://github.com/aws-samples/gfs-mainframe-patterns.git) 참조. COBOL 카피북에 대한 자세한 내용은 IBM 웹사이트의 [z/OS 6.3용 엔터프라이즈 COBOL](https://publibfp.boulder.ibm.com/epubs/pdf/igy6pg30.pdf) 프로그래밍 가이드 참조.)

**제한 사항 **
+ 카피북 구문 분석은 최대 두 개의 중첩 수준으로 제한(OCCURS)

## 아키텍처
<a name="build-an-advanced-mainframe-file-viewer-in-the-aws-cloud-architecture"></a>

**소스 기술 스택  **
+ [FB(고정 차단)](https://www.ibm.com/docs/en/zos-basic-skills?topic=set-data-record-formats) 형식의 입력 파일
+ COBOL 카피북 레이아웃

**대상 기술 스택  **
+ Amazon Athena
+ Amazon OpenSearch Service
+ Amazon Simple Storage Service(Amazon S3)
+ Lambda
+ Step Functions

**대상 아키텍처**

다음 다이어그램은 탐색 및 검색을 위해 메인프레임 입력 파일을 Amazon OpenSearch Service 문서로 구문 분석 및 변환하는 과정을 나타냅니다.

![메인프레임 입력 파일을 구문 분석하고 OpenSearch Service로 변환하는 프로세스.](http://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/patterns/images/pattern-img/36d72b00-d163-455f-9e59-e2c872e7c28a/images/cce68438-bcf2-48c1-b86b-01242235ec76.png)


이 다이어그램은 다음 워크플로를 보여줍니다.

1. 관리자 또는 애플리케이션이 입력 파일을 S3 버킷 하나에 푸시하고 COBOL 카피북을 다른 S3 버킷으로 푸시합니다.

1. 
**참고**  
입력 파일이 있는 S3 버킷은 서버리스 Step Functions 워크플로를 시작하는 Lambda 함수를 간접적으로 호출합니다. 이 패턴에서 S3 이벤트 트리거와 Lambda 함수를 사용하여 Step Functions 워크플로를 구동하는 것은 선택 사항입니다. 이 패턴의 GitHub 코드 샘플에는 이러한 서비스의 사용이 포함되지 않지만 요구 사항에 따라 이러한 서비스를 사용할 수 있습니다.

1. Step Functions 워크플로는 다음 Lambda 함수의 모든 배치 프로세스를 조정합니다.
   + `s3copybookparser.py` 함수는 카피북 레이아웃을 구문 분석하고 필드 속성, 데이터 유형 및 오프셋(입력 데이터 처리에 필요)을 추출합니다.
   + 이 `s3toathena.py` 함수는 Athena 테이블 레이아웃을 생성합니다. Athena는 `s3toathena.py` 함수로 처리된 입력 데이터를 구문 분석하고 데이터를 CSV 파일로 변환합니다.
   + `s3toelasticsearch.py` 함수는 S3 버킷에서 결과 파일을 수집하여 OpenSearch 서비스로 푸시합니다.

1. 사용자는 OpenSearch Service로 OpenSearch Dashboards에 액세스하여 다양한 테이블 및 열 형식의 데이터를 검색한 다음 인덱싱된 데이터에 대해 쿼리를 실행합니다.

## 도구
<a name="build-an-advanced-mainframe-file-viewer-in-the-aws-cloud-tools"></a>

**서비스**
+ [Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html)는 표준 SQL을 사용하여 Amazon Simple Storage Service(Amazon S3)에 있는 데이터를 직접 간편하게 분석할 수 있는 대화형 쿼리 서비스입니다.
+ [Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)는 서버를 프로비저닝하거나 관리할 필요 없이 코드를 실행하는 데 도움이 되는 컴퓨팅 서비스입니다. 필요할 때만 코드를 실행하며 자동으로 확장이 가능하므로 사용한 컴퓨팅 시간만큼만 비용을 지불합니다. 이 패턴에서는 Lambda를 사용하여 파일 구문 분석, 데이터 변환, 대화형 파일 액세스를 위한 OpenSearch Service로의 데이터 로드와 같은 핵심 로직을 구현합니다.
+ [Amazon OpenSearch Service](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/what-is.html)는 클라우드에서 OpenSearch 클러스터를 손쉽게 배포, 운영 및 확장할 수 있도록 해주는 관리형 서비스입니다. 이 패턴에서는 OpenSearch Service를 사용하여 변환된 파일을 인덱싱하고 사용자에게 대화형 검색 기능을 제공합니다.
+ [Amazon Simple Storage Service(S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html)는 원하는 양의 데이터를 저장, 보호 및 검색하는 데 도움이 되는 클라우드 기반 객체 스토리지 서비스입니다.
+ [Command Line Interface(CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)는 명령줄 쉘에서 명령을 사용하여 서비스와 상호 작용할 수 있는 오픈 소스 도구입니다.
+ [Identity and Access Management(IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html)를 사용하면 사용자에 대해 인증 및 권한 부여를 제어함으로써 리소스에 대한 액세스를 안전하게 관리할 수 있습니다.
+ [Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html)는 Lambda 함수와 기타 서비스를 결합할 수 있는 서버리스 오케스트레이션 서비스로, 비즈니스 크리티컬 애플리케이션을 구축합니다. 이 패턴에서는 Step Functions를 사용하여 Lambda 함수를 오케스트레이션합니다.

**기타 도구**
+ [GitHub](https://github.com/)는 공동 작업 도구 및 버전 제어를 제공하는 코드 호스팅 서비스입니다.
+ [Python](https://www.python.org/)은 고급 프로그래밍 언어입니다.

**코드**

이 패턴의 코드는 GitHub [gfs-mainframe-patterns](https://github.com/aws-samples/gfs-mainframe-patterns.git) 저장소에서 사용할 수 있습니다.

## 에픽
<a name="build-an-advanced-mainframe-file-viewer-in-the-aws-cloud-epics"></a>

### 대상 환경 준비
<a name="prepare-the-target-environment"></a>


| 작업 | 설명 | 필요한 기술 | 
| --- | --- | --- | 
| S3 버킷을 생성합니다. | 카피북, 입력 파일 및 출력 파일을 저장하기 위한 [S3 버킷을 생성합니다](https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-bucket.html). S3 버킷에는 다음과 같은 폴더 구조를 사용하는 것이 좋습니다.[See the AWS documentation website for more details](http://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/patterns/build-an-advanced-mainframe-file-viewer-in-the-aws-cloud.html) | 일반 | 
| s3copybookparser 함수를 생성합니다. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/patterns/build-an-advanced-mainframe-file-viewer-in-the-aws-cloud.html) | 일반 | 
| s3toathena 함수를 생성합니다. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/patterns/build-an-advanced-mainframe-file-viewer-in-the-aws-cloud.html) | 일반 | 
| s3toelasticsearch 함수를 생성합니다. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/patterns/build-an-advanced-mainframe-file-viewer-in-the-aws-cloud.html) | 일반 | 
| 오픈서치 서비스 클러스터를 생성합니다. | **클러스터 생성**[See the AWS documentation website for more details](http://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/patterns/build-an-advanced-mainframe-file-viewer-in-the-aws-cloud.html)<br />**IAM 역할에 대한 액세스 권한 부여**<br />Lambda 함수의 IAM 역할(`arn:aws:iam::**:role/service-role/s3toelasticsearch-role-**`)에 대한 세분화된 액세스를 제공하려면 다음을 수행하십시오.[See the AWS documentation website for more details](http://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/patterns/build-an-advanced-mainframe-file-viewer-in-the-aws-cloud.html) | 일반 | 
| 오케스트레이션을 위한 Step Functions를 생성합니다. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/patterns/build-an-advanced-mainframe-file-viewer-in-the-aws-cloud.html) | 일반 | 

### 배포 및 실행
<a name="deploy-and-run"></a>


| 작업 | 설명 | 필요한 기술 | 
| --- | --- | --- | 
| 입력 파일 및 카피북을 S3 버킷에 업로드합니다. | [GitHub](https://github.com/aws-samples/gfs-mainframe-patterns.git) 리포지토리 샘플 폴더에서 샘플 파일을 다운로드하고 이전에 생성한 S3 버킷에 파일을 업로드합니다.[See the AWS documentation website for more details](http://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/patterns/build-an-advanced-mainframe-file-viewer-in-the-aws-cloud.html) | 일반 | 
| Step 함수를 호출합니다. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/patterns/build-an-advanced-mainframe-file-viewer-in-the-aws-cloud.html)<pre>{<br />  "s3_copybook_bucket_name": "<BUCKET NAME>",<br />  "s3_copybook_bucket_key": "<COPYBOOK PATH>",<br />  "s3_source_bucket_name": "<BUCKET NAME",<br />  "s3_source_bucket_key": "INPUT FILE PATH"<br />}</pre>예제:<pre>{<br />  "s3_copybook_bucket_name": "fileaidtest",<br />  "s3_copybook_bucket_key": "copybook/acctix.cpy",<br />  "s3_source_bucket_name": "fileaidtest",<br />  "s3_source_bucket_key": "input/acctindex"<br />}</pre> | 일반 | 
| Step Functions에서 워크플로 실행을 검증합니다. | [Step Functions 콘솔](https://console.aws.amazon.com/states/home)에서 **그래프 인스펙터**의 워크플로 실행을 검토합니다. 실행 상태는 색으로 구분되어 실행 상태를 나타냅니다. 예를 들어, 파란색은 **진행 중**, 녹색은 **성공**, 빨간색은 **실패**를 나타냅니다. 실행 이벤트에 대한 자세한 내용은 **실행 이벤트 기록** 섹션의 표를 검토할 수도 있습니다.<br />그래픽 워크플로 실행의 예는 이 패턴의 *추가 정보* 섹션에 있는 *Step Functions 그래프*를 참조하십시오. | 일반 | 
| Amazon CloudWatch에서 전송 로그를 검증합니다. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/patterns/build-an-advanced-mainframe-file-viewer-in-the-aws-cloud.html)성공적인 전송 로그의 예는 이 패턴의 *추가 정보* 섹션에 있는 *CloudWatch 전송 로그*를 참조하십시오. | 일반 | 
| OpenSearch Dashboards에서 형식이 지정된 파일을 검증하고 파일 작업을 수행합니다. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/patterns/build-an-advanced-mainframe-file-viewer-in-the-aws-cloud.html) | 일반 | 

## 관련 리소스
<a name="build-an-advanced-mainframe-file-viewer-in-the-aws-cloud-resources"></a>

**참조**
+ [예시 COBOL 카피북](https://www.ibm.com/docs/en/record-generator/3.0?topic=SSMQ4D_3.0.0/documentation/cobol_rcg_examplecopybook.html) (IBM 설명서)
+ [BMC 컴퓨웨어 파일 지원](https://www.bmc.com/it-solutions/bmc-compuware-file-aid.html) (BMC 설명서)

**자습서**
+ [자습서: Amazon S3 트리거를 사용하여 Lambda 함수 호출](https://docs.aws.amazon.com/lambda/latest/dg/with-s3-example.html) (Lambda 설명서)
+ [Step Functions와 Lambda를 사용하여 서버리스 워크플로를 생성하려면 어떻게 해야 하나요](https://aws.amazon.com/getting-started/hands-on/create-a-serverless-workflow-step-functions-lambda/)? (설명서)
+ [Amazon OpenSearch Service와 함께 OpenSearch Dashboards 사용](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/dashboards.html) (설명서)

## 추가 정보
<a name="build-an-advanced-mainframe-file-viewer-in-the-aws-cloud-additional"></a>

**Step Functions 그래프**

다음 예제에서는 Step Functions 그래프를 보여줍니다. 이 그래프는 이 패턴에 사용된 Lambda 함수의 실행 상태를 보여줍니다.

![Step Functions 그래프는 이 패턴에 사용된 Lambda 함수의 실행 상태를 보여줍니다.](http://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/patterns/images/pattern-img/36d72b00-d163-455f-9e59-e2c872e7c28a/images/11093e5d-2f9e-4bbf-8abc-f3b2980dd550.png)


**CloudWatch 전송 로그**

다음 예제는 `s3toelasticsearch` 실행의 실행에 대한 성공적인 전송 로그를 보여줍니다.


| 
| 
| 2022-08-10T15:53:33.033-05:00 | 처리 문서 수: 100개 |  | 
| --- |--- |--- |
|  | 2022-08-10T15:53:33.171-05:00 | [정보] 2022-08-10T20:53:33.171Z a1b2c3d4-5678-90ab-cdef-EXAMPLE11111POST https://search-essearch-3h4uqclifeqaj2vg4mphe7ffle.us-east-2.es.amazonaws.com:443/\_bulk [상태: 200 요청: 0.100초] | 
|  | 2022-08-10T15:53:33.172-05:00 | 대량 쓰기 성공: 100개의 문서 | 