

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

# Amazon Simple Queue Service란 무엇인가요?
<a name="welcome"></a>

Amazon Simple Queue Service(Amazon SQS)는 내구력 있고 가용성이 뛰어난 보안 호스팅 대기열을 제공하며 이를 통해 분산 소프트웨어 시스템과 구성 요소를 통합 및 분리할 수 있습니다. Amazon SQS는 [배달 못한 편지 대기열](sqs-dead-letter-queues.md) 및 [비용 할당 태그](sqs-queue-tags.md)와 같은 공용 구성을 제공합니다. AWS SDK가 지원하는 모든 프로그래밍 언어를 사용하여 액세스할 수 있는 일반 웹 서비스 API를 제공합니다.

## Amazon SQS 사용의 이점
<a name="sqs-benefits"></a>
+ **보안** - Amazon SQS 대기열에 메시지를 보내고 받을 수 있는 사람을 [제어](security-iam.md)합니다. 기본 Amazon SQS 관리형 서버 측 암호화(SSE)를 사용하거나 AWS Key Management Service (AWS KMS)에서 관리되는 사용자 지정 [SSE](sqs-server-side-encryption.md) 키를 사용하여 대기열에 있는 메시지의 콘텐츠를 보호함으로써 민감한 데이터를 전송하도록 선택할 수 있습니다.
+ **내구성** – 메시지의 안전을 위해 Amazon SQS는 메시지를 여러 서버에 저장합니다. 표준 대기열은 [최소 1회 메시지 전송](standard-queues-at-least-once-delivery.md)을 지원하고 FIFO 대기열은 [정확히 1회 메시지 처리](FIFO-queues-exactly-once-processing.md) 및 [높은 처리량](high-throughput-fifo.md) 모드를 지원합니다.
+ **가용성** – Amazon SQS는 [중복 인프라](#sqs-basic-architecture)를 사용하여 메시지에 대한 고도의 동시 액세스와 메시지 생성 및 소비에 대한 고가용성을 제공합니다.
+ **확장성** – Amazon SQS는 [버퍼링된 요청](sqs-client-side-buffering-request-batching.md)을 각각 독립적으로 처리하여 프로비저닝 지침 없이도 로드 증가 또는 급증을 처리하기 위해 투명하게 확장할 수 있습니다.
+ **신뢰성** – Amazon SQS는 처리 중에 메시지를 잠그므로 여러 생산자와 소비자가 동시에 메시지를 전송 및 수신할 수 있습니다.
+ **사용자 지정** – 대기열이 똑같을 필요는 없습니다. 예를 들어 [대기열에서 기본 지연 시간을 설정](sqs-delay-queues.md)할 수 있습니다. Amazon S3 객체에 대한 포인터를 보유하는 Amazon SQS를 통해 Amazon DynamoDB 또는 [Amazon Simple Storage Service(Amazon S3)를 사용](sqs-s3-messages.md)하여 1MiB보다 큰 메시지 콘텐츠를 저장하거나 큰 메시지를 더 작은 메시지로 분할할 수 있습니다.

## Amazon SQS 기본 아키텍처
<a name="sqs-basic-architecture"></a>

   분산 메시징 시스템의 주요 부분과 생성부터 삭제까지 Amazon SQS 메시지의 수명 주기에 대해 알아봅니다.   

이 섹션에서는 분산 메시징 시스템의 주요 구성 요소에 대해 소개하고 Amazon SQS 메시지의 수명 주기에 대해 설명합니다.

### 분산 대기열
<a name="sqs-distributed-queue"></a>

분산 메시징 시스템에는 세 가지 주요 부분, 즉 **분산 시스템의 구성 요소**, **대기열**(Amazon SQS 서버에 분산됨), **대기열의 메시지**가 있습니다.

다음 시나리오에서 시스템에는 여러 *생산자*(메시지를 대기열로 전송하는 구성 요소) 및 *소비자*(대기열의 메시지를 수신하는 구성 요소)가 있습니다. 대기열(메시지 A\$1E 유지)은 여러 Amazon SQS 서버에서 메시지를 중복으로 저장합니다.

![\[분산 메시징 시스템에는 세 가지 주요 부분, 즉 분산 시스템의 구성 요소, 대기열(Amazon SQS 서버에 분산됨), 대기열의 메시지가 있습니다.\]](http://docs.aws.amazon.com/ko_kr/AWSSimpleQueueService/latest/SQSDeveloperGuide/images/ArchOverview.png)


### 메시지 수명 주기
<a name="sqs-message-lifecycle"></a>

다음 시나리오에서는 대기열에서 생성부터 삭제까지 Amazon SQS 메시지의 수명 주기를 설명합니다.

![\[대기열에서 생성부터 삭제까지 Amazon SQS 메시지의 수명 주기입니다.\]](http://docs.aws.amazon.com/ko_kr/AWSSimpleQueueService/latest/SQSDeveloperGuide/images/sqs-message-lifecycle-diagram.png)


![\[Section one description for the previous lifecycle diagram.\]](http://docs.aws.amazon.com/ko_kr/AWSSimpleQueueService/latest/SQSDeveloperGuide/images/number-1-red.png) 생산자(구성 요소 1)는 메시지 A를 대기열로 전송하고 이 메시지는 Amazon SQS 서버에서 중복 분산됩니다.

![\[Section two description for the previous lifecycle diagram.\]](http://docs.aws.amazon.com/ko_kr/AWSSimpleQueueService/latest/SQSDeveloperGuide/images/number-2-red.png) 소비자(구성 요소 2)는 메시지를 처리할 준비가 되면 대기열에서 메시지를 소비하고 메시지 A가 반환됩니다. 메시지 A는 처리되는 동안 대기열에 그대로 남아 있고 [제한 시간 초과](sqs-visibility-timeout.md)가 지속되는 동안 후속 수신 요청으로 반환되지 않습니다.

![\[Section three description for the previous lifecycle diagram.\]](http://docs.aws.amazon.com/ko_kr/AWSSimpleQueueService/latest/SQSDeveloperGuide/images/number-3-red.png) 소비자(구성 요소 2)는 대기열에서 메시지 A를 삭제하여 제한 시간이 만료되면 이 메시지가 수신되어 다시 처리되지 못하도록 합니다.

**참고**  
Amazon SQS는 최대 메시지 보존 기간 넘게 대기열에 유지된 메시지를 자동으로 삭제합니다. 기본 메시지 보존 기간은 4일입니다. 그러나 `[SetQueueAttributes](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SetQueueAttributes.html)` 작업을 사용하면 메시지 보존 기간을 60초에서 1,209,600초(14일) 사이로 설정할 수 있습니다.

## Amazon SQS, Amazon MQ 및 Amazon SNS 간의 차이점
<a name="sqs-difference-from-amazon-mq-sns"></a>

 Amazon SQS, [Amazon SNS](https://aws.amazon.com/sns/), [Amazon MQ](https://aws.amazon.com/amazon-mq/)는 확장성이 뛰어나고 사용하기 쉬운 관리형 메시징 서비스를 제공하며, 각 서비스는 분산 시스템 내의 특정 역할에 맞게 설계되었습니다. 다음은 이러한 서비스 간의 차이점에 대한 확장된 개요입니다.

 **Amazon SQS**는 분산 소프트웨어 시스템 및 구성 요소를 대기열 서비스로 분리 및 확장합니다. 일반적으로 단일 구독자를 통해 메시지를 처리하므로 순서 및 손실 방지가 중요한 워크플로에 적합합니다. 더 광범위한 배포를 위해 Amazon SQS를 Amazon SNS와 통합하면 [팬아웃 메시징 패턴](https://aws.amazon.com/getting-started/hands-on/send-fanout-event-notifications/)이 활성화되어 한 번에 여러 구독자에게 메시지를 효과적으로 푸시할 수 있습니다.

 **Amazon SNS**를 사용하면 게시자가 커뮤니케이션 채널 역할을 하는 주제를 통해 여러 구독자에게 메시지를 보낼 수 있습니다. 구독자는 [Amazon Data Firehose](https://docs.aws.amazon.com/firehose/latest/dev/what-is-this-service.html), [Amazon SQS](#welcome), [Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html), HTTP, 이메일, 모바일 푸시 알림 및 모바일 문자 메시지(SMS)와 같이 지원되는 엔드포인트 유형을 사용하여 게시된 메시지를 수신할 수 있습니다. 이 서비스는 실시간 사용자 참여 또는 경보 시스템과 같이 즉각적인 알림이 필요한 시나리오에 적합합니다. 구독자가 오프라인 상태일 때 메시지 손실을 방지하기 위해 Amazon SNS를 Amazon SQS 대기열 메시지와 통합하면 일관된 전송이 보장됩니다.

 **Amazon MQ**는 [Apache ActiveMQ](http://activemq.apache.org/) 및 [RabbitMQ](https://www.rabbitmq.com/)와 함께 AMQP 및 MQTT와 같은 표준 메시징 프로토콜을 지원하여 기존 메시지 브로커에서 마이그레이션하려는 기업에 가장 적합합니다. 중요한 재구성 없이 안정적이고 신뢰할 수 있는 메시징이 필요한 레거시 시스템과 호환됩니다.

 다음 차트는 각 서비스의 리소스 유형에 대한 개요를 제공합니다.


| 리소스 유형 | Amazon SNS |  Amazon SQS | Amazon MQ | 
| --- | --- | --- | --- | 
| 동기식 | 아니요 | 아니요 | 예 | 
| 비동기식 | 예 | 예 | 예 | 
| Queues | 아니요 | 예 | 예 | 
| 게시자-구독자 메시징 | 예 | 아니요 | 예 | 
| 메시지 브로커 | 아니요 | 아니요 | 예 | 

Amazon SQS와 Amazon SNS는 무제한에 가까운 확장성과 간편한 API를 활용할 수 있는 새로운 애플리케이션에 사용하면 좋습니다. 일반적으로 종량제 요금으로 대용량 애플리케이션에 더욱 비용 효과적인 솔루션을 제공합니다. JMS 등과 같은 API 또는 AMQP(Advanced Message Queuing Protocol), MQTT, OpenWire 및 STOMP(Simple Text Oriented Message Protocol)와 같은 프로토콜과 호환되는 기존 메시지 브로커의 애플리케이션을 마이그레이션할 때에는 Amazon MQ를 사용하면 좋습니다.