AWS SNS

김명식·2024년 1월 23일
0

AWS

목록 보기
4/5
post-thumbnail

SNS ?

Simple Notification Service,
말 그대로 간단하게 AWS 서비스들에게 이벤트를 알려주는 서비스다.

SNS의 주요 특징은 다음과 같다.

  • 퍼블리시 / 서브스크라이브 모델
    • SNS는 pub/sub 메시징 모델을 사용한다.
      메시지는 중앙'토픽'으로 발행되며,
      해당 토픽을 구독하는 구독자(서비스)에게 자동으로 전달된다.
  • 다양한 구독자 유형 지원
    • SNS는 이메일, SMS, HTTP/HTTPS 엔드포인드,
      AWS Lambda 함수, AWS SQS 대기열 등 다양한 구독 유형을 지원한다.
  • 유연한 메시징 옵션
    • SNS는 다양한 메시징 옵션을 제공한다.
      예를 들어, 직접 메시지를 발송하거나
      AWS Lambda, DynamoDB, CloudWatch와 같은 다른 AWS 서비스와 통합하여
      메시지를 자동으로 발송할 수 있다.
  • 확정성 및 내구성
    • SNS는 자동 확장 기능을 제공하여 높은 처리량의 메시지를 관리할 수 있으며,
      AWS 클라우드 인프라를 통해 높은 내구성과 가용성을 제공한다.

글로만 봐서는 약간 이해하기 힘들 수 있는데,
AWS 공식 문서에 다음과 같은 그림이 있다.

동일한 이벤트에 대하여 3가지의 큐를 실행시켜야 할 때,
S3 업로드 이벤트를 모든 3가지 큐에 전송해야한다.

하지만 SNS를 사용하게 되면 S3업로드 이벤트를 SNS로 보내주게 만든 뒤,
SNS에서 어느 SQS로 이벤트를 보내야할지 지정(구독)하여 간단하게 이벤트를 보낼 수 있다.
이는 클라우드 아키텍처의 생산성 및 확장성을 굉장히 간단하게 만들어주는 효과를 볼 수 있었다.


+++
처음 SNS를 사용하면서 한가지 착각한 점이 있어서,
나 이외에도 똑같은 실수를 범할 사람들을 위해 한가지 더 적는다.
위에서 언급한 바와 같이, SNS에서 SQS를 구독하는건 서로 다른 SQS를 구독하는거다.

내가 착각한 점은,
아래 그림처럼

SNS에 하나의 SQS를 등록시키면 자동으로 병렬처리를 해주는 줄 알았다는 것.
SNS는 위처럼 동작하는게 아니라 아래처럼

서로 다른 SQS에 이벤트를 보내주는
Fan-Out 방식이라는 것을 알아야한다.


지금까지 소개한
Lambda, SQS, DLQ, S3, SNS의 서비스들을 하나의 클라우드 아키텍처로 보자면

위 처럼 위 처럼 나타낼 수 있다.

profile
BackEnd & AWS Developer

0개의 댓글