AWS

Amazon SNS: Pub/Sub 패턴으로 서비스 분리

heesoohi 2025. 4. 14. 11:51

# Amazon SNS

 

Simple Notification Service, SNS도 비동기 방식의 통신을 지원하며 애플리케이션을 분리하도록 돕는 서비스 중 하나이다. 

 

이벤트 게시자는 하나의 SNS topic으로 메시지를 보내고, SNS topic은 알림을 전달받을 구독자를 얼마든지 가질 수 있다. 주제를 구독하는 각각의 구독자들은 모든 메시지를 받을 수 있다. SQS에서는 컨슈머들이 대기열의 메시지를 공유하여 폴링해왔던 방식이라면, SNS에서는 Publisher가 메시지를 Subscribers에게 직접 보낸다고 이해할 수 있다. 

 

SNS가 보내는 알림은 SQS, 람다, Kinesis, 이메일, 모바일 알림, HTTP(S) 엔드포인트 등등으로 전해질 수 있다. 

 

 

 

 

하나의 메시지를 다수의 수신자에게 보내고 싶을 때, 단순한 방법으로 서비스들을 직접 통합하여 메시지를 라우팅하는 것이 가능하다.

 

예를 들어, 아래 이미지 처럼 구매 서비스가 이메일 알림, 사기 탐지 서비스, 배송 서비스, SQS 로 직접 통신하는 것이다. 이 방식을 사용하기 위해서는 4개의 직접 통합을 해야 하기 때문에 복잡해질 수 있다. 

 

 

 

 

 

이런 상황에서 사용할 수 있는 서비스가 바로 SNS이다. SNS는 Pub/Sub 방식을 사용하여 서비스 간에 메시지를 전달한다. 

 

 

 

 

SNS topic이 있고, 구매 서비스(메시지를 만드는 서비스)는 topic으로 메시지를 전송한다. Topic은 메시지를 받아야 하는 서비스들에게 자동으로 메시지를 전달한다. 서비스들이 직접 통합되지 않고 SNS로 분리되어 마이크로 아키텍처를 구성할 수 있다.