SNS란
Pub/Sub 메시징 서비스로 하나의 메시지를 여러 수신자에게 동시에 전송하는 서비스
Publisher: 메시지를 주제로 게시
Subscriber: 많은 구독자들은 SNS 토픽에 따라 메시지를 수신하고 보관한다.
- SNS에서 이벤트 생산자는 한 SNS 토픽에만 메시지를 보낸다
- 수신자 또는 구독자는 해당 토픽와 관련된 메시지를 받는 역할이고 생성에 제한이 없다
- 하나의 SNS 토픽 구독자는 해당 토픽으로 전송된 모든 메시지를 받으며 메시지 필터링도 있다
SNS - Publish 하는 방법
1. SDK Topic Publish:
Topic을 만들고 여러개의 구독을 만든 뒤 토픽을 공개. 해당하는 모든 구독자들이 토픽 메시지를 받게됨
2. Direct Publish:
플랫폼 애플리케이션과 Endpoint를 만들고 플랫폼 Endpoint에 게시
SNS + SQS: Fan Out 패턴
SNS와 SQS를 연결함으로써 Fan Out이라는 패턴이 구현 가능하다. 그리고 이는 가장 대표적인 시나리오이다.
FanOut이란?
하나의 메시지를 여러 SQS 대기열로 보낸다면 많은 문제가 발생할 수 있기에 Fan Out Pattern을 사용해서 원하는 만큼의 SQS 대기열이 SNS Topic을 구독하도록 설정
장점:
a. 완전히 분리된 모델로 만들며 애플리케이션 문제로 인한 데이터 손실이 없다
2. SQS로 작업을 다시 시도할 수 있고 데이터 지속성, 지연성 처리도 수행 가능하다
3. 많은 SQS 대기열 추가 가능
4. SQS 엑세스 정책에서 SNS 주제가 SQS 큐에 메시지를 작성할 수 있도록 허용해야한다
5. 리전간 전달 또한 가능
SNS - FIFO Topic
Topic의 메시지 순서를 지정하는 FIFO 기능 존재하고 SQS FIFO와 비슷하게 그룹ID에 따라 순서를 매겨 전송
장점:
1. 중복 제거가 가능하다.
2. 그룹 ID에 따라 순서대로 전송 가능
SNS FIFO + SQS FIFO의 Fan Out 수행 가능
SNS - Messaging Filtering
SNS Topic을 구독하면서 Topic에 전송되는 메시지는 Json 정책으로 필터링 된다.
즉, Json 필터링으로 SNS를 구독한 사람들에게 필요에 맞는 메시지만 전송 가능하다.
SNS 대표 사용 사례
- 장애/이벤트 발생 시 실시간 알림 (예: CloudWatch Alarm → SNS → Slack/Email)
- 모바일 푸시 알림 (FCM, APNs 연동)
- 주문 완료 후 사용자 및 내부 시스템에 동시에 알림
- 마이크로서비스 간 브로드캐스트 통신
'AWS' 카테고리의 다른 글
AWS Monitoring: CloudWatch란 무엇인가 (0) | 2025.05.13 |
---|---|
AWS Container: ECS, Fargate 이해하기 (0) | 2025.05.03 |
AWS 통합&메시징: SQS란 무엇이고 언제 사용해야하는가 (0) | 2025.05.02 |
AWS Cloudfront와 CDN 이해하기 (0) | 2025.04.14 |
Classic Solution Architecture 비교하며 이해하기(AWS) (1) | 2025.04.09 |