Amazon SQS는 완전 관리형 메시지 큐 서비스이다. 마이크로서비스, 분산 시스템, 서버리스 환경에서 비동기적으로 메시지를 안전하게 주고받기 위한 서비스이다. 시스템 간의 decoupling(결합도 낮추기)과 메시지 유실 방지에 효과적이다.
✔️ 비동기 메시징: 시스템 간 실시간 처리 대신, 안정적인 지연 처리 가능

📦 내구성 보장: 메시지를 여러 서버에 복제 저장 → 유실 없이 처리 가능
🔁 확장성 자동 지원: 대량 요청에도 자동으로 확장
🔒 보안: AWS KMS와 통합하여 메시지 암호화 지원
💬 서버 간 결합도 감소: 하나의 컴포넌트가 다운되어도 전체 서비스 영향 최소화
Producer → SQS Queue → Consumer
| 구성 요소 | 설명 |
|---|---|
| Producer | 메시지를 보내는 쪽 (예: 주문 시스템) |
| Consumer | 메시지를 처리하는 쪽 (예: 포장 시스템) |
| Queue | 메시지를 안전하게 저장하고 중계하는 중간 박스 |
폴링은 Consumer가 새로운 메시지를 가져오기 위해 Queue를 주기적으로 확인하는 방식이다.
| 구분 | 표준 대기열 | FIFO 대기열 |
|---|---|---|
| 전송 횟수 | 1회 이상 (중복 가능) | 1회만 전송 |
| 순서 보장 | Best-Effort Ordering | First-In-First-Out 완전 보장 |
| 처리량 | 거의 무제한 | 초당 300건 or 배치 기준 3,000건 |

MaximumReceiveCount 이상 수신 실패 시 DLQ로 이동⏱ 예시: "주문 접수 메시지 → 10분 후 배송 메시지 전송"
| 방식 | 설명 | 장점 | 단점 |
|---|---|---|---|
| 동기 처리 | 실시간 요청/응답 | 빠름, 간단 | 결합도 높음, 장애 전파 큼 |
| 메시지 큐 | 중간 큐에 메시지 저장 | 결합도 낮음, 유연한 확장 | 지연 발생 가능 |
SQS는 기본적으로 우선순위를 지원하지 않음. 직접 구현해야 함:
| 항목 | 제한 |
|---|---|
| 메시지 크기 | 최대 256KB |
| 보존 기간 | 1분 ~ 14일 설정 가능 (기본 4일) |
| 메시지 중복 | Standard 큐는 중복 가능성 있음 |
| 지역성 | 큐는 리전 단위, 리전 간 공유 불가 |