AWS SNS, SQS

chanbro·2024년 5월 8일

infra

목록 보기
2/2
post-thumbnail

AWS SNS(Simple Notification Service)와 SQS(Simple Queue Service)는 AWS의 두 가지 중요한 서비스로,
메시징 및 애플리케이션 간 통신을 위해 설계되었다.

AWS SNS (Simple Notification Service)

개념

AWS SNS는 완전 관리형 퍼블리시/서브스크라이브 메시징 서비스로, 분산 시스템, 서버리스 애플리케이션 및 마이크로서비스 아키텍처에서 메시지 또는 알림을 효율적으로 전송할 수 있도록 한다. 이 서비스를 통해 사용자는 다양한 수신자에게 동시에 알림을 보낼 수 있으며, 이메일, SMS, HTTP 엔드포인트 등 다양한 프로토콜을 통해 메시지를 전송할 수 있다.

실제 사용 사례

예를 들어, 사용자가 모바일 앱에서 버튼을 클릭할 때마다 개발자에게 실시간으로 알림을 보내는 시스템을 구축할 수 있다. 이런 시스템은 신속한 대응을 요하는 운영 팀이나 고객 서비스 팀에서 유용하게 사용될 수 있다.

요약

SNS는 다양한 서브스크라이버(이메일, SMS, HTTP 엔드포인트)에게 메시지를 전송

AWS SQS (Simple Queue Service)

개념

AWS SQS는 분산 컴퓨팅 환경에서 메시지를 저장하고 전달하는 데 사용되는 완전 관리형 메시지 큐잉 서비스. SQS를 사용하면 개발자는 서버를 직접 관리하지 않고도 메시지를 보내고 받을 수 있다. 이 서비스는 컴포넌트 간의 결합을 줄이며, 각 컴포넌트가 독립적으로 작동할 수 있도록 한다.

실제 사용 사례

대규모 e커머스 플랫폼에서 사용자의 주문 데이터를 처리하는 예를 들 수 있다. 사용자가 주문을 하면, 주문 데이터는 SQS를 통해 다양한 처리 시스템(결제 처리, 주문 출고, 재고 관리 등)으로 안전하게 전송되어 각 시스템이 비동기적으로 주문을 처리할 수 있다.

대기열

보통 메시지의 순서가 상관 없는 경우 표준 대기열을, 메시지의 순서가 중요한 경우 FIFO 대기열을 사용
1. 표준 대기열
최대 처리량, 최선 노력 순서, 최소 1회 전달

  1. FIFO 대기열
    메시지가 전송된 정확한 순서대로 정확히 한 번 전달

SQS는 메시지가 큐에 저장되고 여러 서비스(예: 결제 처리, 주문 출고)에 의해 처리

SQS + SNS

AWS SNS와 SQS를 함께 사용하는 아키텍처는 복잡한 분산 시스템에서 메시지 처리 및 전달의 신뢰성을 높이는 데 효과적이다.
이러한 통합 사용은 일반적으로 확장성이 높고, 탄력적이며, 결함 허용이 가능한 애플리케이션을 구축할 때 요구된다.

  1. SNS to SQS 팬아웃 (Fan-out) 메커니즘
    목적: SNS의 한 토픽에 여러 SQS 큐를 구독시켜 동일한 메시지를 여러 서비스에 동시에 전달하는 구조. 이 구조는 각 서비스가 자신의 속도에 맞춰 독립적으로 메시지를 처리할 수 있도록한다.
    구성: SNS 토픽에는 다양한 종류의 구독자(이메일, SMS, HTTP 엔드포인트 및 SQS 큐)가 있을 수 있다. 특정 이벤트가 발생하면 SNS 토픽은 모든 구독된 SQS 큐에 메시지를 전달합니다.
  2. 비동기 처리
    목적: 시스템의 부하를 분산시키고, 처리 시간을 최적화하며, 메시지 전달의 신뢰성을 보장.
    구성: 각 SQS 큐는 다양한 백엔드 서비스(예: 주문 처리, 인벤토리 관리, 고객 통지 시스템)에 연결된다. 이 서비스들은 큐에서 메시지를 가져와 필요한 처리를 수행한 후 결과를 다시 시스템 내 다른 구성 요소로 전달할 수 있다.
  • 각 서비스(서버)에서 SNS를 통해 이벤트 발행
  • SQS 가 SNS 를 구독하고 있고 이벤트가 발행되었을때 SQS에 저장
  • 이벤트를 처리하는 서비스(서버)에서 SQS에 이벤트를 dequeue 해서 적절한 로직을 통해 이벤트 소화
profile
이유있는 코드를 작성하는 서버 개발자

0개의 댓글