본문으로 바로가기

Amazon SNS는 무엇인가?

category AWS/SNS 2023. 3. 5. 22:25
728x90

0. 개념

Amazon Simple Notification Service(Amazon SNS)는 게시자에서 구독자(생산자 및 소비자라고도 함)에게 메시지를 전달하는 관리형 서비스입니다. 게시자는 논리적 액세스 포인트이자 커뮤니케이션 채널인 토픽에 메시지를 전송하여 구독자와 비동기적으로 커뮤니케이션합니다. 클라이언트는 SNS 토픽을 구독하고 Amazon Kinesis Data Firehose, Amazon SQS, AWS Lambda, HTTP, Email, 모바일 푸시 알림, 모바일 문자 메시지(SMS) 등 지원되는 엔드포인트 유형을 사용하여 게시된 메시지를 수신할 수 있습니다.

 

Publisher ---MSG---> SNS(Topic) ---MSG---> Subscriber(Amazon Kinesis Data Firehose, Amazon SQS, AWS Lambda, HTTP, Email, 모바일 푸시 알림, 모바일 문자 메시지(SMS) 등)

1. 특징 및 기능

1. 애플리케이션 간 메시징
애플리케이션 간 메시징은 Amazon Kinesis Data Firehose 전송 스트림, Lambda 함수, Amazon SQS 대기열, HTTP/S 엔드포인트, AWS Event Fork 파이프라인과 같은 구독자를 지원합니다.

2. 애플리케이션 대 개인 알림
애플리케이션 대 개인 알림은 모바일 애플리케이션, 휴대폰 번호, 이메일 주소 등의 구독자에게 사용자 알림을 제공합니다.

3. 표준 및 FIFO 주제
FIFO topic: 엄격한 메시지 순서를 보장하고, 메시지 그룹을 정의하고, 메시지 중복을 방지하려면 FIFO 주제를 사용하세요.
Standard topic: 메시지 배달 순서 및 메시지 중복 가능성이 중요하지 않은 경우에는 표준 주제를 사용하세요.

4. 메시지 지속성
게시된 메시지는 지리적으로 분리된 여러 서버와 데이터 센터에 저장됩니다.
가입한 엔드포인트를 사용할 수 없는 경우 Amazon SNS는 배달 재시도 정책을 실행합니다.
배달 재시도 정책이 종료되기 전에 배달되지 않은 메시지를 보존하기 위해 사서함 대기열을 만들 수 있습니다.

5. 메시지 보관 및 분석
Kinesis Data Firehose 배달 스트림을 SNS 주제에 구독하면 Amazon S3(Amazon Simple Storage Service) 버킷, Amazon Redshift 테이블 등과 같은 추가 아카이빙 및 분석 엔드포인트에 알림을 전송할 수 있습니다.

6. 메시지 속성
메시지 속성을 사용하면 메시지에 대한 임의의 메타데이터를 제공할 수 있습니다.

 

7. 메시지 필터링
기본적으로 각 가입자는 해당 주제에 게시된 모든 메시지를 수신합니다. 메시지의 하위 집합을 받으려면 구독자가 주제 구독에 필터 정책을 할당해야 합니다. 또한 가입자는 페이로드(Payload) 기반 또는 속성(Attribute) 기반 필터링을 사용하도록 필터 정책 범위를 정의할 수도 있습니다. 필터 정책 범위의 기본값은 MessageAttributes입니다. 수신 메시지 속성이 필터 정책 속성과 일치하면 메시지가 가입한 엔드포인트로 전달됩니다. 그렇지 않으면 메시지가 필터링됩니다. 필터 정책 범위가 MessageBody인 경우 필터 정책 속성이 페이로드에 대해 일치합니다.

8. 메시지 보안
서버 측 암호화는 AWS KMS에서 제공하는 암호화 키를 사용하여 Amazon SNS 토픽에 저장된 메시지의 내용을 보호합니다.
Amazon SNS와 가상 프라이빗 클라우드(VPC) 간에 비공개 연결을 설정할 수도 있습니다.

2. 연관 서비스

1. Amazon SQS

Amazon SQS는 분산된 소프트웨어 시스템과 구성 요소를 통합하고 분리할 수 있는 안전하고 내구성이 뛰어나며 가용성이 높은 호스팅 대기열(Queue)을 제공합니다. Amazon SQS는 다음과 같은 방식으로 Amazon SNS와 관련이 있습니다:

  • Amazon SNS는 배달할 수 없는 메시지에 대해 Amazon SQS로 구동되는 사서함 대기열(DLQ: Dead-letter Queue)을 제공합니다.
  • SNS 주제(Topic)에 Amazon SQS 대기열을 구독할 수 있습니다.
  • Amazon SQS FIFO 대기열을 Amazon SNS FIFO 주제(Topic)에 가입하여 중복 없이 메시지를 순서대로 수신할 수 있습니다.

2. AWS Lambda

AWS Lambda를 사용하면 새로운 정보에 신속하게 응답하는 애플리케이션을 구축할 수 있습니다. 고가용성 컴퓨팅 인프라에서 람다 함수에서 애플리케이션 코드를 실행하세요.

 

3. AWS IAM
AWS IAM(신원 및 액세스 관리)을 사용하면 사용자의 AWS 리소스에 대한 액세스를 안전하게 제어할 수 있습니다. IAM을 사용하여 Amazon SNS 토픽을 사용할 수 있는 사용자(인증), 사용할 수 있는 토픽, 사용 방법(권한 부여)을 제어할 수 있습니다.

 

4. AWS CloudFormation
AWS CloudFormation을 사용하면 AWS 리소스를 모델링하고 설정할 수 있습니다. Amazon SNS 토픽 및 구독을 포함하여 원하는 AWS 리소스를 설명하는 템플릿을 만듭니다. AWS CloudFormation은 이러한 리소스의 프로비저닝 및 구성을 자동으로 처리합니다.

3. AWS CLI

1. Create a topic

$ aws sns create-topic --name my-topic
{
    "TopicArn": "arn:aws:sns:us-west-2:123456789012:my-topic"
}

2. Subscribe to a topic

$ aws sns subscribe --topic-arn arn:aws:sns:us-west-2:123456789012:my-topic --protocol email --notification-endpoint saanvi@example.com
{
    "SubscriptionArn": "pending confirmation"
}

3. Publish to a topic

$ aws sns publish --topic-arn arn:aws:sns:us-west-2:123456789012:my-topic --message "Hello World!"
{
    "MessageId": "4e41661d-5eec-5ddf-8dab-2c867EXAMPLE"
}

4. Unsubscribe from a topic

$ aws sns unsubscribe --subscription-arn arn:aws:sns:us-west-2:123456789012:my-topic:1328f057-de93-4c15-512e-8bb22EXAMPLE

5. Delete a topic

$ aws sns delete-topic --topic-arn arn:aws:sns:us-west-2:123456789012:my-topic

6. List subscriptions

$ aws sns list-subscriptions

7. List topics

$ aws sns list-topics

4. 일반적인 사용 시나리오

1. 애플리케이션 통합


팬아웃 시나리오는 SNS 토픽에 게시된 메시지가 복제되어 여러 엔드포인트(예: Kinesis Data Firehose 전송 스트림, Amazon SQS 대기열, HTTP(S) 엔드포인트, Lambda 함수 등)로 푸시되는 경우입니다. 이를 통해 병렬 비동기 처리가 가능합니다.
예를 들어, 제품 주문이 접수될 때마다 SNS 주제에 메시지를 게시하는 애플리케이션을 개발할 수 있습니다. 그러면 SNS 토픽에 가입된 SQS 대기열이 새 주문에 대해 동일한 알림을 받습니다. SQS 대기열 중 하나에 연결된 Amazon EC2(Amazon Elastic Compute Cloud) 서버 인스턴스가 주문 처리 또는 주문 이행을 처리할 수 있습니다. 또한 다른 Amazon EC2 서버 인스턴스를 데이터 웨어하우스에 연결하여 접수된 모든 주문을 분석할 수 있습니다.

팬아웃을 사용하여 프로덕션 환경으로 전송된 데이터를 테스트 환경으로 복제할 수도 있습니다. 이전 예제를 확장하여 새로운 수신 주문에 대해 동일한 SNS 주제에 다른 SQS 대기열을 구독할 수 있습니다. 그런 다음 이 새 SQS 대기열을 테스트 환경에 연결하면 프로덕션 환경에서 받은 데이터를 사용하여 애플리케이션을 계속 개선하고 테스트할 수 있습니다.

 

2. 애플리케이션 알림
애플리케이션 및 시스템 알림은 사전 정의된 임계값에 의해 트리거되는 알림입니다. Amazon SNS는 이러한 알림을 SMS와 이메일을 통해 지정된 사용자에게 보낼 수 있습니다. 예를 들어, Amazon EC2 자동 확장 그룹에 대한 특정 변경 사항, Amazon S3 버킷에 업로드된 새 파일 또는 Amazon CloudWatch의 메트릭 임계값 위반과 같은 이벤트가 발생하면 즉시 알림을 받을 수 있습니다.

 

3. 사용자 알림

Amazon SNS는 개인 또는 그룹에게 푸시 이메일 메시지와 문자 메시지(SMS 메시지)를 보낼 수 있습니다. 예를 들어 이커머스 주문 확인을 사용자 알림으로 보낼 수 있습니다.

 

4. 모바일 푸시 알림
모바일 푸시 알림을 사용하면 모바일 앱으로 직접 메시지를 보낼 수 있습니다. 예를 들어 Amazon SNS를 사용하여 앱에 업데이트 알림을 보낼 수 있습니다. 알림 메시지에는 업데이트를 다운로드하고 설치할 수 있는 링크가 포함될 수 있습니다.

728x90

'AWS > SNS' 카테고리의 다른 글

Amazon SNS 메시지 발행  (0) 2023.03.20
SNS FIFO Topic: 메시지 순서 지정 및 중복 제거  (0) 2023.03.13
Amazon SNS 이벤트 소스 및 대상  (0) 2023.03.06