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 모두 비동기 메시징 처리를 할 수있는데 각각 다른 메커니즘으로 수행된다.