서론: Integration & Messaging
AWS의 통합 & 메시징 서비스인 SQS, SNS, Kinesis는 분산 시스템 간 비동기 통신과 데이터 스트림 처리를 가능하게 해주는 서비스이다.
주로 미들웨어로 합동 작업을 하는 방법에는 두가지가 있다.
왼쪽의 동기 컴뮤니케이션이 보통 사용하는 방식이라면 SQS, SNS, Kinesis는 오른쪽과 같이 비동기/이벤트 기반 통신이다.
SQS의 종류와 역할
SQS는 시스템 간에 메시지를 비동기적으로 전달하기 위해 주로 사용된다.
Producer-Consumer 구조로 이루어져 있는데, Producer가 큐에 메시지를 넣고 Consumer 가 직접 순서대로 꺼내에서 처리를 한다.
SQS에는 다양한 타입들이 존재한다.
1. Standard Queue
애플리케이션을 Decouple(분리)하는데 사용된다.
특징:
a. 무제한 처리량을 얻을 수 있다.
b. 메시지는 기본 4일에서 14까지 보존 가능
c. 메시지는 최대 257KB
SQS - Producing Messages: SDK를 통해 SQS에 메시지를 보낸다.
SQS - Consuming Messages: AWS가상 서버 혹은 온프레미스에서 실행되는 애플리케이션이다.
SQS- Multi EC2 인스턴스 Consumer
a. 여러개의 소비자가 있을 수 있다.
b. 각 컨슈머는 poll을 통해 메시지를 받고 처리속도가 충분하지 않으면 다른 컨슈머로 보내진다.
c. 이 방식은 Best-Effort Messaging Ordering -> 최선의 방식이다.
SQS - Auto Scaling Group SQS
a. 컨슈머가 ASG내부에서 인스턴스를 실행하고 메시지를 풀링
b. Clou Watch Metric - Queue Length - ApproximateNumberOfMessages 라는 지표를 바탕으로 Consumer를 ASG에서 자동 Scaling을 진행한다.
2. Security
a. Https API를 통한 전송 중 암호화
b. KMS키 활용한 메시지 암호화
c. 클라이언트 측 암호화도 가능
3. SQS - Message Visibility Timeout
Consumer가 Mesage를 polling하면 다른 Consumer들에게는 해당 메시지가 보이지 않게 하는 것
Visibility Timeout - 30초동안 메시지가 처리되어야 한다.
이유: 하나의 메시지가 여러번씩 처리되거나 다시 처리 되는 시간을 조정하기 위함
때문에 ChangeMessageVisibility API를 통해 시간을 알맞게 조정하는 것이 중요하다.
4. SQS - FIFO Queue
FIFO(First In First Out)을 지킴으로써 Standard queue 보다 순차처리를 훨씬 보장해준다.
다만, 처리량에는 제한이 있음
SQS 사용 시나리오 및 패턴
[시나리오]
Black Friday를 맞아 고객들이 한꺼번에 주문을 요청하면서 DB에 무수히 많은 Transaction이 요청
많은 Transaction으로 인해 데이터 유실이 발생한다.
[해결 방법]
Insert가 되는 DB에서 SQS를 Buffer로 사용하여 순차적으로 처리, 즉 무한히 확장 가능한 SQS 큐에 트랜잭션을
저장하여 백엔드 서버 ASG그룹에서 하나씩 Polling하여 진행
참고자료
'AWS' 카테고리의 다른 글
AWS Container: ECS, Fargate 이해하기 (0) | 2025.05.03 |
---|---|
AWS 통합&메시징: SNS란 무엇이고 언제 사용해야하는가 (1) | 2025.05.02 |
AWS Cloudfront와 CDN 이해하기 (0) | 2025.04.14 |
Classic Solution Architecture 비교하며 이해하기(AWS) (1) | 2025.04.09 |
AWS ASG(Auto Scaling Group) 파헤치기 (0) | 2025.04.07 |