AWS(Amazon Web Service)

[AWS] SQS vs SNS vs Kineseis

yunseohhe 2024. 11. 29. 09:51

SQS

  • 소비자가 SQS 대기열에서 메시지를 요청해서 데이터를 가져오는(pull) 모델이다.
  • 데이터를 처리한 후 소비자가 대기열에서 삭제해서 다른 소비자가 읽을 수 없도록 해야 한다.
  • 작업자와 소비자가 함께 소비하고 대기열에서 삭제하니깐 작업자나 소비자 수는 제한이 없다.
  • 관리된 서비스이므로 처리량을 프로비저닝할 필요가 없고 아주 빠르게 수백 수천 개의 메시지로 확장할 수 있다.
  • 순서를 보장하려면 FIFO 대기열 즉, 선입선출 대기열을 활성화해야 한다.
  • 각 메시지에 지연 기능이 있어 30초 등 일정 시간 뒤에 대기열에 나타나도록 할 수도 있다.

 

SNS

  • 게시/구독 모델로 다수의 구독자에게 데이터를 푸시하면 메시지의 복사본을 받게 된다.
  • SNS 주제별로 1,250만 명의 구독자까지 가능하며 데이터가 한 번 SNS에 전송되면 지속되지 않는다. 즉, 제대로 전달되지 않는다면 데이터를 잃을 가능성이 있다.
  • 게시-구독 모델은 최대 10만 개의 주제로 확장 가능하다.
  • 처리량을 프로비저닝하지 않아도 되고, 원한다면 SQS와 결합할 수 있다.
  • 팬아웃 아키텍처 패턴을 이용하면 SNS와 SQS를 결합하거나 SNS FIFO 주제를 SQS FIFO 대기열과 결합할 수 있다.

 

Kinesis

  • 두 가지 소비 모드가 있다.
  • 소비자가 Kinesis로부터 데이터를 가져오는(pull) 표준 모드는 샤드당 2MB/s의 속도를 지원한다.
  • 향상된 팬아웃 유형의 소비 메커니즘에서는 Kinesis가 소비자에게 데이터를 푸시하며 샤드 하나에 소비자당 2MB/s의 속도가 나온다.
      - 처리량이 훨씬 높을 테니 Kinesis 스트림에서 더 많은 애플리케이션 읽기가 가능하다.
  • Kinesis 데이터 스트림에서는 데이터가 지속되기 때문에 데이터를 다시 재생할 수 있다.
      - 따라서 실시간 빅 데이터 분석, ETL 등에 활용된다.
      - 샤드 레벨에서 정할 수 있어 미리 Kinesis 데이터 스트림마다 원하는 샤드 양을 지정해야 한다.
      - 샤드를 직접 확장해서 데이터가 언제 만료될지 정한다.
  • 용량 모드
      - 프로비저닝 용량 모드는 Kinesis 데이터 스트림으로부터 원하는 샤드 양을 미리 지정한다.
      - 온디맨드 용량 모드에서는 샤드 수가 Kinesis 데이터 스트림에 따라 자동으로 조정된다.