반응형
Messaging의 정의와 필요성
- 메시징은 애플리케이션(서비스)간의 통신을 목적으로 한 매개체인 메시지를 주고 받는 것을 의미함
- 주문을 담당하는 애플리케이션과 배송을 담당하는 애플리케이션이 각각 있다면 원활한 서비스 제공을 위해 서로 통신을 해야함
- 주문 애플리케이션과 배송 애플리케이션이 서로 주고 받는 데이터가 바로 메시지
- 주문 애플리케이션과 배송 애플리케이션이 직접 메시지를 주고 받는 것을 동기식 통신이라 부름
- 주문 애플리케이션과 배송 애플리케이션 사이에 매개체(Queue)를 두고 메시지를 주고 받는 것을 비동기식 통신이라 부름
- 주문 / 배송 애플리케이션의 데이터 처리 스펙이 다르다면 통신에 문제가 생길 수 있음, 한쪽이 메시지를 처리하는 동안 다른 한쪽은 그 메시지를 처리하지 못하고 유실할 것임
- 각각의 애플리케이션이 직접 통신하는 것을 방지하고(Decouple) 매개체(Queue)를 통해 메시지를 주고 받는 것이 이러한 문제에 대한 대안이 될 수 있음
- SQS, SNS, Kinesis가 이러한 분리 매개체에 해당함
- SQS : Queue Model
- SNS : Publish/Subscribe Model
- Kinesis : Real-time Streaming Model
Simple Queue Service(SQS)란?
- 애플리케이션간의 직접적 통신이 아닌 Queue(대기열, 큐)를 두어 비동기식 메시징 시스템을 제공하는 서비스
- 메시지 생산자가 생성한 메시지(서비스 요청)를 Queue에 저장하면 메시지 소비자가 이를 소비(수집, Polling)할 수 있음
- AWS 초창기 서비스 중 하나, 2006년 런칭 시작
- 처리량에 제한이 없고 대기열에 있는 메시지 수에 제한이 없는 특징을 지님
- 각 메시지는 최대 256KB의 텍스트로 구성될 수 있음
- 메시지가 대기열에 남아 있는 기간은 기본 4일에서 최대 14일
- 처리되지 않은 서비스는 다시 Queue에 보존되며 다른 소비자가 열람할 수 있음
- 'Polling' 기반 서비스
SQS의 동작 과정
- 메시지 생성(송신) 과정 : 애플리케이션 1(생산자)이 애플리케이션 2(소비자)로 메시지를 보내는 경우, 애플리케이션 1이 SDK(SendMessage API)를 활용해 메시지를 큐에 저장함
- 메시지 소비(수신) 과정 : 애플리케이션 2(소비자)가 Queue를 열어 자신에게 온 메시지를 확인하고 이를 수행함
- 메시지 소비(수신) 과정 : 애플리케이션 2가 SDK(DeleteMessage API)를 활용해 수행한 메시지를 삭제함
Queue(대기열) 유형
- Standard 대기열과 FIFO 대기열로 나뉨
- Standard 대기열 : 표준 서비스로 초당 무제한에 가까운 요청을 처리할 수 있으며 최소 한 번의 메시지를 송신하나 순서가 보장되지 않음
- FIFO 대기열 : 선입선출을 지키는 대기열로 표준 대기열보다 순서가 더 보장되며 송신된 메시지 순으로 수신할 수 있으며, 초당 300개까지 처리 가능하며 중복이 발생하지 않음
중복 전송과 메시지 가시성 시간 제한
- 메시지는 적어도 한 번 전송될 수 있음
- 메시지를 열어볼 수 있는 소비자는 여러 서비스가 될 수 있기 때문에 한 소비자가 메시지 처리가 늦다면 삭제되지 않고 남게 됨
- 삭제되지 않은 메시지를 다른 소비자가 열어보고 처리할 수 있음
- 메시지가 소비자에게 중복 전송되는 결과를 낳음
- Message Visibility Timeout(메시지 가시성 시간 제한)
- 소비자가 메시지를 받고 처리하는 동안 해당 메시지가 다른 소비자에게 보이지 않는 특성, 기본 30초
- 만일 소비자가 메시지를 받고 가시성 시간 제한 내에 메시지를 처리하지 못 한다면 메시지가 Queue에 남고 다른 소비자가 볼 수 있게 되어 중복 전송됨
- 이를 방지하기 위해 소비자는 ChangeMessageVisibilty API를 활용하여 메시지 가시성 시간 제한을 늘릴 수 있음
Long Polling(긴 폴링)
- Queue가 비어있을 때, 소비자가 메시지가 올 때까지 기다리는 것
- 최대 20초까지 설정 가능
- 설정 이유
- Queue에서 대기하며 메시지를 즉각 수신하여 지연시간을 줄임
- API 호출 횟수를 줄여 효율성을 높임
메시지 암호화
- HTTPS API를 이용해 전송 중인 메시지를 암호화할 수 있고, KMS Key를 통해 대기열 메시지를 암호화할 수 있음
- IAM Policy를 이용해 SQS API로의 접근을 통제할 수 있음
'Amazon Web Serivce 자격증 쉽게 공부하기 > AWS Solutions Architect Associate 핵심' 카테고리의 다른 글
SAA-C03 핵심 #18, Decoupling Service, Kinesis (0) | 2023.12.11 |
---|---|
SAA-C03 핵심 #17, Decoupling Service, SNS (0) | 2023.12.10 |
SAA-C03 핵심 #15, IAM (0) | 2023.12.02 |
SAA-C03 핵심 #14, EC2 Auto Scaling (0) | 2023.11.26 |
SAA-C03 핵심 #13, CloudWatch (0) | 2023.11.20 |
댓글