Skip to content
GwiyeomGo Tech Blog
About GwiyeomGo

Amazon Simple Notification Service(Amazon SNS)

AWS4 min read

Amazon Simple Notification Service(Amazon SNS)

  • 주제 (topic) 생성
  • 해당하는 모든 구독자에게 메시지를 푸시

구현안내서

배경

카카오 알림톡 장애로 기부를 못하는 상황이 발생했습니다 당시 시니어 개발자는 장애가 발생되면 성장의 기회라고 말해주셨고 이 상황을 해결하기 위해서 비동기 프로그래밍 회의를 진행했었습니다

비동기 프로그래밍

비동기 프로그래밍은 여러 작업이 동시에 진행될 수 있도록 하여 각 작업이 다른 작업의 완료를 기다리지 않고 독립적으로 실행될 수 있게 하는 방식

SNS,SQS,KAFKA 중 어떤 기술을 쓸지 고민했었습니다

특징KafkaSNS (Simple Notification Service)SQS (Simple Queue Service)
유형분산 스트리밍 플랫폼Pub/Sub 알림 서비스분산 메시지 큐
주요 용도실시간 데이터 스트리밍, 이벤트 소싱알림 시스템, 이벤트 기반 처리비동기 메시지 큐, 작업 대기열 관리
메시지 저장메시지 영구 저장 (디스크에 저장)메시지 영구 저장되지 않음메시지 저장 (최대 14일)
확장성매우 높은 확장성, 분산 처리높은 확장성, 자동 스케일링높은 확장성, 자동 스케일링
메시지 순서메시지 순서 보장 가능순서 보장 없음순서 보장 가능 (FIFO 큐 사용 시)
지속성강력한 지속성 (디스크에 저장)없음 (메시지 전송 후 사라짐)메시지 지속성 있음
사용 용도로그 수집, 스트리밍 데이터 처리, 이벤트 처리실시간 알림, SMS/이메일/모바일 푸시 알림분산 시스템에서 작업 큐 처리
속도매우 빠르며 높은 처리량 지원빠른 알림 전송, 지연 시간 짧음상대적으로 느림 (동기/비동기 큐 처리)
구독 옵션여러 소비자가 독립적으로 구독다양한 프로토콜을 통한 구독 (HTTP, Lambda, SQS 등)SQS나 Lambda로 메시지 전달 가능
복잡성상대적으로 설정과 운영이 복잡간단한 설정과 사용상대적으로 간단한 설정과 사용
메시지 크기큰 메시지 처리 가능 (메시지 크기 제한 없음)최대 256KB최대 256KB

작은 규모 서비스이고 결국 메시지 지속성 있고 상대적으로 간단한 설정과 사용방법으로 SQS 를 선택했었다 만약 SNS를 통해서 했더라면 어떨까?

SNS+SQS 를 사용했다면!

  1. 서비스에서 알림톡 발송을 위해 message+topic SNS 토픽에 메시지를 Publish
  2. SNS는 해당 메시지를 연결된 SQS 큐(kakao-message-queue)에 Push하여 전달
  3. 메시징 시스템 서비스는 SQS 큐를 Polling하여 메시지를 수신하고, 인포뱅크 API를 호출해 알림톡을 발송합니다
[발신 서비스]
↓ (Publish)
[SNS Topic: kakao-message-topic]
↓ (Push)
[SQS Queue: kakao-message-queue]
↓ (Receive)
[카카오 메시지 시스템 서비스]
↓ (HTTP)
[인포뱅크 발송 API]

SNS 만 사용했던 경험

  1. 여러 서비스가 log-topic 으로 메시지를 Publish
  2. Logging Service는 이 log-topic을 Subscribe구독
  3. 수신한 메시지를 DB에 저장
[Service A] [Service B]
↓ (Publish) ↓ (Publish)
[ log-topic (Pub/Sub Topic) ]
[ Logging Service ] (Subscriber)
[ Database ]
© 2025 by GwiyeomGo Tech Blog. All rights reserved.