본문 바로가기
클라우드 서비스

[클라우드 서비스] Loosely Coupled Arch. _ 20241205

by 황오독 2024. 12. 8.

"급격한 트래픽 증가로 인한 성능 저하나 특정 리소스의 장애가 전체 서비스에 미치는 영향을 최소화하려면 어떤 아키텍처를 고려할 수 있을까?"

 

① 동기식 처리

- 클라이언트에서 요청을 보냈을 때 서버가 처리 후 응답이 돌아와야 다음 동작을 수행 (그동안 클라이언트는 대기)

- 설계가 매우 간단하고 직관적이지만 결과가 주어질 때까지 아무것도 못하고 대기해야한다.

 

② 비동기식 처리

- 서버에 요청만 보내 놓고 응답이 오는 것과 상관없이 클라이언트는 대기 없이 다음 동작을 수행

- 처리시간이 걸리더라도 그동안 다른 작업을 할 수 있으므로 자원을 효율적으로 사용할 수 있다.

 

출처 : AWS

 

1. Amazon SQS

- 애플리케이션 간 또는 애플리케이션 구성 요소 간의 메시지 전달을 위한 대기열을 제공하는 완전 관리형 메시지 대기열 서비스

- 메시지 손실 위험 없이 소프트웨어 구성 요소 간에 모든 볼륨의 메시지를 전송, 수신 및 저장할 수 있다.

- 서비스가 비동기식으로 작동하는 기능을 제공하고, 급격한 트래픽 발생 시 버퍼의 역할을 수행하며, 느슨하게 결합된 아키텍처를 구현할 수 있다.

 

(1) 대기열 유형

https://www.bitslovers.com/sqs-fifo/

유형 내용
Standard
Queue
- 표준 대기열(Standard Queue)은 처리량을 극대화하도록 설계되었기 때문에 수신된 순서대로 메시지가 전송된다고 보장할 수 없다.
- 최소 1회 메시지 전송, 즉 각 메시지가 최소한 한 번 전달되도록 하는 기능을 제공한다.
(경우에 따라 메시지 중복 처리가 발생할 수 있다.)
- 대규모의 메시지 전송과 빠른 트랜잭션 처리가 필요한 상황에 적합하다.
FIFO
Queue
- FIFO 대기열(First-In-First-Out Queue)은 메시지가 수신되는 순서에 따라 전송한다. (정확한 순서 보존)
- 정확히 1회 처리(Exactly-Once Processing), 즉 각 메시지가 한 번 전달되어 소비자에 의해 처리된다. (중복 처리 X)
- 표준 대기열에 비해 처리속도가 느리고(초당 API 호출 건수에 제한) 상대적으로 가격이 높다.

 

(2) SQS 기능

=> SQS 활용 시 설정해야 하는 주요 기능에는 가시성 제한시간, 긴 폴링 등이 있다.

 

① 가시성 제한 시간

- 소비자 애플리케이션이 대기열에서 메시지를 폴링하고 처리하는 동안에도 메시지는 계속 대기열에 남아 있으며, 자동삭제가 되지 않아 처리 후 삭제해야 한다.

- 가시성 제한 시간 또는 표시 제한 시간이란 한 소비자가 특정 메시지를 폴링하여 처리하는 동안 다른 소비자가 해당 메시지를 폴링하여 중복 처리하지 못하게 하기 위한 기간을 의미한다. (기본 제한 시간은 30초, 최대 12시간 이내 조정)

 

② 긴 폴링

https://blog.awsfundamentals.com/sqs-pricing

- SQS 비용은 메시지 수와 메시지 사이즈에 의해 결정되지만 요청 비용도 추가로 발생한다.

- 짧은 폴링을 사용할  경우 메시지 큐가 비어 있는 경우에도 메시지를 반환한다.

- 긴 폴링은 응답을 전송하기 전에 SQS가 대기열에서 메시지를 사용할 수 있을 때까지 대기시켜 빈 응답을 줄이므로 비용을 절감할 수 있다. (최대 대기시간 20초)

 

2. Amazon SNS

- Simple Notification Service

- 게시자(Publisher)에서 구독자(Subcriber)로 메시지를 전송하는 완전 관리형 메시징 서비스

- 푸시 기반의 일대다 메시징을 위한 주제(Topics)를 제공하여 게시자 시스템은 병렬 처리를 위해 다양한 구독자 시스템(Lambda, SQS 등)으로 메시지를 팬아웃(Fan-Out)하는 방식

- SMS, 모바일 푸시 및 이메일을 통해 대규모로 사용자에게 메시지를 전송할 수 있다.

출처 : AWS

 

(1) AWS SQS vs AWS SNS

  AWS SQS AWS SNS
생산자와 소비자 송신과 수신 게시와 구독
배포 1:1 (Decouple) 1:N (Fan out)
전송 방식 Pull (Polling) Push
메시지 지속성 유지 (보존기간 1분 ~ 14일) 실패 시 재시도 후 삭제
예시 - 메시지 순차적 처리할 때
- 일정 간격으로 메시지를 가져와 처리할 때
- 결제처리, 배치 처리 시스템
- 실시간 알림이나 이벤트 기반 처리
- 실시간 알림 시스템, 모바일 앱 푸시 알림

 

(2) 아키텍처 구성

https://medium.com/awesome-cloud/aws-difference-between-sqs-and-sns-61a397bf76c5

=> 비동기식 병렬 처리

 

(3) 비즈니스 활용

https://aws.amazon.com/ko/what-is/enterprise-service-bus/

=> 애플리케이션 다음 버전 작업 개발 데이터 활용 / 주문 우선순위 따라 처리 / 주문정보 분석하여 마케팅 활용