Amazon SQS - AWS 권장 가이드

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon SQS

Amazon SQS는 순서를 보장하지 않는 표준 대기열과 특정 메시지 그룹 내에서 순서를 보장하는 FIFO 대기열을 지원합니다.

대기열은 마이크로서비스를 조율하는 일반적인 방식이며 최대 14일 동안 메시지를 내구성 있게 저장합니다. 대기열은 생산자가 채우고 소비자가 비우는 방식으로 동작합니다. AWS Lambda를 소비자로 사용할 경우, SQS 대기열을 이벤트 소스로 구성할 수 있습니다. 이 경우 Lambda 서비스의 이벤트 소스 매핑(ESM)이 대기열을 자동으로 폴링하여 메시지가 도착하면 Lambda 함수로 전달합니다. Amazon Elastic Container Service(Amazon ECS) 또는 Amazon Elastic Compute Cloud(Amazon EC2)와 같은 다른 컴퓨팅 서비스에서 실행되는 마이크로서비스는 메시지가 도착했을 때 대기열에서 가져오기 위한 자체 폴링 메커니즘을 구현해야 합니다.

Lambda ESM은 Amazon SQS에 대해 메시지 필터링도 지원하므로, 메시지 본문 내용에 따라 대기열에 있는 메시지 중 일부만 처리할 수 있습니다.

폴링

Amazon SQS는 메시지의 짧은 폴링과 긴 폴링을 모두 지원합니다. 짧은 폴링은 일부 서버만 조회하여 사용 가능한 메시지를 즉시 반환합니다. 하지만 사용 가능한 모든 메시지를 반환하지 않을 수도 있습니다. 이는 애플리케이션이 가능한 한 빨리 메시지를 처리해야 하거나 오래 기다릴 수 없는 경우에 유용합니다.

긴 폴링은 설정된 시간만큼 대기하거나 지정된 개수의 메시지가 모일 때까지 기다린 후 메시지를 반환합니다. 이는 특히 메시지가 많지 않은 대기열에서 메시지 반환이 없는 폴링의 수를 가리키는 빈 폴링의 수를 줄이는 데 도움이 됩니다. 빈 폴링이 줄면 Amazon SQS 비용도 감소합니다. 이 서비스는 요청당 과금되며, 폴링 작업마다 요청이 발생하기 때문입니다.

지침

다음과 같은 경우 대기열을 선택하는 것이 좋습니다.

  • 구성 요소 분리를 원하고 동기식 통신이 필요하지 않을 경우

  • 서로 다른 가용성 서비스 수준 계약(SLA) 또는 서비스 수준 목표(SLO)를 가진 구성 요소 간에 통신을 하는 경우

  • 일반적으로 하나의 소비자가 메시지 집합을 처리하는 경우

다음과 같은 경우 다른 옵션을 고려해야 합니다:

  • 동기식 통신이 필요한 경우

  • 올바른 소비자에게 메시지를 보내기 위한 복잡한 라우팅 로직이 필요한 경우