Simple Queue Service
해야 할 일을 나중에 처리하거나 다른 시스템이 처리할 수 있도록 하기 위한 비동기 메시징 서비스
분산 메시지 큐 서비스
메시지는 처리해야 할 업무에 대한 todo 리스트와 같다. 이때 SQS는 메시지 저장소라고 할 수 있다.
용도
SQS는 공통 생산자-소비자 문제나 생산자-소비자 간 연결에서 발생하는 문제를 해결하는 큰 규모의 호스팅 메시지 큐를 제공하기 위해 고안되었다. 일반적으로 각 애플리케이션이 가지는 coupling을 끊어주는 역할을 한다.
Lambda와 EC2간 강한 결합도
Lambda와 EC2간 약한 결합도
특징 / 이점
특징
- 메시지 보관 기간 : 1분 ~ 14일
- 메시지 크기 : 1KB ~ 256KB
- AWS Console, CLI, SDK 등을 활용하여 서비스할 수 있다.
- Region 단위로 이용할 수 있으며 다른 Region 간 공유는 불가능하다.
이점
- 관리 오버헤드 제거 : SQS는 가용성과 확장성을 보장하는 완전 관리형 서비스다.
- 메시지 전달 안정성 : 메시지 손실이 없으며 메시지의 복제본을 저장한다.
- 탄력적/비용 효율적 : 동적 확장을 지원하여 용량을 계획하거나 사전 프로비저닝을 고민하지 않아도 된다.
처리 과정
- Producer는 메시지를 생성하여 Queue로 전송한다.
- Queue는 일정 시간 메시지를 가지고 있는다.
- Consumer는 주기적으로 Queue를 폴링(Polling)하면서 신규 메시지를 가져가 처리한다.
- Consumer는 처리를 마치면 Queue로 처리한 메시지에 대한 Ack을 전송한다.
- 메시지 아이디에 해당하는 Ack를 받으면 Queue에서 메시지를 제거한다.
대기열
표준 대기열 (Standard Queue)
- 무제한에 가까운 메시지 전송 지원
- At-Least-Once-Delivery : 최소 1회의 전달을 보장한다. 단, 중복 수신의 가능성이 존재한다.
- Best-Effort-Ordering : 최대한 메시지가 도착한 순서대로 전송한다. 하지만 신뢰할 수는 없다. 즉, 메시지 순서를 보장할 수 없다. 이는 Throughput을 극대화하기 위함이다.
- 반드시 1번만 읽는다는 것을 보장하지 않는다.
순차 대기열 (FIFO Queue)
- 메시지 순서 보장
- Exactly-Once Processing : 1번 전송, 1번 수신 보장. 중복 수신 방지
- Throughput 제한 : 초당 300 TPS
- Standard 대기열보다 높은 비용
참고 문서
https://opentutorials.org/course/608/4909
https://ko.wikipedia.org/wiki/아마존_심플_큐_서비스
https://devocean.sk.com/blog/techBoardDetail.do?ID=163290
https://github.com/schooldevops/AWS_Tutorials_by_kido/tree/main/Queueing
https://javabom.tistory.com/60
https://velog.io/@ragnarok_code/SES-SNS-SQS의-차이