대기열 유형

Amazon SQS는 서로 다른 애플리케이션 요구 사항에 맞춰 2가지 유형의 대기열을 제공합니다.

표준 대기열

무제한 처리량: 표준 대기열은 API 작업당 거의 무제한의 초당 트랜잭션(TPS)을 지원합니다.

최소한 한 번 전달: 메시지가 최소한 한 번 전달되고, 가끔 2개 이상의 메시지 복사본이 전달될 수 있습니다.

최선 노력 순서: 가끔 메시지가 전송된 순서와 다르게 전달될 수 있습니다.

FIFO 대기열

높은 처리량: 기본적으로 FIFO 대기열은 초당 최대 300개의 메시지(초당 300개의 전송, 수신 또는 삭제 작업)를 지원합니다. 작업당 최대 10개 메시지를 일괄 처리할 경우, FIFO 대기열은 초당 3000개의 메시지까지 지원할 수 있습니다. 한도 증가를 요청하려면 지원 요청을 제출하십시오.

정확히 한 번 처리: 메시지가 한 번 전달되고 소비자가 이를 처리 및 삭제할 때까지 유지됩니다. 중복 메시지는 대기열에 올라가지 않습니다.

선입선출 전달: 메시지가 전송되고 수신되는 순서가 엄격하게 지켜집니다(예: 선입선출).

sqs-what-is-sqs-standard-queue-diagram
sqs-what-is-sqs-fifo-queue-diagram

한 번 이상 잘못된 순서로 도착하는 메시지를 애플리케이션에서 다음과 같이 처리할 수 있다면 여러 시나리오에서 표준 메시지 대기열을 사용할 수 있습니다.

  • 실시간 사용자 요청을 집중적 백그라운드 작업과 분리: 사용자들이 미디어 크기를 조정하거나 인코딩하면서 미디어를 업로드할 수 있게 합니다.
  • 작업을 여러 작업자 노드에 할당: 많은 수의 신용 카드 인증 요청을 처리합니다.
  • 장래 처리를 위한 메시지 배치: 데이터베이스에 여러 항목이 추가되도록 예약합니다.

FIFO 대기열은 다음 예와 같이 작업 및 이벤트 순서가 중요하거나 중복 항목이 허용되지 않는 경우에 애플리케이션 간 메시징을 강화해 줍니다.

  • 사용자가 입력한 명령이 올바른 순서로 실행되도록 해야 하는 경우.
  • 가격 수정을 올바른 순서로 전송하여 제품 가격을 정확히 표시해야 하는 경우.
  • 계정에 등록하기 전에 학생이 과정에 등록되는 것을 방지해야 하는 경우.

기능

  • 무제한 대기열 및 메시지: 메시지 수가 무제한인 무제한 Amazon SQS 대기열을 리전에 생성합니다.
  • 페이로드 크기: 메시지 페이로드는 형식과 관계없이 최대 256KB의 텍스트를 포함할 수 있습니다. 페이로드 64KB '청크'당 1개의 요청으로 청구됩니다. 예를 들어, 256KB 페이로드를 사용하는 단일 API 호출은 4개의 요청으로 청구됩니다. 256KB보다 큰 메시지를 전송하려면 Amazon S3에 메시지 페이로드를 저장하는 Java용 Amazon SQS 확장 클라이언트 라이브러리를 사용하십시오. 메시지 페이로드에 대한 참조는 SQS를 사용하여 전송됩니다.
  • 배치(Batches): 한 번에 최대 10개 또는 256KB 메시지를 배치로 전송, 수신 또는 삭제할 수 있습니다. 배치 요금은 단일 메시지와 같습니다. 따라서 배치를 사용하면 SQS 비용을 좀 더 절약할 수 있습니다.
  • 긴 폴링: 관계없는 폴링을 줄여 가능한 한 빨리 새 메시지를 받으면서 비용을 최소화합니다. 대기열이 비어 있는 경우 긴 폴링 요청은 다음 메시지가 도착할 때까지 최대 20초를 대기합니다. 긴 폴링 요청은 정기적인 요청과 비용이 같습니다.
  • 메시지를 최대 14일 동안 대기열에 유지합니다.
  • 메시지를 동시에 보내고 읽습니다.
  • 메시지 잠금: 메시지가 수신되면 처리되는 동안 "잠금" 상태가 됩니다. 다른 컴퓨터에서 동시에 메시지를 처리하지 못하도록 하기 위함입니다. 메시지 처리에 실패하면 잠금이 해제되면서 메시지가 다시 처리 가능한 상태로 바뀝니다.
  • 대기열 공유: 개발자는 Amazon SQS 대기열을 익명으로 또는 특정 AWS 계정과 안전하게 공유할 수 있습니다. IP 주소와 특정 시간으로 대기열 공유를 제한할 수도 있습니다.
  • 서버 측 암호화(SSE): AWS Key Management Service(AWS KMS)에서 관리하는 키를 사용하여 Amazon SQS 대기열의 메시지 콘텐츠를 보호합니다. SSE는 Amazon SQS가 메시지를 수신하자마자 이를 암호화합니다. 메시지는 암호화된 형태로 저장되며 Amazon SQS 는 권한이 있는 사용자에게 전송할 때만 메시지를 복호화합니다.
  • 배달 못한 편지 대기열(DLQ): 소비자가 성공적으로 처리하지 못한 메시지를 배달 못한 편지 대기열을 사용하여 처리합니다. 메시지에 대한 최대 수신 개수가 초과하면 해당 메시지는 원래 대기열에 연결된 배달 못한 편지 대기열(DLQ)로 이동됩니다. 메시지 전달이 중단된 이유를 분석하고 이해하는 데 도움이 될 수 있는 DLQ에 대해 별도의 소비자 프로세스를 설정하십시오. DLQ는 원본 대기열(표준 또는 FIFO)과 같은 유형이어야 합니다.

Amazon SQS를 다른 AWS 인프라 웹 서비스와 함께 사용

Amazon SQS 메시지 대기열 서비스를 Redshift, DynamoDB, RDS, EC2, ECS, LambdaS3 등 다른 AWS 서비스와 함께 사용하면 분산 애플리케이션의 안정성과 확장성을 더욱 향상할 수 있습니다. 몇 가지 일반 설계 패턴은 다음과 같습니다.

  • 작업 대기열: 동일한 양의 작업 일부를 동시에 처리하지 못할 수 있는 분산 애플리케이션의 구성 요소를 분리합니다.
  • 버퍼 및 배치(Batch) 작업: 아키텍처에 확장성과 안정성을 더하고, 메시지를 손실하거나 지연 시간을 늘리지 않고 일시적인 볼륨 스파이크를 원활하게 처리합니다.
  • 요청 분산: 요청을 전송하여 대화식 요청 경로에서 속도가 느린 작업을 제거합니다.
  • 팬아웃: SQS를 Simple Notification Service(SNS)와 결합하여 메시지의 동일한 사본을 여러 대기열에 병렬로 전송합니다.
  • 우선순위: 별도의 대기열을 사용하여 작업의 우선순위를 지정합니다.
  • 확장성: 메시지 대기열에서 프로세스를 분리하므로, 다른 프로세스를 추가하기만 하면 손쉽게 메시지 송신이나 수신 속도를 높일 수 있습니다.
  • 복원력: 시스템 일부에 장애가 발생하더라도 전체 시스템에는 영향을 주지 않습니다. 메시지 대기열에서 시스템의 구성 요소를 분리하므로 대기열에서 메시지를 읽어오는 프로세스가 실패한 경우에도, 시스템이 복구되면 처리되도록 메시지를 대기열에 추가할 수 있습니다.

용도 및 제한

이 서비스 사용에는 Amazon Web Services 고객 계약이 적용됩니다.

Amazon SQS 요금에 대해 자세히 알아보기

요금 페이지로 이동하기
구축할 준비가 되셨습니까?
Amazon SQS 시작하기
질문이 있으십니까?
문의처