[AWS] SQS 시작하기

Joney의 SW 공부 블로그·2023년 6월 28일
0

SQS 개요

SQS란?

Simple Queue Service(SQS)는 내구력과 가용성이 뛰어난 관리형 Queue 서비스

메시지 수명 주기

SQS 대기열은 메시지 생산자로부터 송신된 메시지를 분산해서 SQS서버에 저장

1. 생산자는 A라는 메시지를 SQS 대기열에 전송하고 SQS 서버에서 분산 저장됨
2. 소비자는 대기열에서 A 메시지를 소비, A는 처리되는 동안 대기열에 그대로 남아 있으며, 표시 제한 시간(visibility timeout) 동안 후속 수신 요청에 대해 메시지를 반환하지 않음
3. 소비자는 메시지 A를 대기열에서 삭제하여, 중복 처리가 되지 않도록 함

사용 목적

  • 시스템(어플리케이션)들의 coupling 끊기
    • 독립적으로 작업을 수행하는 아키텍처 구현

SQS 대기열 생성하기

대기열 유형

표준

  • API 작업당 거의 무제한에 가까운 TPS 제공
  • 메시지는 최소 한 번 전송(qos 1과 유사)이기 때문에, 중복 전송이 발생할 가능성이 있음
  • 최적의 순서를 제공 (순서 보장은 아님)

FIFO

  • 최대 3000 TPS 지원
  • 메시지는 정확히 한번(qos 2와 유사) 전송 됨
  • 순서 보장

구성

표시 제한 시간

  • 한 소비자가 대기열에서 수신한 메시지가 다른 메시지 소비자에게 보이지 않게 되는 시간
  • 0초 ~ 12시간 사이 값으로 설정
  • 해당 시간이 지나면 메시지가 다른 소비자에게 보이기 때문에, 중복 처리를 막기 위해서는, 소비자가 처리한 메시지를 삭제해야 함

전송 지연

  • 이 대기열에 추가된 각 메시지의 첫 번째 전송에 대한 지연 시간
  • 0초 ~ 15분 사이 값으로 설정
  • 소비자가 메시지를 처리하는 데 추가 시간이 필요한 경우 사용
  • 대기열로 전송하는 모든 메시지는 지연 시간 동안 소비자에게 보이지 않음

메시지 수신 대기 시간

  • 폴링이 메시지를 사용할 수 있을 때까지 기다리는 최대 시간
  • 0초 ~ 20초 사이 값으로 설정

메시지 보존 기간

  • SQS가 대기열에서 삭제되지 않은 메시지를 보관하는 시간
  • 1분 ~ 14일 사이 값으로 설정

최대 메시지 크기

  • 이 대기열의 최대 메시지 크기
  • 1 KB ~ 256 KB 사이 값으로 설정

리드라이브 허용 정책

  • 리드라이브 허용 정책은 이 대기열을 배달 못한 편지 대기열로 사용할 수 있는 소스 대기열을 정의
  • 비활성화가 기본값
    • 모든 소스 대기열이 이 대기열을 배달 못한 편지 대기열로 사용하도록 허용하는 것과 동일한 동작이 발생

배달 못한 편지 대기열

  • 메시지를 소비할 수 없는 경우 배달 못한 편지 대기열(DLQ)로 전송
  • 문제가 있는 메시지를 격리하여 실패 원인 파악 가능
  • 먼저 DLQ로 지정할 대기열을 생성 필요
    • DLQ 대기열 유형(표준 또는 FIFO)은 소스 대기열과 일치 필요
    • 동일한 DLQ를 둘 이상의 소스 대기열과 연결 불가능
  • 최대 수신 수 값은 메시지를 DLQ로 전송하는 경우를 결정
    • 메시지의 ReceiveCount가 대기열의 최대 수신 수를 초과하면 SQS는 메시지를 연결된 DLQ로 전송

SQS 장단점

장점

  • 메시지의 생산자와 소비자를 분리할 수 있기 때문에, 각 시스템 간 영향을 받지 않고 작업 수행 가능
  • 설정이 간단해서 적용에 부담 없음
  • 완전 관리형이기 때문에 생성만 하면 관리에 공수가 들어가지 않음
  • 높은 내구성과 가용성으로 신뢰도 높은 아키텍처 구현 가능

단점

  • 대기열에서 메시지를 가져올 때 1~10개의 메시지를 가져올 수 있지만, 대용량 메시지 처리에는 적합하지 않음
profile
SW 지식 노트 블로그

0개의 댓글