핵심
SQS
메시지를 쌓아두고 처리 (Queue)
SNS
메시지를 동시에 뿌림 (Pub/Sub)
구조 차이
SQS
Queue 구조
Producer -> [ SQS Queue ] -> Consumer
Plain Text
복사
•
메시지가 큐에 쌓임
•
소비자가 꺼내서 처리 (Pull)
•
처리 안 하면 계속 남아 있음
핵심: 안정성 / 버퍼 역할
SNS
Pub/Sub 구조
Producer -> SNS -> 여러 Subscriber (Lambda, SQS, Email 등)
Plain Text
복사
•
메시지를 즉시 여러 곳에 전달
•
저장 안 함 (기본적으로)
•
Push 방식
핵심: 동시 전달 / 이벤트 전파
언제 사용하는지
SQS
•
비동기 처리
•
트래픽 폭증
•
시스템 분리
•
메시지 유실 방지
•
예시
◦
주문 처리
◦
이미지 처리 대기열
◦
Lambda 트리거
◦
메시지 급증 / 분리 필요
SNS
•
여러 서비스에 동시에 전달
•
이벤트 알림
•
팬아웃
•
예시
◦
이메일 + SMS + Lambda 동시에 호출
◦
주문 이벤트 알림
차이점
기준 | SQS | SNS |
메시지 저장 | O | X |
전달 방식 | Pull | Push |
소비자 수 | 1개 (기본) | 여러 개 |
목적 | 안정적 처리 | 이벤트 전파 |
문제 예시
•
여러 서비스가 메시지를 처리해야 함
◦
SQS → X (하나만 소비)
◦
SNS → O
•
메시지를 반드시 처리해야 함
◦
SNS → X (유실 가능)
◦
SQS → O
•
버퍼링 필요 / 트래핑 급증
◦
SNS → X
◦
SQS → O
고급 패턴
•
SNS + SQS 같이 사용하는 구조
Producer -> SNS -> SQS1 -> 서비스 1
-> SQS2 -> 서비스 2
-> SQS3 -> 서비스 3
Plain Text
복사
◦
SNS → 여러 서비스로 뿌림
◦
SQS → 각 서비스가 안정적으로 처리