본문 바로가기
CSP (Cloud Service Provider)/AWS

[AWS] SQS (Simple Queue Service)

by BTC_One 2023. 6. 14.

안녕하세요 1-tier 팀의 One입니다.

오늘은 AWS의 메시지 대기열 서비스인 SQS에 대해서 함께 알아봅시다.

SQS (Simple Queue Service)

SQS는 분산 된 메시징 대기열 서비스로, 소프트웨어 컴포넌트 간에 비동기 메시지를 전송하는 데 사용됩니다.

큐를 생성하고, 메시지를 보내고, 받는 기능을 제공합니다.

 

SQS는 SNS, Lambda, EC2, S3와 같은 다양한 AWS 서비스와 통합 될 수 있습니다.

분산된 시스템 아키텍처에서 유용하며, 서로 다른 시스템 간에 메세지를 안정적이고 확장 가능하게 전송할 수 있습니다.

 

더 자세한 설명은 아래의 Document에서 확인 할 수 있습니다.

https://aws.amazon.com/ko/sqs/features/

 

Amazon Simple Queue Service(SQS) | 분산 애플리케이션 및 마이크로 서비스를 위한 메시지 대기열 서비스

 

aws.amazon.com

 

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

댓글