0Pricing
AWS Solutions Architect · 강의

SQS Standard와 FIFO 대기열

최대 처리량을 위한 Standard 대기열과 순서가 보장되고 정확히 한 번 처리되는 FIFO 대기열을 비교하여 적합한 유형을 선택합니다.

SQS Standard와 FIFO 대기열은(는) CoddyKit의 무료 AWS Solutions Architect 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 AWS Solutions Architect 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. AWS Solutions Architect 강의에는 총 4개의 강의가 포함되어 있습니다.

메시지 대기열이 중요한 이유

메시지 대기열은 생산자와 소비자를 분리합니다. 생산자는 소비자가 메시지를 처리할 때까지 기다리지 않고 대기열로 메시지를 보냅니다. 소비자는 자신의 속도에 맞춰 메시지를 처리합니다. 이 패턴은 빠른 생산자가 느린 소비자를 압도하는 것을 방지하고, 각 계층을 독립적으로 확장할 수 있게 하며, 소비자를 일시적으로 사용할 수 없을 때 내구성 있는 버퍼를 제공합니다. Amazon SQS는 완전 관리형이며 가용성이 매우 높은 AWS 메시지 대기열 서비스입니다.

SQS Standard 대기열의 특징

Standard 대기열은 제한 없는 처리량(초당 트랜잭션이 거의 무제한)을 제공합니다. 최소 한 번 전달을 보장하므로, 드물게 메시지가 두 번 이상 전달될 수 있습니다(분산 인프라로 인한 현상입니다). 메시지 순서는 최선의 노력 수준으로 보장됩니다. 일반적으로 메시지는 전송된 순서대로 전달되지만, 이를 보장하지는 않습니다. 처리량이 중요하고 소비자가 간헐적인 중복 메시지와 순서가 뒤섞인 전달을 처리할 수 있다면 Standard 대기열이 적합합니다.

# Create a Standard queue
aws sqs create-queue \
  --queue-name 'OrderProcessingQueue'

# Send a message
aws sqs send-message \
  --queue-url 'https://sqs.us-east-1.amazonaws.com/123456789012/OrderProcessingQueue' \
  --message-body 'OrderId-12345'

SQS FIFO 대기열의 특징

FIFO 대기열(선입선출)은 정확히 한 번 처리와 엄격한 메시지 순서를 보장합니다. 메시지는 전송된 정확한 순서대로 전달됩니다. FIFO 대기열은 초당 최대 300건의 트랜잭션을 지원하며, 일괄 처리를 사용하면 3,000건까지 지원합니다. FIFO 대기열 이름은 반드시 .fifo로 끝나야 합니다. 순서와 정확히 한 번 처리 의미가 중요한 금융 거래, 전자상거래 주문 처리, 재고 업데이트에는 FIFO 대기열을 사용하십시오.

# Create a FIFO queue
aws sqs create-queue \
  --queue-name 'OrderProcessingQueue.fifo' \
  --attributes '{
    "FifoQueue": "true",
    "ContentBasedDeduplication": "true"
  }'

FIFO 대기열의 메시지 그룹

FIFO 대기열은 메시지 그룹 ID를 사용하여 대기열 내의 순서 처리 범위를 나눕니다. 같은 그룹 ID를 가진 메시지는 순서대로 전달되고, 서로 다른 그룹 ID를 가진 메시지는 병렬로 처리할 수 있습니다. 예를 들어 customerId를 그룹 ID로 사용하면 각 고객의 주문은 순서대로 처리하면서도 서로 다른 고객의 주문은 동시에 처리할 수 있습니다. 이를 통해 소비자를 수평으로 확장하면서 FIFO 의미를 유지할 수 있습니다.

aws sqs send-message \
  --queue-url 'https://sqs.us-east-1.amazonaws.com/123456789012/Orders.fifo' \
  --message-body 'Order details here' \
  --message-group-id 'customer-789' \
  --message-deduplication-id 'order-uuid-abc123'

FIFO 대기열의 중복 제거

FIFO 대기열은 중복 제거 ID를 사용하여 메시지가 중복 처리되지 않도록 합니다. 5분의 중복 제거 기간 안에 같은 ID를 가진 메시지 두 개를 보내면 두 번째 메시지는 별도 알림 없이 폐기됩니다. 중복 제거 ID(MessageDeduplicationId)를 명시적으로 제공하거나, 콘텐츠 기반 중복 제거를 활성화할 수 있습니다. 콘텐츠 기반 중복 제거를 사용하면 SQS가 메시지 본문의 SHA-256 해시를 중복 제거 ID로 자동 계산합니다. 콘텐츠 기반 중복 제거는 더 간단하지만 메시지 본문이 서로 달라야 합니다.

메시지 보존 및 크기 제한

SQS는 구성 가능한 기간 동안 메시지를 보존합니다. 최소 기간은 1분, 최대 기간은 14일이며 기본값은 4일입니다. 보존 기간 안에 소비되지 않은 메시지는 자동으로 삭제됩니다. 메시지의 최대 크기는 256 KB입니다. 더 큰 페이로드가 필요하면 SQS 확장 클라이언트 라이브러리를 사용하거나 페이로드를 S3에 저장하고 SQS 메시지에는 S3 객체 참조만 보내십시오. Standard 대기열과 FIFO 대기열에는 모두 같은 제한이 적용됩니다.

메시지 수신 및 삭제

소비자는 receive-message를 사용하여 대기열을 폴링합니다. 메시지를 수신하면 해당 메시지는 가시성 제한 시간 동안 보이지 않게 되어 다른 소비자가 볼 수 없습니다. 소비자는 제한 시간이 만료되기 전에 메시지를 처리한 다음 영수증 핸들을 사용하여 명시적으로 삭제해야 합니다. 소비자가 중단되거나 제때 삭제하지 않으면 메시지가 다시 나타나 다른 소비자가 처리할 수 있습니다. 이를 통해 Standard 대기열에서 최소 한 번 전달을 구현할 수 있습니다.

RECEIPT=$(aws sqs receive-message \
  --queue-url 'https://...' \
  --query 'Messages[0].ReceiptHandle' --output text)

# Process message, then delete it
aws sqs delete-message \
  --queue-url 'https://...' \
  --receipt-handle "$RECEIPT"

실제 환경에서의 처리량 비교

Standard 대기열은 이미지 미리 보기 생성, 알림 이메일 전송, 로그 처리처럼 중복을 멱등적으로 처리할 수 있고 순서가 중요하지 않은 작업에 적합합니다. FIFO 대기열은 은행 송금 처리(입금 전에 출금), 전자상거래 장바구니 업데이트(결제 전에 상품 추가), 2단계가 1단계 다음에 실행되어야 하는 작업 흐름에 필요합니다. 대부분의 고처리량 아키텍처에서는 Standard 대기열을 기본으로 선택하고, 순서나 정확히 한 번 전달이 반드시 필요한 경우에만 FIFO로 전환하십시오.

처리량과 비용을 위한 일괄 처리

SQS는 API 요청 단위로 요금을 부과합니다. 일괄 작업을 사용하면 API 호출 한 번에 최대 메시지 10개를 보내고, 수신하고, 삭제할 수 있어 비용을 최대 10배까지 줄일 수 있습니다. FIFO 대기열은 일괄 처리를 활성화하는 고처리량 모드를 지원하며, 메시지 10개를 일괄 처리하면 한도가 초당 3,000개 메시지로 올라갑니다. 운영 환경에서는 API 호출 비용을 최소화하기 위해 항상 send-message-batch와 delete-message-batch를 사용하십시오.

aws sqs send-message-batch \
  --queue-url 'https://...' \
  --entries '[
    {"Id": "msg1", "MessageBody": "Order-001"},
    {"Id": "msg2", "MessageBody": "Order-002"},
    {"Id": "msg3", "MessageBody": "Order-003"}
  ]'

대기열 액세스 정책

SQS 대기열은 리소스 기반 정책(대기열 정책)으로 보호되며, 누가 대기열로 메시지를 보내거나 대기열에서 메시지를 받을 수 있는지 제어합니다. 이는 계정 간 액세스를 허용하거나 SNS가 SQS 대기열에 게시할 때 특히 중요합니다. Lambda의 SQS 액세스는 Lambda 실행 역할의 IAM 정책(sqs:ReceiveMessage, sqs:DeleteMessage, sqs:GetQueueAttributes)으로 제어됩니다. 항상 최소 권한 원칙을 적용하십시오. 소비자에게 수신 및 삭제 권한보다 많은 권한을 부여하지 마십시오.

Standard와 FIFO 선택: 결정 가이드

다음 질문을 통해 선택하십시오. (1) 순서가 중요합니까? 그렇다면 → FIFO입니다. (2) 정확히 한 번 처리가 필요합니까? 그렇다면 → FIFO입니다. (3) 3,000 TPS를 초과하는 처리량이 필요합니까? 그렇다면 → Standard입니다(FIFO는 일괄 처리 시 3,000 TPS로 제한됩니다). (4) 소비자가 중복 메시지를 처리할 수 있습니까? 그렇다면 → Standard가 더 간단하고 저렴합니다. SAA-C03 시험에서 FIFO를 나타내는 핵심어는 '순서 처리', '정확히 한 번', '순차적', '중복 제거'입니다. Standard의 핵심어는 '높은 처리량', '최선의 노력', '최소 한 번 전달'입니다.

빠른 확인

이 레슨에서 배운 AWS 솔루션스 아키텍트(SAA-C03) 개념을 얼마나 이해했는지 확인해 보십시오.

레슨 요약

이 레슨에서는 다음을 배웠습니다. Standard 대기열은 최소 한 번 전달과 최선의 노력 수준의 순서 처리를 제공하는 무제한 처리량 대기열로, 중복을 허용할 수 있는 대규모 작업에 적합합니다. FIFO 대기열은 메시지 그룹 ID와 중복 제거 ID를 사용하여 정확히 한 번 처리와 엄격한 메시지 순서를 보장하지만, 일괄 처리 시 3,000 TPS로 제한됩니다. 두 대기열 중 무엇을 선택할지는 순서 처리와 중복 제거가 반드시 필요한 요구 사항인지에 따라 결정됩니다. 다음으로 가시성 제한 시간, 배달 못한 편지 대기열, 긴 폴링을 살펴보겠습니다.

자주 묻는 질문

“SQS Standard와 FIFO 대기열” 강의는 무료인가요?

네 — “SQS Standard와 FIFO 대기열” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 AWS Solutions Architect 강의 전체를 잠금 해제할 수 있습니다. AWS Solutions Architect 강의에는 총 4개의 강의가 포함되어 있습니다.

“SQS Standard와 FIFO 대기열”에서 뭘 배우나요?

최대 처리량을 위한 Standard 대기열과 순서가 보장되고 정확히 한 번 처리되는 FIFO 대기열을 비교하여 적합한 유형을 선택합니다. 브라우저에서 직접 실행하는 실습 코드로 AWS Solutions Architect을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

AWS Solutions Architect을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 AWS Solutions Architect은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.

“SQS Standard와 FIFO 대기열” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 AWS Solutions Architect 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 AWS Solutions Architect 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. SQS Standard와 FIFO 대기열
  2. 가시성 제한 시간, DLQ 및 롱 폴링
  3. SNS 주제 및 팬아웃 아키텍처
  4. SQS 메시지 필터링 및 SNS와 SQS 통합
← AWS Solutions Architect(으)로 돌아가기