AWS

[AWS] SQS

비번변경 2022. 7. 31. 22:49

Simple Queue Service

해야 할 일을 나중에 처리하거나 다른 시스템이 처리할 수 있도록 하기 위한 비동기 메시징 서비스

분산 메시지 큐 서비스

todo 리스트

메시지는 처리해야 할 업무에 대한 todo 리스트와 같다. 이때 SQS는 메시지 저장소라고 할 수 있다.

 

 

용도

SQS는 공통 생산자-소비자 문제나 생산자-소비자 간 연결에서 발생하는 문제를 해결하는 큰 규모의 호스팅 메시지 큐를 제공하기 위해 고안되었다. 일반적으로 각 애플리케이션이 가지는 coupling을 끊어주는 역할을 한다.

 

Lambda와 EC2간 강한 결합도

Lambda와 EC2간 강한 결합도

 

Lambda와 EC2간 약한 결합도

Lambda와 EC2간 약한 결합도

 

 

특징 / 이점

특징

  • 메시지 보관 기간 : 1분 ~ 14일
  • 메시지 크기 : 1KB ~ 256KB
  • AWS Console, CLI, SDK 등을 활용하여 서비스할 수 있다.
  • Region 단위로 이용할 수 있으며 다른 Region 간 공유는 불가능하다.

 

이점

  • 관리 오버헤드 제거 : SQS는 가용성과 확장성을 보장하는 완전 관리형 서비스다.
  • 메시지 전달 안정성 : 메시지 손실이 없으며 메시지의 복제본을 저장한다.
  • 탄력적/비용 효율적 : 동적 확장을 지원하여 용량을 계획하거나 사전 프로비저닝을 고민하지 않아도 된다.

 

 

처리 과정

 

SQS 처리 과정

  1. Producer는 메시지를 생성하여 Queue로 전송한다.
  2. Queue는 일정 시간 메시지를 가지고 있는다.
  3. Consumer는 주기적으로 Queue를 폴링(Polling)하면서 신규 메시지를 가져가 처리한다.
  4. Consumer는 처리를 마치면 Queue로 처리한 메시지에 대한 Ack을 전송한다.
  5. 메시지 아이디에 해당하는 Ack를 받으면 Queue에서 메시지를 제거한다.

 

 

대기열

표준 대기열 (Standard Queue)

Standard

  • 무제한에 가까운 메시지 전송 지원
  • At-Least-Once-Delivery : 최소 1회의 전달을 보장한다. 단, 중복 수신의 가능성이 존재한다.
  • Best-Effort-Ordering : 최대한 메시지가 도착한 순서대로 전송한다. 하지만 신뢰할 수는 없다. 즉, 메시지 순서를 보장할 수 없다. 이는 Throughput을 극대화하기 위함이다.
  • 반드시 1번만 읽는다는 것을 보장하지 않는다.

 

순차 대기열 (FIFO Queue)

FIFO

  • 메시지 순서 보장
  • Exactly-Once Processing : 1번 전송, 1번 수신 보장. 중복 수신 방지
  • Throughput 제한 : 초당 300 TPS
  • Standard 대기열보다 높은 비용

 

 

참고 문서

https://opentutorials.org/course/608/4909

https://ko.wikipedia.org/wiki/아마존_심플_큐_서비스

https://devocean.sk.com/blog/techBoardDetail.do?ID=163290

https://github.com/schooldevops/AWS_Tutorials_by_kido/tree/main/Queueing

https://javabom.tistory.com/60

https://velog.io/@ragnarok_code/SES-SNS-SQS의-차이