Amazon Simple Queue Service(SQS)

../main.png

Amazon SQS란?

sqs.png

Amazon SQS(Simple Queue Service)는 AWS에서 제공하는 완전 관리형 메시지 대기열 서비스다. 대기열을 사용하여 애플리케이션 구성 요소를 분리하고 독립적으로 확장할 수 있다. 이는 서버가 필요 없는 서비스로, AWS 클라우드가 처음 생길 때부터 제공되었던 서비스 중 하나다.

대기열이란?

prodcon.png 대기열은 메시지를 일시적으로 저장하는 버퍼 역할을 한다. 여기서 프로듀서(Producer)는 대기열로 메시지를 전송하고, 컨슈머(Consumer)는 대기열에서 메시지를 읽어 처리한다.

  • 프로듀서: 하나 또는 여러 개의 프로듀서가 대기열로 메시지를 보낼 수 있다.
  • 컨슈머: 하나 또는 여러 개의 컨슈머가 대기열에서 메시지를 폴링하여 읽을 수 있다. 각 컨슈머는 다른 메시지를 받게 되며, 메시지 처리가 끝나면 대기열에서 메시지를 삭제한다.

SQS의 특징

완전 관리형 서비스

Amazon SQS는 서버를 관리할 필요가 없는 완전 관리형 서비스다. 이는 애플리케이션 구성 요소 간의 통신을 관리하고 확장할 때 유용하다.

무한한 규모 조정

SQS는 초당 1개의 메시지부터 수만 개의 메시지까지 한도 없이 규모를 조정할 수 있다. 메시지의 기본 보유 기간은 4일이며, 최대 14일까지 설정할 수 있다.

짧은 지연 시간

발행 구독 시 지연 시간은 0.01초 미만이다. 컨슈머가 메시지를 읽는 작업을 공유하여 수평적으로 확장할 수 있다.

애플리케이션 티어 분리

ex.png SQS는 애플리케이션 티어를 분리할 때 유용하다. 예를 들어, 웹 서버가 요청을 받아 EC2 인스턴스의 Auto Scaling Group을 통해 처리하는 전통적인 솔루션 아키텍처를 생각해보자.

  1. 사용자가 영상을 처리해달라는 요청을 보낸다.
  2. 이 요청을 직접 영상 애플리케이션으로 보내는 대신, 메시지를 SQS 대기열에 삽입한다.
  3. 영상 처리 계층(EC2 인스턴스의 Auto Scaling Group)이 SQS 대기열에서 메시지를 읽어 영상을 처리한다.

이렇게 하면 웹 서버와 영상 처리 계층이 SQS 대기열을 통해 완전히 분리되어 독립적으로 확장될 수 있다.

FIFO 대기열

SQS는 FIFO(First In First Out) 대기열을 제공한다. 이는 메시지를 전송한 순서대로 처리하는 방식이다. 일반 대기열에서는 각 컨슈머가 메시지를 순서와 상관없이 처리할 수 있지만, FIFO 대기열에서는 메시지가 전송된 순서대로 처리된다. 이는 특정 순서로 메시지를 처리해야 하는 애플리케이션에 유용하다.