aws SQS

김금동·2022년 8월 10일
0

aws

목록 보기
16/16

SQS란?

애플리케이션을 구성하는 다양한 컴포넌트가 서로에게 메시지를 전송할 수 있도록 돕는 관리형 메시지 서비스.

Queses

  • SQS는 메시지를 담는 큐를 생성.
  • 큐에 메시지를 넣는 프로듀서 컴포넌트와 큐에 있는 메시지를 읽는 컨슈머 컴포넌트로 구성.
  • 메시지의 최대크기는 256KB.

메시지 처리 방식

  1. 프로듀서가 SendMessage 액션을 통해 메시지를 넣음. (큐에 입력된 메시지는 이동중 메시지 or 인플라이트 메시지라부름)

  2. 컴슈머가 ReceiveMessage 액션을 통해 큐에서 메시지 소비.

  3. 컨슈머는 메시지를 처리한 뒤 DeleteMessage 액션을 통해 큐에서 삭제.

가시성 중지기간

컨슈머가 메시지를 확인하면, SQS는 이후 일정 시간동안 해당 메시지를 다른 컨슈머가 확인할 수 없게 하며, 이를 가시성 중지기간이라 부름.

  • 기본 가시정 중지기간은 30초이며, 최소 0초에서 최대 12시간.

보유기간

메시지가 큐에 있는 기간.

  • 기본 보유기간은 4일이며, 최소 1분에서 최대 14일.

딜레이 큐와 메시지 타이머

딜레이큐

큐에 메시지를 넣을 때 큐마다 지연시간을 설정할 수 있음.

  • 기본 큐별 딜레이 시간 0초, 최대 15분

메시지 타이머

메시지 타이머를 이용해 지연시간을 설정할 수 있음.
메시지 타이머를 설정한 경우 딜레이 큐는 무시됨.

-기본 메시지 타이머 0초, 최대 15분.

큐 타입

큐 기반 애플리케이션의 경우 큐의 성능 또는 작동 방식에 따라 애플리케이션의 성능도 영향을 받게 됨. 다양한 메시지 처리 방식의 요구에 대해 스탠다드 큐와 FIFO 큐 두 가지 타입의 큐 제공.

스탠다드 큐

  • 스탠다드 큐는 무제한의 처리성능을 제공하며, 신속하게 다수의 메시지를 처리함.

  • 메시지는 순서와 무관하게 전달되고, 때론 동일한 메시지가 중복해서 전달됨. (스탠다드 큐를 사용하는 애플리케이션은 이와 같은 중복 메시지를 처리할 수 있는 기능을 지니고 있어야함.)

  • 스탠다드는 기본 큐 타입이며, 최대 12만개의 인플라이트 메시지를 처리

FIFO 큐

  • FIFO큐는 초당 3천개의 메시지를 큐에 전달할 수 있음.

  • 메시지는 도착 순서대로 큐에 전달되며, 각 메시지는 한 번만 기록되므로 중복 메시지 문제를 피할 수 있음.

  • FIFO큐는 약 2만개의 인플라이트 메시지를 처리할 수 있음.

  • 메시지 단위로 큐를 분할해 큐에 입력된 메시지의 하위 그룹을 만들 수 있음.

폴링

메시지 도착 여부 조회 옵션인 숏폴링 또는 롱폴링이 있음.

숏폴링

  • 일부 메시지 누락이 있더라도 즉시 메시지를 확인해야 할 때 사용

  • 대기중인 메시지 내역만 확인하며, 큐에 들어온 메시지를 즉시 확인하거나 큐에 메시지가 없음을 즉시 확인할 수 있음.

  • 메시지 도착 후 지연 시간이 짧아 큐에 메시지가 있는 상황에서 메시지가 없다는 응답을 받을 수 있음. (따라서 착오 없이 확인하려면 여러 번 조회해야 함.)

롱폴링

  • 약간의 지연이 있더라도 큐에 있는 모든 메시지를 정확하게 확인해야 할 때 사용.

  • 큐에서 대기중인 모든 메시지를 반환하며, 모든 큐 서버를 확인하므로 응답 시간이 20초가량 걸릴 수 있음.

  • 롱폴링은 숏폴링에 비해 조회 빈도수가 작으므로 좀 더 경제적인 옵션임.

데드레터 큐

큐에서 가끔씩 컨슈머가 제대로 처리하지 못한 메시지를 데드레터라 함. 이와 같은 문제를 해결하기 위해서 소스 큐에서 데드레터를 따로 보관한 큐를 데드레터 큐라함.

  • 데드레터 큐는 소스 큐와 동일한 타입으로 생성.(리전도 동일 리전)

  • maxReceiveCount속성을 이용해 최대 인출 시도 횟수 설정.

  • 하나의 메시지가 데드레터 큐로 옮겨지면 원본 생성 일자 기준으로 삭제됨.

profile
나원래chu해

0개의 댓글