본문 바로가기
aws

aws sns vs sqs 정리

by 무대포 개발자 2021. 12. 8.
728x90
반응형

aws sns

  • Amazon Simple Notification Service
  • message 를 구독자에게 전송해주는 서비스입니다.
  • 게시자 --> message <-- 구독자 (producer / consumer) 방식입니다.
  • 게시자는 메시지를 SNS 에 올려놓으면 SNS 를 구독하고 있는 AWS SQS, Lambda, Kinesis, SMS, Push 등에서 연결해서 가져가는 것입니다.

예시

  • 실제 예시를 들면, SNS 에 메시지를 올려놓고 서비스가 확장될 때마다 SNS 에 SQS, Kinesis 등과 같은 엔드포인트 유형을 연결해서 가져가게 하는 것입니다.
  • 게시자 입장에서는 아무것도 안해도 되고, 게시자의 메시지를 사용하고 싶은 사용자는 SNS 에 연결만 하면 되니 확장성 측면에서 아주 좋습니다.

예시 2

  • 여러 서비스와 API 연동을 하고 있는 서비스 A가 있다고 가정을 해봅니다. 각 서비스는 물리적으로 분리되있어서 API 로 통신을 하는 것입니다.
  • A 서비스에서 B 서비스랑 연동을 한다는건 강한 결합이 있고 이는 영향을 받을 수 있습니다. (지연이나 장애 등)
  • 이런 강한 결합을 끊어내기 위해 A 서비스는 SNS 에 메시지를 올려놓고 A 서비스와 연동을 하는 모든 서비스들은 SNS 에 엔드포인트 유형을 연결해서 메시지를 가져가 처리하는 것입니다.
  • 이렇게 함으로써 모든 서비스 연동에 대한 강한 결합을 끊어냈고, 메시지가 처리되는 도중 장애가 발생해도 쉽게 복구할 수 있고 격리할 수 있습니다.

aws sqs

  • Simple Service Queue
  • 간단히 말해서 큐입니다.

aws sqs 특징

  • 내구성 : 큐에 메시지를 집어넣으면 여러 리전에 복제되서 저장되기에 데이터가 없어질 위험이 적습니다.
  • 높은 처리량 : 높은 처리량이 필요하면 producer, consumer 더 띄워서 처리합니다.
  • Retry : DLQ 를 써서 retry 를 제한할 수 있습니다.
    • consumer 에서 데이터를 처리 못하면 설정한 최대 수신수에 따라 retry 가 되고, 최대 수신수에 도달하면 Dead Letter Queue 로 이동합니다.
    • 주의할게 main queue 에서 DLQ 를 활성화해줘야 합니다. 또한, DLQ 는 Main Queue 와 같은 리전에 있어야 합니다.

sqs 표준대기열, FIFO

  • 표준대기열은 처리량, 순서 보장 X, 2회 이상 중복 메시지 올 수 있습니다.
  • 그렇기에 중복 메시지 처리를 위해 validation 필요합니다.
    • 이게 왜 발생이 되냐하면 여러 리전에 있는 sync 문제 때문이라고 합니다.

Reference

댓글