SNS

은채의 성장통·2025년 2월 19일
0

AWS

목록 보기
65/79

AWS SNS와 SQS를 활용한 메시징 시스템 설계

1. 개요

AWS에서는 대규모 분산 시스템에서 메시지를 효율적으로 전달하기 위해 Amazon SNS (Simple Notification Service)Amazon SQS (Simple Queue Service)를 활용할 수 있다. SNS는 주제(Topic) 기반의 게시-구독(pub-sub) 모델을 제공하며, SQS는 개별 큐를 통해 메시지를 전달 및 저장하여 비동기 처리에 유용하다. 이를 활용하면 다수의 수신자에게 메시지를 전송하고, 다양한 시스템과 애플리케이션을 효율적으로 연결할 수 있다.

2. SNS와 SQS의 핵심 개념

✅ Amazon SNS (Simple Notification Service)

AWS SNS는 이벤트 생산자(producer)가 특정 주제(Topic)에 메시지를 게시하면, 해당 주제를 구독한 소비자(consumer)가 메시지를 수신하는 구조이다. 이를 통해 메시지를 다수의 대상에게 동시에 전송할 수 있다.

SNS의 주요 특징:

  • 팬아웃(Fan-out) 패턴: 하나의 메시지를 여러 개의 SQS 대기열, Lambda 함수, HTTP 엔드포인트, 이메일, 모바일 푸시 알림 등으로 동시에 전달 가능
  • 다양한 전송 방식 지원: HTTP/HTTPS, 이메일, SMS, 모바일 푸시 알림, AWS Lambda, Amazon SQS, Kinesis Data Firehose 연동 가능
  • 보안 기능: IAM 정책 기반 접근 제어, KMS 암호화, SNS 액세스 정책 등을 통해 메시지 보안 강화

✅ Amazon SQS (Simple Queue Service)

AWS SQS는 메시지를 저장하고 이를 소비자가 폴링하여 가져가는 비동기 메시지 대기열 시스템이다. SNS와 결합하면 메시지를 안정적으로 전달하고, 메시지 손실 없이 다양한 애플리케이션에서 활용할 수 있다.

SQS의 주요 특징:

  • 표준(Standard) 큐와 FIFO 큐 지원: 메시지 순서 보장 여부 및 중복 제거 필요 여부에 따라 선택 가능
  • 메시지 보존 기간 설정 가능: 최대 14일 동안 메시지 저장 가능
  • 메시지 필터링 지원: SNS와 연계하여 특정 조건을 만족하는 메시지만 전달 가능
  • 서버리스 아키텍처와의 결합: Lambda, EC2, ECS, Fargate 등의 서비스와 연계 가능

3. SNS와 SQS를 활용한 팬아웃 패턴

✅ 팬아웃(Fan-out) 패턴이란?

팬아웃 패턴은 하나의 메시지를 여러 소비자에게 동시에 전송하는 방식이다. SNS를 통해 메시지를 전송하면 여러 개의 SQS 대기열이 구독자로 등록될 수 있으며, 이를 통해 다양한 애플리케이션이 같은 메시지를 받아 개별적으로 처리할 수 있다.

✅ 팬아웃 패턴 활용 사례

예제: 전자상거래 시스템의 주문 처리

  1. 사용자가 주문을 생성하면, 주문 이벤트가 SNS 토픽에 게시됨
  2. SNS는 이 메시지를 구독 중인 여러 개의 SQS 대기열에 동시에 전송
  3. 각 SQS 대기열은 서로 다른 애플리케이션에서 활용 가능:
    • 주문 처리 시스템 (발주된 주문을 처리)
    • 재고 관리 시스템 (재고 업데이트)
    • 결제 시스템 (결제 상태 업데이트)

이 방식은 시스템 간 결합도를 낮추고 확장성을 높이는 효과를 제공한다.

4. SNS와 SQS를 활용한 메시지 필터링

✅ 메시지 필터링이란?

기본적으로 SNS 토픽에 게시된 모든 메시지는 구독된 모든 소비자가 받아야 한다. 하지만 SNS 메시지 필터링 정책을 적용하면 특정 조건에 맞는 메시지만 수신할 수 있다.

✅ 메시지 필터링 활용 사례

예제: 주문 상태별 메시지 필터링

  1. SNS 토픽이 "주문 상태 변경(OrderStatusUpdate)" 메시지를 게시
  2. 여러 개의 SQS 대기열이 SNS 토픽을 구독 중
  3. SQS 필터링 정책을 적용하여 특정 상태의 주문만 수신
    • 발주 처리 시스템: {"status": "발주됨"} 조건의 메시지만 수신
    • 주문 취소 시스템: {"status": "취소됨"} 조건의 메시지만 수신

이를 통해 불필요한 메시지 소비를 방지하고, 각 서비스가 필요한 데이터만 효율적으로 처리할 수 있다.

5. SNS FIFO 토픽을 활용한 순서 보장 메시징

✅ SNS FIFO란?

일반적인 SNS 토픽은 메시지 순서를 보장하지 않지만, SNS FIFO(First-In-First-Out) 토픽을 사용하면 메시지 순서를 유지할 수 있다.

SNS FIFO의 특징:

  • 메시지 순서 보장: 동일한 메시지 그룹 내에서 순서가 유지됨
  • 중복 방지: 메시지 중복 전송 방지 기능 제공
  • 제한된 처리량: 표준 토픽보다 낮은 TPS(초당 처리량)를 가짐

✅ SNS FIFO 활용 사례

예제: 금융 거래 시스템에서 순서 보장이 필요한 경우

  • 결제 시스템에서 고객의 이체 요청을 FIFO SNS 토픽을 통해 전달
  • 메시지가 FIFO SQS로 전달되어 순서대로 처리됨
  • 동일한 계좌에서 발생한 거래가 순차적으로 처리되어 데이터 정합성 유지

6. 보안 고려 사항

SNS와 SQS를 활용할 때 보안도 중요한 요소이다. AWS는 이를 위해 다양한 보안 기능을 제공한다.

✅ 보안 강화 방안

  • IAM 정책을 활용한 접근 제어: 특정 사용자/서비스만 SNS/SQS에 접근하도록 제한
  • SNS 액세스 정책 적용: 특정 IP 범위나 VPC에서만 접근 허용
  • KMS를 활용한 메시지 암호화: 메시지를 저장 및 전송할 때 암호화 적용
  • VPC 엔드포인트 사용: 인터넷을 거치지 않고 안전하게 내부 서비스 간 통신 가능

7. 결론

AWS SNS와 SQS를 활용하면 확장성과 유연성이 뛰어난 메시징 시스템을 구축할 수 있다. SNS의 팬아웃 패턴을 활용하면 하나의 메시지를 다수의 소비자에게 동시에 전달할 수 있으며, SQS와의 연계를 통해 비동기 처리 및 장애 대응 능력을 높일 수 있다. 또한, 메시지 필터링SNS FIFO를 활용하면 보다 정교한 메시징 시스템을 설계할 수 있다.

🚀 SNS & SQS를 활용한 메시징 아키텍처 설계 팁

  1. 팬아웃 패턴을 활용하여 확장 가능한 시스템 구축
  2. 메시지 필터링을 통해 필요 없는 메시지 전송 방지
  3. FIFO 토픽/SQS를 활용하여 메시지 순서 유지
  4. IAM, KMS, 액세스 정책을 적용하여 보안 강화

AWS SNS와 SQS를 활용하여 효율적인 메시징 시스템을 구축하고, 확장성과 유지보수성을 높여보자!

profile
인생 별거 없어

0개의 댓글