728x90
SQS 란?
Amazon Simple Queue Service (Amazon SQS) 는 내구력 있고 가용성이 뛰어난 보안 호스팅 대기열을 제공하며 이를 통해 분산 소프트웨어 시스템과 구성 요소를 통합 및 분리할 수 있습니다.
장점
- 보안
- Amazon SQS 대기열에서 메시지를 보내고 받을 수 있는 사람을 제어합니다.
- 기본 Amazon SQS 관리형 서버 측 암호화(SSE)를 사용하거나 AWS Key Management Service(AWS KMS)에서 관리되는 사용자 지정 SSE 키를 사용하여 대기열의 메시지 콘텐츠를 보호하여 민감한 데이터를 전송하도록 선택할 수 있습니다.
- 내구성
- 메시지를 안전하게 보관하기 위해 Amazon SQS 메시지를 여러 서버에 저장합니다.
- 표준 대기열은 at-least-once 메시지 전달을 지원하고 FIFO 대기열은 단 한 번의 메시지 처리 및 고처리량 모드를 지원합니다.
- 가용성
- Amazon SQS 중복 인프라를 사용하여 메시지에 대한 고도의 동시 액세스와 메시지 생성 및 사용을 위한 고가용성을 제공합니다.
- 확장성
- Amazon SQS 각 버퍼링된 요청을 독립적으로 처리하여 프로비저닝 지침 없이 로드 증가 또는 스파이크를 처리하도록 투명하게 확장할 수 있습니다.
- 안정성
- Amazon SQS 처리 중에 메시지를 잠그므로 여러 생산자가 동시에 메시지를 보내고 여러 소비자가 메시지를 받을 수 있습니다.
- 사용자 지정
- 대기열이 똑같을 필요는 없습니다.
- 예를 들어 대기열에 기본 지연 시간을 설정할 수 있습니다.
- 256KB보다 큰 메시지의 콘텐츠를 Amazon S3 객체에 대한 포인터를 포함하는 Amazon Simple Storage Service (Amazon S3) 또는 Amazon DynamoDB를 사용하여 저장하거나 큰 메시지를 작은 메시지로 분할할 수 있습니다.
분산 대기열
- 분산 메시징 시스템에는 세 가지 주요 부분, 즉 분산 시스템의 구성 요소, 대기열 (Amazon SQS 서버에 분산됨), 대기열의 메시지가 있습니다.
수명 주기
- 생산자 (구성 요소 1) 는 메시지 A을 대기열로 전송하고 이 메시지는 Amazon SQS 서버에서 중복 분산됩니다.
- 소비자(구성 요소 2)는 메시지를 처리할 준비가 되면 대기열에서 메시지를 소비하고 메시지 A가 반환됩니다. 메시지 A는 처리되는 동안 대기열에 그대로 남아 있고 제한 시간 초과가 지속되는 동안 후속 수신 요청으로 반환되지 않습니다.
- 소비자(구성 요소 2)는 대기열에서 메시지 A를 삭제하여 제한 시간 초과가 만료되면 이 메시지가 수신되어 다시 처리되지 못하도록 합니다.
수명 주기 참고
보통 사용할려는 목적을 보면 작업의 처리 순서를 정해서 효율을 늘리는 목적으로 사용을 한다.
예를 들면 선착순 쿠폰 지급과 같은 순서가 중요한 작업도 그 중에 하나이다.
Redis와 같은 주요 기능만 뽑아서 만든 서비스 같다.
하지만 SQS는 2가지 설정이 존재 하다.
- 표준
- 사용자가 메시지를 받더라도 사용후 삭제 하지 않으면 메시지는 다시 재 전송 될수 있다.
- 표준 대기열에서 제한 시간 초과는 메시지가 두 번 이상 수신되지 않는다고 장담할 수 없습니다.
- FIFO
- 사용자가 메시지를 받게 되면 대기열에서 메시지는 자동으로 삭제 된다.
- 여러번 테스트 하면서 표준 내용과 동작이 달라서 찾아 보게 되었습니다.
따라서
순서가 중요한 서비스 에서는 "표준"을 사용하면서 수동으로 삭제를 하거나 "FIFO"를 사용하면 된다.
표준은 이외에 서비스 실패후 재시도 등 다른 서비스에서 사용해도 좋을 것 같다
참고
728x90
'AWS' 카테고리의 다른 글
[SES] AWS Simple Email Service & Spring Boot(Kotlin) (0) | 2024.10.09 |
---|---|
로드밸런스 알고리즘 종류 (0) | 2023.07.05 |
Simple Queue Service_Spring Boot 2.x (0) | 2023.04.16 |
Spring Boot, Ubuntu, Nginx 배포 방법 (0) | 2023.04.16 |