개념

SQS(Simple Queue Service)

GenieLove! 2022. 10. 1. 11:42
728x90
반응형

SQS

- 서버들끼리 사용할 수 있는 메시지 큐를 제공하는 서비스

- 비동기 메시지 서비스

- 마이크로 서비스, 분산 시스템 및 서버리스 애플리케이션을 쉽게 분리하고 확장할 수 있도록 지원하는 완전 관리형 메시지 대기열 서비스

 

QUEUE

- 메시지를 담는 공간

표준 대기열(Standard Queue)

장점

  • 최소 1회 전달 보장(At Least Once Delivery)
  • 무제한에 가까운 메시지 전송 지원(최대 처리량)
  • 최대한 순서 보장(Best Effort Ordering)

단점

  • 메시지 순서 보장 X
  • 중복 읽기 가능성이 존재

FIFO 대기열(First In First Out Queue)

장점

  • 메시지 순서 보장
  • 1번 전송, 1번 수신이 된다.(중복 수신 방지)
  • 초당 300개까지 호출 가능

보기 제한 시간(Visibility Timeout)

- 메시지를 받은 뒤 특정 시간동안 다른 곳에서 동일한 메시지에 접근할 수 없게 하는 기능

- 0s ~ 12h

- Messages Available(Visible): 내용을 꺼내서 볼 수 있는 상태인 메시지 개수

- Messages in Flight(Not Visible): 다른 곳에서 메시지를 꺼내서 현재는 내용을 볼 수 없는 상태의 메시지 개수

지연 전송(Delay Delivery)

- 특정 시간동안 메시지를 받지 못하게 하는 기능

- 지연되는 시간동안에는 Messages in Flight에 포함된다.

처리 실패 큐(Dead Letter Queues)

- 설정한 횟수를 초과해서 메시지를 받았는데 삭제되지 않고 남아있으면 처리 실패 큐로 전달

- 1 ~ 1000까지 설정가능

- 일반 큐 하나에 여러 개의 처리 실패 큐를 연결할 수 있음

짧은 폴링(Short Polling)

- 메시지 받기 요청하면 바로 결과 받음 -> 메시지 있으면 가져오고, 없으면 가져오지 않는다.

- ReceiveMessage 요청에서 WaitTimeSeconds를 0으로 설정했을 때 짧은 폴링을 한다.

- 큐 설정의 ReceiveMessageWaitTimeSeconds를 0으로 설정했을 때 짧은 폴링을 한다.

긴 폴링(Long Polling)

- 메시지가 있으면 가져오고, 없으면 기다리느다.

- 기본 제한 시간은 20초, 1s ~ 20s 설정 가능

- ReceiveMessage 요청에서 WaitTimeSeconds가 0보다 크면 큐 설정의 ReceiveMessageWaitTimeSeconds 값보다 우선순위가 높다.

SQS 함수 종류

  • CreateQueue: 큐 생성
  • ListQueues: 큐 목록 출력
  • DeleteQueue: 큐 삭제
  • SendMessage: 큐에 메시지 전달
  • SendMessageBatch: 큐에 여러 메시지 추가
  • ReceiveMessage: 큐에서 메시지 보기
  • ChangeMessageVisibility: 메시지 보기 제한 시간 변경
  • ChangeMessageVisibilityBatch: 여러 메시지의 보기 제한 시간 변경
  • DeleteMessage: 큐에서 메시지 삭제
  • DeleteMessageBatch: 큐에서 여러 메시지 삭제
  • SetQueueAttributes: 큐 설정 변경(지연 전송 시간, 최대 메시지 크기, 메시지 보관 기간, 접근 정책, 폴링 시간, 처리 실패 큐...)
  • GetQueueAttributes: 큐 설정 확인
  • GetQueueUrl: 큐 엔드포인트 URL 확인
  • AddPermission: 다른 AWS 계정에 대한 접근 권한 설정
  • RemovePermission: 다른 AWS 게정에 대한 접근 권한 설정 삭제

SQS와 MQ의 차이

SQS

  • 다른 MQ에 존재하는 message routing, fan-out, distribution lists 등을 지원하지 않는다.

MQ

  • AMQP나 MQTT처럼 표준화된 여러 broadcast 프로토콜을 완변히 지원하는 fully managed 서비스
  • 복잡한 요구사항을 구현할 때 유용
  • AWS 외부에 있는 메시지 브로커를 AWS로 마이그레이션 할 때 유용
728x90
반응형