안녕하세요 1-tier 팀의 One입니다.
오늘은 AWS의 메시지 대기열 서비스인 SQS에 대해서 함께 알아봅시다.
SQS (Simple Queue Service)
SQS는 분산 된 메시징 대기열 서비스로, 소프트웨어 컴포넌트 간에 비동기 메시지를 전송하는 데 사용됩니다.
큐를 생성하고, 메시지를 보내고, 받는 기능을 제공합니다.
SQS는 SNS, Lambda, EC2, S3와 같은 다양한 AWS 서비스와 통합 될 수 있습니다.
분산된 시스템 아키텍처에서 유용하며, 서로 다른 시스템 간에 메세지를 안정적이고 확장 가능하게 전송할 수 있습니다.
더 자세한 설명은 아래의 Document에서 확인 할 수 있습니다.
https://aws.amazon.com/ko/sqs/features/
SQS 처리과정
SQS의 처리 과정은 다음과 같습니다.
1. 메시지 생성 : 메시지를 생성하고, SQS 대기열에 보내기 위해 SQS API를 사용합니다.
2. 대기열 수신 : SQS 대기열에 저장된 메시지를 수신합니다. 대기열은 표준 대기열과 FIFO 대기열로 구성됩니다.
3. 메시지 처리 : 대기열에서 가져온 메시지를 처리합니다. 이때, 애플리케이션 로직에 따라 다양한 처리가 가능합니다.
4. 삭제 : 메시지가 처리되면, SQS 대기열에서 메시지를 삭제합니다. 이미 처리된 메시지는 다시 처리되지 않도록 보장합니다.
SQS 대기열 유형
표준 대기열 (Standard)
대량의 메시지 처리와, 순서가 중요하지 않은 경우에 적합합니다.
- 수백만 개의 메시지를 초당 처리할 수 있습니다.,
- 네트워크 오류로 인해 메시지가 한 번 이상 전달될 수 있습니다.
- 메시지의 전달 순서가 보장되지 않습니다.
- 메시지의 중복 전달이 가능합니다.
FIFO대기열 (First-In-First-Out)
메시지 처리 순서를 보장하므로, 높은 정확성이 요구되는 비지니스 로직에서 사용됩니다.
처리량 제한이 있으므로, 대량의 메시지 처리에는 적합하지 않습니다.
- 초당 최대 300개의 메시지만 처리 가능합니다.
- 메시지의 정확한 전달 순서가 보장됩니다.
- 메시지가 정확히 한 번만 전달됩니다.
- 메시지의 중복 전달이 불가능합니다.
SQS 활용 (SQS + S3)
SQS 메시지 대기열 서비스를 Redshift, DynamoDB, RDS, EC2, ECS, Lambda 및 S3 등 다른 AWS 서비스와 함께 사용하면 분산 애플리케이션의 안정성과 확장성을 더욱 향상시킬 수 있습니다.
그 중 SQS와 S3을 함께 사용하는 법에 대해 알아보겠습니다.
SQS와 S3를 함께 사용하면 다음과 같은 장점이 있습니다.
- 비동기 처리 : S3 버킷에 업로드 되는 파일을 처리하는 데 많은 시간이 걸릴 경우, 대기열 메시지를 가져와 비동기적으로 처리할 수 있습니다.
- 높은 가용성 : S3 버킷에 업로드된 파일을 처리하는 애플리케이션이 다운 되었을 때, SQS 대기열에 저장된 메시지는 여전히 유지되므로, 해당 애플리케이션이 복구되면 메시지를 가져와 작업을 다시 시작할 수 있습니다.
- 확장성 : S3 이벤트와 SQS 대기열을 함께 사용하면, 메시지 큐에 대량의 이벤트 알림 메시지를 쉽게 보낼 수 있으므로, 애플리케이션의 확장성을 높일 수 있습니다.
- 이벤트 기반 아키텍쳐 : S3 버킷에 업로드되는 파일을 처리하는 애플리케이션에서 SQS 대기열 메시지를 가져와 이벤트를 처리하고, 다른 애플리케이션이나 서비스에 이벤트를 전달할 수 있습니다.
S3 버킷과 SQS 대기열이 이미 존재한다는 가정하에 생성 방법은 다음과 같습니다.
1. 구성 할 S3 버킷을 선택 후 속성 탭을 선택
2. 이벤트 알림을 선택한 후 추가 버튼을 클릭
3. 이벤트 알림 구성 페이지에서 다음과 같은 정보를 입력
4. 전송 대상에서 SQS 대기열을 선택함
AWS의 다양한 리소스와 SQS를 함께 활용하여,
애플리케이션의 확장성을 높이고, 빠른 처리를 할 수 있을 것 같습니다.
그럼 다음에 더 유익한 내용으로 돌아오겠습니다.
베-바 👋
'CSP (Cloud Service Provider) > AWS' 카테고리의 다른 글
[AWS][GCP] AWS GCP VPN 연동 (0) | 2023.06.23 |
---|---|
[AWS] AWS CodeBuild (0) | 2023.06.22 |
eks addon ADOT란? (0) | 2023.06.12 |
AWS 콘솔 접근 가능한 IP 제한 (0) | 2023.06.12 |
[AWS] AWS Glue (1) | 2023.06.09 |
댓글