본문 바로가기

Cloud/AWS

[AWS Developer Associate] SNS 정리

AWS SNS

Amazon Simple Notification Service(Amazon SNS)는 애플리케이션 간(A2A) 및 애플리케이션과 사용자 간(A2P) 통신 모두를 위한 완전관리형 메시징 서비스입니다.

 

Pub/Sub (게시/구독)을 통해 메시지를 SNS 주제로 전송할 수 있다.

주제에 대한 구독자들은 SNS 주제에서 해당 메시지를 수신하고 보관할 수 있다.

 

'이벤트 생산사'는 한 SNS 주제에만 메시지를 보낸다.

 

[SNS에서 구독자에게 게시할 수 있는 것]

- 이메일

-SMS, 모바일 알림

- HTTP/HTTPS endpoint

- SQS

- Lambda

- Firehose

- S3, Redshift

 

SNS는 다양한 AWS 서비스에서 데이터를 수신하기도 한다.

[SNS 보안]

- SQS와 동일하다.

- 전송중 암호화, KMS 키를 사용한 저장 데이터 암호화

- 클라이언트 측 암호화(암호화 및 복호화는 클라이언트 몫)

- 액세스 제어는 IAM 정책 중심

- SNS 액세스 정책 정의 가능

- SNS 주제에 교차 계정 액세스 권한을 가지거나 S3 이벤트와 같은 서비스가 SNS 주제에 작성할 수 있도록 허용하려는 경우 유용.

 

SNS 를 활용한 다양한 패턴들

 

[SNS + SQS : Fan Out]

여러 SQS 대기열에 메시지를 전송하려 할 때 모든 SQS 대기열에 메시지를 개별적으로 보내면

앱이 중도에 종료되거나, 전송이 실패할 경우 문제가 발생할 수 있다.

 

이 때 사용하는 것이 Fan Out 패턴이며 SNS 주제에 한 번만 푸시해도 원하는 만큼의 SNS 주제의 여러 SQS 대기열을 구독할 수 있다.

팬아웃은 완전히 분리된 모델이므로 데이터 손실이 발생하지 않는다.

팬아웃 패턴으로 더 많은 SQS 대기열을 SNS 주제에 구독시킬 수 있다.

이를 위해서는 SQS 대기열 접근 정책을 통해 SNS 주제를 SQS 대기열에 메시지를 전송하도록 허용해야 한다.

 

[SNS FIFO + SQS FIFO : Fan Out]

- SNS에는 FIFO기능이 있어 주제 내의 메시지에 순서를 지정하여 메시지를 전송한다.

- 이 때 구독은 SQS FIFO만 할 수 있고, 순서대로 메시지를 수신한다.

- SNS FIFO 에서는 메시지 그룹 ID에 따라 메시지를 정렬하거나 중복된 ID나 콘텐츠에 대해 중복제거를 할 수 있다.

- 처리량은 SNS FIFO 대기열과 같이 제한된 처리량을 갖는다.

- SQS FIFO에 팬아웃할 때는 팬아웃 패턴, 순서, 중복제거가 필요하다.

 

[SNS - Message Filtering]

SNS주제 구독자들에게 전송할 메시지를 필터링하는 JSON 정책