만족은 하되 안주하지는 말자

기록해야 기억한다

프로그래밍/backend&devOps

[AWS] Amazon SNS 란?

D36choi 2021. 3. 4. 14:53
728x90

Amazon SNS 란?

Amazon Simple Notification Service (Amazon SNS) is a managed service that provides message delivery from publishers to subscribers (also known as producers and consumers). Publishers communicate asynchronously with subscribers by sending messages to a topic, which is a logical access point and communication channel. Clients can subscribe to the SNS topic and receive published messages using a supported protocol, such as Amazon Kinesis Data Firehose, Amazon SQS, AWS Lambda, HTTP, email, mobile push notifications, and mobile text messages (SMS).


Amazon SNS 는 발행자에게서 구독자 (혹은 생산자에게서 소비자 라고도 함) 에게 메시지 전달 기능을 제공하는 관리 서비스다. 발행자는 비동기적으로 '토픽' 에 메시지를 전송하는 방법으로 구독자와 통신한다. 이 토픽은 논리적인 액세스 포인트와 소통 채널을 의미한다.

고객은 특정 SNS 토픽에 구독하고 발행된 메시지를 지원되는 프로토콜을 통해 받을 수 있다. 이 프로토콜은 Amazon Kinesis Data Firehose, Amazon SQS, AWS Lambda, HTTP, email, 모바일푸시알람, 모바일 메시지 (SMS) 등이 있다.

기능과 특징

  • A2A messaging (application to application)

    a2a 메시징서비스는 Kinesis, Lambda, SQS, HTTP/S endpoint 등을 지원함

  • A2P notifications

    모바일 애플리케이션, 휴대전화, 이메일 등으로 개인 구독자에게 사용자 알림을 줄 수 있다

  • 표준적인 FIFO 토픽

    strict한 메시지 순서를 보장하기 위해, 메시지 그룹을 정의하기 위해, 메시지 중복을 방지하기 위해 FIFO 토픽을 사용한다. 모든 지원되는 딜리버리 프로토콜은 표준 토픽에 구독가능하다.

  • 메시지 지속성

    Amazon SNS 는 여러 전략을 이용해 지속성을 보장한다. 대표적으로 DLQ(Dead Letter Queue)

  • 메시지 아카이브화와 분석

    Kinesis Data Firehose 로 SNS topic 을 구독해 추가적인 아카이빙과 분석을 제공한다

  • 메시지 속성 제공

    메시지 속성을 통해 메시지에 대한 임의의 메타데이터들을 제공받을 수 있다

  • 메시지 필터링

    토픽을 구독한 구독자는 해당토픽의 모든 메시지를 받게 되는데, 메시지의 하위집합만을 받고자 하려면 구독자는 해당 토픽의 구독의 필터 정책에 동의해야한다. 필터정책에 부합하는 속성을 가진 메시지만이 전달될 수 있게 된다. 그렇지 않은 경우의 메시지는 걸러진다.

  • 메시지 보안

    AWS KMS 에 의해 보호되는 암호화 키를 사용해 메시지의 내용을 보호한 상태로 SNS 토픽에 저장된다.

관련 서비스들

  • Amazon SQS
    • 전달되지 못한 메시지에 대해 dead letter queue 를 제공합니다
    • SNS 토픽에 SQS queue 를 구독할 수 있습니다
    • 메시지 중복을 방지하고 메시지 순서를 보장하기 위해 SQS FIFO queue 를 SNS FIFO topic 에 구독할 수 있습니다
  • AWS Lambda
    • 람다를 통해 새 정보에 신속히 반응하는 서버리스하게 어플리케이션을 빌드할 수 있습니다.
  • AWS IAM(Identity and Access Management)
  • AWS CloudFormation
    • 개발자가 원하는 AWS 자원들을 묘사한 템플릿을 만들 수 있습니다. SNS 토픽과 구독 정보를 포함할 수 있습니다. 이 자원들의 설정과 프로비저닝을 맡습니다.

SNS 사용 시나리오

어떤 식으로 이 서비스를 사용할 수 있는지 예를 들어보자.

개발자는 상품주문이 들어올 때마다 SNS 토픽에 메시지를 발행하는 어플리케이션을 개발했다.

시나리오 구조도

  • SNS topic 에 구독한 상태인 SQS 큐는 새 주문에 대한 동일한 알림을 수신한다.
  • SQS 큐 중 하나에 붙은 EC2 서버인스턴스는 해당 주문의 물류처리를 진행한다.
  • 그리고 다른 SQS 큐는 분석을 위한 data warehouse 등에 붙여 활용할 수 있다.
  • 또 다른 활용법으로, 테스트 환경에 남는 큐를 붙여 실무 환경의 데이터를 테스트 환경에 전달받아 실제 데이터로 테스트를 진행할 수도 있다.

그 외)

애플리케이션 경고 메시지 (미리 정한 임계치를 넘기게 될 경우 작동되는 알람 시스템)

유저 알람

모바일 푸시 알람

 

docs.aws.amazon.com/sns/latest/dg/welcome.html

 

What is Amazon SNS? - Amazon Simple Notification Service

What is Amazon SNS? Amazon Simple Notification Service (Amazon SNS) is a managed service that provides message delivery from publishers to subscribers (also known as producers and consumers). Publishers communicate asynchronously with subscribers by sendin

docs.aws.amazon.com