기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
AWS Fargate를 사용하여 메시지 기반 워크로드를 대규모로 실행
Stan Zubarev, Amazon Web Services
요약
이 패턴은 컨테이너와 AWS Fargate를 사용하여 AWS 클라우드에서 대규모로 메시지 기반 워크로드를 실행하는 방법을 보여줍니다.
애플리케이션이 처리하는 데이터의 양이 함수 기반 서버리스 컴퓨팅 서비스의 한계를 초과할 때 컨테이너를 사용하여 데이터를 처리하는 것이 유용할 수 있습니다. 예를 들어 애플리케이션에 AWS Lambda가 제공하는 것보다 더 많은 컴퓨팅 파워나 처리 시간이 필요한 경우 Fargate를 사용하면 성능을 개선할 수 있습니다.
다음 예제 설정은 TypeScript의 AWS Cloud Development Kit(AWS CDK)를 사용하여 AWS 클라우드에서 다음 리소스를 구성하고 배포합니다.
- Fargate 서비스 
- Amazon Simple Queue Service(Amazon SQS) 대기열 
- Amazon DynamoDB 테이블 
- Amazon CloudWatch 대시보드 
Fargate 서비스는 Amazon SQS 대기열에서 메시지를 수신하여 처리한 다음 Amazon DynamoDB 테이블에 저장합니다. CloudWatch 대시보드를 사용하여 Fargate에서 처리되는 Amazon SQS 메시지 수와 생성한 DynamoDB 항목 수를 모니터링할 수 있습니다.
참고
또한이 패턴의 예제 코드를 사용하여 이벤트 기반 서버리스 아키텍처에서 더 복잡한 데이터 처리 워크로드를 구축할 수 있습니다. 자세한 내용은 AWS Fargate를 사용하여 대규모로 이벤트 기반 및 예약된 워크로드 실행을 참조하십시오.
사전 조건 및 제한 사항
사전 조건
- 활성 상태의 AWS 계정 
- AWS Command Line Interface(AWS CLI) 최신 버전 로컬 머신에 설치 및 구성 
- Git - 로컬 머신에 설치 및 구성 
- AWS CDK 로컬 머신에 설치 및 구성 
- 이동 - 로컬 머신에 설치 및 구성 
- Docker - 로컬 머신에 설치 및 구성 
아키텍처
대상 기술 스택
- Amazon SQS 
- AWS Fargate 
- Amazon DynamoDB 
대상 아키텍처
다음 다이어그램은 Fargate를 사용하여 AWS 클라우드에서 대규모로 메시지 기반 워크로드를 실행하는 예제 워크플로를 보여줍니다.

이 다이어그램은 다음 워크플로를 보여줍니다.
- Fargate 서비스는 Amazon SQS 긴 폴링을 사용하여 Amazon SQS 대기열의 메시지를 받습니다. 
- 그러면 Fargate 서비스가 Amazon SQS 메시지를 처리하여 DynamoDB 테이블에 저장합니다. 
자동화 및 규모 조정
Fargate 작업 수를 자동으로 조정하려면 Amazon Elastic Container Service (Amazon ECS) 서비스 Auto Scaling을 구성할 수 있습니다. 애플리케이션의 Amazon SQS 대기열에 표시되는 메시지 수를 기준으로 조정 정책을 구성하는 것이 가장 좋습니다.
자세한 정보는 Amazon EC2 Auto Scaling 사용 설명서의 Amazon SQS 기반 조정을 참조하십시오.
도구
서비스
- AWS Fargate를 사용하면 서버 또는 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스를 관리할 필요 없이 컨테이너를 실행할 수 있습니다. Amazon Elastic Container Service(Amazon ECS)와 함께 사용합니다. 
- Amazon Simple Queue Service(Amazon SQS)는 분산 소프트웨어 시스템과 구성 요소를 통합하고 분리하는 데 도움이 되는 안전하고 내구성이 뛰어나며 가용성이 높은 호스팅 대기열을 제공합니다. 
- Amazon DynamoDB는 빠르고 예측 가능하고 확장 가능한 성능을 제공하는 완전 관리형 NoSQL 데이터베이스 서비스입니다. 
- Amazon CloudWatch는 AWS 리소스와 AWS에서 실시간으로 실행되는 애플리케이션의 지표를 모니터링하는 데 도움이 됩니다. 
code
이 패턴의 코드는 GitHub sqs-fargate-ddb-cdk-go
에픽
| 작업 | 설명 | 필요한 기술 | 
|---|---|---|
| GitHub 리포지토리를 복제합니다. | 다음 명령을 실행하여 GitHub sqs-fargate-ddb-cdk-go 
 | 앱 개발자 | 
| AWS CLI가 올바른 AWS 계정으로 구성되어 있고 AWS CDK에 필요한 권한이 있는지 확인하십시오. | AWS CLI 구성 설정이 올바른지 확인하려면 다음 Amazon Simple Storage Service(S3) ls 명령을 실행합니다. 
 또한 이 절차를 수행하려면 AWS CDK에 AWS 계정 내에서 인프라를 프로비저닝할 수 있는 권한이 있어야 합니다. 필요한 권한을 부여하려면 AWS CLI에서 이름이 지정된 AWS 프로필을 생성하고 이를 AWS_PROFILE 환경 변수로 내보내야 합니다. 참고이전에 AWS 계정에서 AWS CDK를 사용한 적이 없는 경우 먼저 필요한 AWS CDK 리소스를 프로비저닝해야 합니다. 자세한 내용은 AWS CDK v2 개발자 안내서의 부트스트래핑을 참조하십시오. | 앱 개발자 | 
| AWS CDK 스택을 AWS 계정에 배포하십시오. | 
 | 앱 개발자 | 
| 작업 | 설명 | 필요한 기술 | 
|---|---|---|
| Amazon SQS 대기열로 테스트 메시지를 전송합니다. | 지침은 Amazon SQS 개발자 안내서의 대기열(콘솔)로 메시지 전송을 참조하십시오. Amazon SQS 메시지 예제 테스트 
 | 앱 개발자 | 
| Fargate 서비스의 CloudWatch 로그에 테스트 메시지가 나타나는지 확인합니다. | Amazon ECS 개발자 안내서 CloudWatch Logs 보기의 지침을 따르십시오. go-service-cluster ECS 클러스터의 go-fargate-service 로그 그룹에 대한 로그를 반드시 검토하십시오. | 앱 개발자 | 
| 테스트 메시지가 DynamoDB 테이블에 나타나는지 확인합니다. | 
 | 앱 개발자 | 
| Fargate 서비스가 CloudWatch Logs에 메시지를 보내고 있는지 확인하십시오. | 
 참고AWS CDK는 AWS 계정에 CloudWatch 대시보드를 자동으로 생성합니다. | 앱 개발자 | 
| 작업 | 설명 | 필요한 기술 | 
|---|---|---|
| AWS CDK 스택을 삭제합니다. | 
 | 앱 개발자 | 
| AWS CDK 스택이 삭제되었는지 확인합니다. | 스택이 삭제되었는지 확인하려면 다음 명령을 실행합니다. 
 명령 출력에 반환되는  자세한 내용은 AWS CloudFormation 사용 설명서의 AWS CLI 및 PowerShell에 대한 CloudFormation 스택 작업 명령 예제를 참조하세요. AWS CloudFormation | 앱 개발자 | 
관련 리소스
- AWS CLI 구성(AWS CLI 사용 설명서 버전 2) 
- API 레퍼런스 (AWS CDK API 레퍼런스) 
- AWS SDK for Go v2 - (Go 설명서)