SQS
- SQS 의 핵심은 대기열 -> SQS 는 간단한 대기 서비스
- 대기열에는 메세지를 포함하며, 메세지를 담기 위해서는 무언가 SQS 대기열에 메세지를 전송해야 하는데 SQS 대기열에 메세지를 보내는 주체를 생산자라고 한다.
- 생산자는 한 개일 수도 그 이상일 수도 있다. + 여러 생산자가 여러 개의 메세지를 SQS 대기열에 보내게 할 수 있다.
- 생성한 모든 메세지는 대기열에 들어가며, 그런 다음 대기열에서 메세지를 처리하고 수신해야 하는 대상을 소비자라고 하는데, 소비자는 대기열에서 메세지를 폴링하는데 이는 대기열에게 소비자 앞으로 온 메세지가 있는지를 물어보는 것 이다.
- 만일 대기열에 메세지가 있으면 소비자는 이 메세지를 폴링하여 정보를 얻는다.
- 그리고 그 메세지로 처리를 하고 대기열에서 메세지를 삭제한다.
-> 여러 소비자가 SQS 대기열에서 메세지를 소비할 수 있도록 할 수도 있다. - 대기열 서비스는 생산자와 소비자 사이를 분리하는 버퍼 역할을 한다
Amazon SQS - Standard Queue
- 완전 관리형 서비스이며 애플리케이션을 분리하는데 사용된다.
- 무제한 처리량을 얻을 수 있어, 초당 원하는 만큼 메세지를 보낼 수 있고, 대기열에도 원하는 만큼 메세지를 포함시킬 수 있다.
- 처리량에 제한이 없고 대기열에 있는 메세지 수에도 제한이 없다.
- 각 메세지는 수명이 짧다 -> 메세지는 기본 값으로 4일 동안 대기열에 남아있고, 대기열에 있을 수 있는 최대 시간은 14일이다.
-> 즉, 대기열에 메세지를 보내자마자 소비자가 읽고 해당 보존 기간 내에 처리한 후 대기열에서 삭제해야 한다. - 지연 시간이 짧아 SQS 는 메세지를 보내거나 SQS 에서 메세지를 읽을 때 마다, 게시 및 수신 시 10밀리초 이내로 매우 빠르게 응답을 받게 되며, SQS 의 메세지는 작아야 한다.
- 즉, 전송된 메세지당 256KB 미만이어야 한다.
- SQS 는 대기열 서비스이므로 높은 처리량, 높은 볼륨 등이 있어서 중복 메세지가 있을 수 있다.
SQS - Producing Messages (생산자)
- 최대 256KB 의 메세지가 생산자에 의해 SQS 로 전송되는데, 생산자는 SDK 소프트웨어 개발 키트를 사용하여 SQS 에 메세지를 보낼 것이다. ( SQS 에 Message 를 보내는 API 를 SendMessage 라고 한다.)
- 메세지가 작성되면, 소비자가 해당 메세지를 읽고 삭제할 때까지 SQS 대기열에 유지된다. 메세지가 삭제 됐다는 것은 메세지가 처리됐다는 뜻이다.
- 메세지의 생성의 어떨 때 사용할까?
- 예를 들어 패킷과 같은 오더를 처리한 다음 센터로 배송하려고 한다.
- 따라서 원하는 시간에 이 작업을 수행하여 오더 ID, 고객 ID 와 원하는 속성 등의 일부 정보가 포함된 메세지를 SQS 대기열로 보내는데, 주소도 원하는 속성에 들어갈 수 있을 것이다.
- 그러면 애플리케이션 권한에 있는 소비자는 해당 메세지 자체를 처리해야 하는데, 표준 SQS 는 무제한 처리량을 자랑한다.
SQS - Consuming Messages
- 소비자는 일부 코드로 작성해야 하는 애플리케이션이고, 이러한 애플리케이션은 EC2 인스턴스 즉, AWS 상의 가상 서버에서 실행될 수 있다.
- 원하는 경우 자체 온프레미스 서버에서 실행할 수도 있고, AWS Lambda 에서도 실행할 수 도 있다.
- 대기열에는 소비자가 있고, 소비자는 SQS 메세지를 폴링하는데, 즉, 소비자가 대기열에 자신의 앞으로 온 메세지가 있는지를 묻는다.
- 그리고 소비자는 한번에 최대 10개의 메세지를 받을 것이다.
- SQS 대기열에 메세지가 있으면, '여기 너를 기다리는 메세지가 있어' 라는 유효한 응답을 받을 것이다.
- 소비자는 이 메세지들을 처리할 책임이 있다. RDS DB 에 오더를 입력하는 경우를 생각해보면, 즉 각 오더들은 RDS DB 에 삽입하면 이 메세지들이 수신되어 처리됐기 때문에 RDS DB 로 삽입된다.
- 그러면 소비자가 이 메세지들을 DeleteMessage API 로 대기열에서 삭제한다.
- 이를 확장해 보면 여러 소비자를 동시에 가질 수 있는데, SQS 대기열은 메세지를 동시에 수신하고 처리할 소비자를 여러 개 가질 수 있다.
'AWS' 카테고리의 다른 글
AWS MQ (0) | 2024.10.25 |
---|---|
AWS Kinesis 란? (0) | 2024.10.25 |
Hybrid Cloud for Storage (0) | 2024.10.22 |
What is Amazon FSx? (0) | 2024.10.21 |
What is Global Accelerator? (2) | 2024.10.21 |