개인의 기록
  • 소개
  • 프로젝트
  • 글
  • 링크

© 2026 newgirok

← 글 목록

SNS — Pub/Sub 메시징

2026년 3월 23일
AWSSNSPub/Sub메시징

AWS SNS(Simple Notification Service)는 발행-구독 모델을 기반으로 하는 완전 관리형 메시징 서비스입니다. 발행자(Publisher)가 하나의 토픽에 메시지를 보내면, 그 토픽을 구독하는 모든 엔드포인트에 메시지가 즉시 전달됩니다. 이메일, SMS, HTTP 웹훅, SQS 큐, Lambda 함수 등 다양한 대상에 동시에 메시지를 전송할 수 있습니다.

발행-구독(Pub/Sub, Publish-Subscribe): 발행자와 수신자가 직접 연결되지 않고 중간의 채널(토픽)을 통해 메시지를 교환하는 패턴.

Topic과 Subscription

Topic은 메시지의 논리적 채널입니다. 발행자는 토픽 ARN을 대상으로 메시지를 발행하며, 누가 구독하는지 알 필요가 없습니다.

Subscription은 특정 토픽에 연결된 수신 엔드포인트입니다. 하나의 토픽에 여러 개의 Subscription을 등록할 수 있습니다.

지원하는 Subscription 프로토콜은 다음과 같습니다.

프로토콜설명
SQSSQS 큐에 메시지 전달
LambdaLambda 함수 직접 호출
HTTP/HTTPS웹훅 엔드포인트에 POST
Email이메일로 발송
SMS문자 메시지로 발송
Mobile PushiOS/Android 푸시 알림

Fan-out 패턴

Fan-out은 하나의 메시지를 여러 수신자에게 동시에 전달하는 패턴입니다. SNS는 이 패턴의 핵심 도구입니다.

Publisher
    |
    v
[SNS Topic: order-created]
    |
    +--------+--------+--------+
    |        |        |        |
   SQS    Lambda   Email    SQS
  (결제)  (재고차감) (확인메일) (배송)

주문 생성 이벤트 하나가 결제, 재고 차감, 이메일 발송, 배송 시스템 등에 동시에 전달됩니다. 각 수신자는 독립적으로 처리하므로 시스템 간 결합도가 낮아집니다.

SNS vs SQS

SNS와 SQS는 목적이 다릅니다.

항목SNSSQS
모델Pub/Sub (Push)Queue (Pull)
메시지 보관없음 (즉시 전달 시도)최대 14일
수신자 수다수 동시단일 Consumer 그룹
전달 실패 처리재시도 후 소실 가능DLQ로 이동
주요 용도이벤트 브로드캐스트작업 큐, 부하 분산

SNS는 "여러 곳에 동시에 알린다"는 목적에, SQS는 "안정적으로 하나씩 처리한다"는 목적에 적합합니다.

SNS + SQS 조합 패턴

SNS의 즉시 전달 특성과 SQS의 안정적인 보관 특성을 결합하는 패턴이 실무에서 자주 사용됩니다.

[Publisher]
    |
[SNS Topic]
    |
    +--------------------+
    |                    |
[SQS Queue A]     [SQS Queue B]
  (서비스 A)        (서비스 B)

SNS가 메시지를 SQS에 전달한 뒤, 각 서비스는 자신의 SQS 큐에서 메시지를 꺼내어 처리합니다. 서비스가 일시적으로 중단되어도 메시지가 SQS에 보관되어 복구 후 처리할 수 있습니다. SNS만 사용하면 수신자가 오프라인일 때 메시지를 잃을 수 있으나, SQS를 조합하면 이 문제가 해결됩니다.

ARN(Amazon Resource Name): AWS에서 모든 리소스를 고유하게 식별하는 이름 형식. 예: arn:aws:sns:ap-northeast-2:123456789012:order-created

메시지 필터링 기능을 사용하면 Subscription별로 특정 속성의 메시지만 수신하도록 제한할 수 있어, 단일 토픽으로 다양한 이벤트 유형을 효율적으로 분기할 수 있습니다.

← 이전 글SQS — 비동기 메시지 큐
다음 글 →EventBridge — 이벤트 기반 시스템 연결