SQS

2025. 2. 17. 23:00·DevOps/AWS

 

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

 

 

 

 

 


'DevOps > AWS' 카테고리의 다른 글

ELB (Elastic Load Balancing)  (0) 2024.11.21
VPC (Virtual Private Cloud)  (0) 2024.11.18
EC2 (Elastic Computer Cloud)  (0) 2024.11.17
README.MD  (0) 2024.09.11
'DevOps/AWS' 카테고리의 다른 글
  • ELB (Elastic Load Balancing)
  • VPC (Virtual Private Cloud)
  • EC2 (Elastic Computer Cloud)
  • README.MD
gilbert9172
gilbert9172
gilbert9172 님의 블로그 입니다.
  • gilbert9172
    バックエンド
    gilbert9172
  • 전체
    오늘
    어제
    • All Categories (166)
      • 우테코 7기 (21)
        • 1주차 (8)
        • 2주차 (5)
        • 3주차 (6)
      • Langauge (4)
        • Java (3)
        • Kotlin (1)
      • Back-End (13)
        • SpringBoot (1)
        • Trouble Shooting (0)
        • Setup & Configuration (1)
        • SQL (3)
        • Redis (8)
      • Architecture (6)
        • Multi Module (1)
        • DDD (5)
      • CS (30)
        • Data Structure (6)
        • Operating System (0)
        • Network (12)
        • Database (10)
        • Design Pattern (2)
      • Algorithm (78)
        • 내용 정리 (18)
        • 문제풀이 (60)
      • DevOps (6)
        • AWS (5)
        • Git (1)
      • Front-End (1)
        • Trouble Shooting (1)
      • Project (6)
        • 페이스콕 (6)
      • Book (0)
        • 마스터링 블록체인 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    부분단조성
    Back-Tracking
    greedy
    binarysearch
    오블완
    sliding-window
    Two-Pointer
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
gilbert9172
SQS
상단으로

티스토리툴바