"급격한 트래픽 증가로 인한 성능 저하나 특정 리소스의 장애가 전체 서비스에 미치는 영향을 최소화하려면 어떤 아키텍처를 고려할 수 있을까?"
① 동기식 처리
- 클라이언트에서 요청을 보냈을 때 서버가 처리 후 응답이 돌아와야 다음 동작을 수행 (그동안 클라이언트는 대기)
- 설계가 매우 간단하고 직관적이지만 결과가 주어질 때까지 아무것도 못하고 대기해야한다.
② 비동기식 처리
- 서버에 요청만 보내 놓고 응답이 오는 것과 상관없이 클라이언트는 대기 없이 다음 동작을 수행
- 처리시간이 걸리더라도 그동안 다른 작업을 할 수 있으므로 자원을 효율적으로 사용할 수 있다.
1. Amazon SQS
- 애플리케이션 간 또는 애플리케이션 구성 요소 간의 메시지 전달을 위한 대기열을 제공하는 완전 관리형 메시지 대기열 서비스
- 메시지 손실 위험 없이 소프트웨어 구성 요소 간에 모든 볼륨의 메시지를 전송, 수신 및 저장할 수 있다.
- 서비스가 비동기식으로 작동하는 기능을 제공하고, 급격한 트래픽 발생 시 버퍼의 역할을 수행하며, 느슨하게 결합된 아키텍처를 구현할 수 있다.
(1) 대기열 유형
유형 | 내용 |
Standard Queue |
- 표준 대기열(Standard Queue)은 처리량을 극대화하도록 설계되었기 때문에 수신된 순서대로 메시지가 전송된다고 보장할 수 없다. - 최소 1회 메시지 전송, 즉 각 메시지가 최소한 한 번 전달되도록 하는 기능을 제공한다. (경우에 따라 메시지 중복 처리가 발생할 수 있다.) - 대규모의 메시지 전송과 빠른 트랜잭션 처리가 필요한 상황에 적합하다. |
FIFO Queue |
- FIFO 대기열(First-In-First-Out Queue)은 메시지가 수신되는 순서에 따라 전송한다. (정확한 순서 보존) - 정확히 1회 처리(Exactly-Once Processing), 즉 각 메시지가 한 번 전달되어 소비자에 의해 처리된다. (중복 처리 X) - 표준 대기열에 비해 처리속도가 느리고(초당 API 호출 건수에 제한) 상대적으로 가격이 높다. |
(2) SQS 기능
=> SQS 활용 시 설정해야 하는 주요 기능에는 가시성 제한시간, 긴 폴링 등이 있다.
① 가시성 제한 시간
- 소비자 애플리케이션이 대기열에서 메시지를 폴링하고 처리하는 동안에도 메시지는 계속 대기열에 남아 있으며, 자동삭제가 되지 않아 처리 후 삭제해야 한다.
- 가시성 제한 시간 또는 표시 제한 시간이란 한 소비자가 특정 메시지를 폴링하여 처리하는 동안 다른 소비자가 해당 메시지를 폴링하여 중복 처리하지 못하게 하기 위한 기간을 의미한다. (기본 제한 시간은 30초, 최대 12시간 이내 조정)
② 긴 폴링
- SQS 비용은 메시지 수와 메시지 사이즈에 의해 결정되지만 요청 비용도 추가로 발생한다.
- 짧은 폴링을 사용할 경우 메시지 큐가 비어 있는 경우에도 메시지를 반환한다.
- 긴 폴링은 응답을 전송하기 전에 SQS가 대기열에서 메시지를 사용할 수 있을 때까지 대기시켜 빈 응답을 줄이므로 비용을 절감할 수 있다. (최대 대기시간 20초)
2. Amazon SNS
- Simple Notification Service
- 게시자(Publisher)에서 구독자(Subcriber)로 메시지를 전송하는 완전 관리형 메시징 서비스
- 푸시 기반의 일대다 메시징을 위한 주제(Topics)를 제공하여 게시자 시스템은 병렬 처리를 위해 다양한 구독자 시스템(Lambda, SQS 등)으로 메시지를 팬아웃(Fan-Out)하는 방식
- SMS, 모바일 푸시 및 이메일을 통해 대규모로 사용자에게 메시지를 전송할 수 있다.
(1) AWS SQS vs AWS SNS
AWS SQS | AWS SNS | |
생산자와 소비자 | 송신과 수신 | 게시와 구독 |
배포 | 1:1 (Decouple) | 1:N (Fan out) |
전송 방식 | Pull (Polling) | Push |
메시지 지속성 | 유지 (보존기간 1분 ~ 14일) | 실패 시 재시도 후 삭제 |
예시 | - 메시지 순차적 처리할 때 - 일정 간격으로 메시지를 가져와 처리할 때 - 결제처리, 배치 처리 시스템 |
- 실시간 알림이나 이벤트 기반 처리 - 실시간 알림 시스템, 모바일 앱 푸시 알림 |
(2) 아키텍처 구성
=> 비동기식 병렬 처리
(3) 비즈니스 활용
=> 애플리케이션 다음 버전 작업 개발 데이터 활용 / 주문 우선순위 따라 처리 / 주문정보 분석하여 마케팅 활용
'클라우드 서비스' 카테고리의 다른 글
[클라우드 서비스] Automation _20241206 (0) | 2024.12.09 |
---|---|
[클라우드 서비스] Serverless _ 20241205 (2) | 2024.12.09 |
[클라우드 서비스] Elasticity & HA _ 20241205 (2) | 2024.12.08 |
[클라우드 서비스] Microservices_20241205 (1) | 2024.12.08 |
[클라우드 서비스] Database Service _ 20241204 (2) | 2024.12.06 |