DevOps/AWS
SQS
gilbert9172
2025. 2. 17. 23:00
❐ Description
페이스콕 프로젝트를 진행하면서 도입하게 된 SQS에 대해서 자세히 알아보자.
더 나아가 Kafka와 어떠 차이점이 있는지도 알아보자!
❐ SQS란?
SQS(Simple Queue Service)는 AWS에서 제공하는 완전 관리형 메시지 큐 서비스로,
애플리케이션 간의 비동기 메시지 전달을 안전하게 처리하는 서비스다.
✔︎ 메시지를 안전하게 보관하고 전달
✔︎ 비동기 방식으로 분산 시스템 간의 결합도를 줄여줌
✔︎ 메시지 브로커(Kafka, RabbitMQ) 없이 운영 가능
✔︎ 서버리스 환경(Lambda, ECS, Fargate)과 쉽게 연동 가능
❐ 특징
1️⃣ 완전 관리형 서비스
- AWS가 인프라를 관리해주므로, 직접 메시지 브로커를 운영할 필요 없음
- 자동 확장 지원 (대량의 메시지도 문제없이 처리 가능)
2️⃣ 비동기 메시징
- 프로듀서(Producer)와 컨슈머(Consumer)가 직접 통신하지 않고, 메시지를 큐를 통해 전달
- 애플리케이션 간의 결합도를 줄여 확장성과 유연성을 높임
3️⃣ At-Least-Once Delivery (최소 1회 전달 보장)
- 메시지가 유실되지 않도록 최소 1회 이상 전달됨 (중복 가능성 있음)
- FIFO 큐를 사용하면 중복 방지 및 순서 보장 가능
4️⃣ Dead Letter Queue(DLQ) 지원
- 일정 횟수 이상 처리되지 않은 메시지를 DLQ로 이동하여 분석 및 재처리 가능
5️⃣ 서버리스 및 AWS 서비스 연동 최적화
- AWS Lambda, ECS, Fargate, Step Functions 등과 쉽게 연동 가능
- SNS와 결합하면 Pub/Sub 패턴 구현 가능
❐ SQS의 두 가지 유형
❐ SQS와 메시지 브로커(Kafka, RabbitMQ)의 차이
1. SQS는 Pub/Sub이 아니다.
우선 위에서도 언급했지만, SQS는 Pub/Sub 구조가 아니다. 그렇다면 왜 Pub/Sub 구조가 아닌지 알아보자.
1️⃣ SQS는 Polling 방식으로 동작
- Subscriber(Consumer)가 SQS에서 직접 메시지를 가져가는 Pull 방식
- Kafka처럼 브로커가 Consumer에게 자동으로 메시지를 Push하는 방식이 아님
2️⃣ SQS는 기본적으로 "Point-to-Point" 모델
- 하나의 Producer가 메시지를 보내면, 한 Consumer만 가져가서 처리
- 동일한 메시지를 여러 Consumer가 동시에 받을 수 없음
3️⃣ Pub/Sub 패턴의 핵심 요소인 "한 개의 메시지를 여러 Consumer가 동시에 구독"하는 기능이 없음
- 같은 메시지를 여러 Consumer가 받을 수 없고, 한 번 소비되면 메시지는 사라짐
즉, SQS는 Polling 방식의 Point-to-Point(1:1) 메시지 큐이며, Pub/Sub은 아니다.
2. SQS와 메시지 브로커(Kafka, RabbitMQ)의 차이
SQS, Kafka, RabbitMQ 모두 비동기 메시징 처리를 할 수있는데 각각 다른 메커니즘으로 수행된다.