소품집

[KT AIVLE] AWS 메세징 서비스 - SQS & SNS 본문

AI/KT 에이블스쿨

[KT AIVLE] AWS 메세징 서비스 - SQS & SNS

sodayeong 2022. 10. 24. 09:10

느슨한 결합 아키텍처에 대하여

동기식 처리

- 클라이언트에서 요청을 보냈을 때 서버가 처리 후, 응답을 받은 뒤에 다음 동작을 수행함

- 설계가 간단하고 직관적이지만 응답을 받기 전까진 대기 상태로 유지하는 단점이 있음

 

비동기식 처리 

- 비동기 방식은 서버에 요청을 보내고 응답 여부와 상관 없이 클라이언트는 대기 없이 다음 동작을 수행함

- 설계가 동기식 처리보단 복잡하지만, 응답 여부와 상관 없이 다음 동작을 수행하기 때문에 자원을 효율적으로 사용할 수 있음

 

 

SQS (Simple Queue Service)란?

운영하는 서비스의 규모가 커질수록 요청하는 기능을 정확하게 처리하는게 중요해지고 있으며, 서버들끼리 주고받는 메세지를 SQS는 서버들끼리 주고받는 메세지 처리를 정확하게 수행해줌. 

 

- 시스템이 처리해야할 To-Do List

- 어플리케이션 간 비동기 처리를 도움

- 서버들끼리 사용할 수 있는 메세지 큐를 제공하는 서비스

- 해야할 일을 나중에 처리 or 다른 시스템이 처리할 수 있도록 하기위한 비동기 메세징 서비스

- 따라서, 느슨하게 결합된 아키텍처 구현이 가능해짐 

 

대기열 유형

저렴한 가격으로 대규모 트래픽의 빠른 처리를 위한 표준 대기열(Standard Queue) 

- 표준 대기열은 Throughput을 극대화 하기 위해서 순서 보장을 하지 않음

- 대규모 메세지의 전송과 빠른 트랜잭션 처리가 필요한 상황에 적합함

(장점) 최소 1회 전달 보장(At-Least-Once-Delivery), 단 중복 수신이 될 수 있음

(단점) 메세지 순서 보장이 안되고, 반드시 한 번만 읽기가 보장되지 않음

 

작업 및 이벤트 순서가 중요하거나 중복이 허용되지 않는 경우를 위한 FIFO 대기열(First in First Out Quene)

- FIFO 대기열은 들어온 순서대로 처리 됨

(장점) 메세지 순서를 보장함 / 중복수신을 방지함 

(단점) 순서를 위해 느린 성능

 

 

SQS 기능

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

 

 

가시성 제한

- 가시성 제한 시간이란 다른 소비자가 메세지를 수신하여 중복 처리하지 못하게 하기 위한 기간 설정을 의미

- 소비자가 대기열에서 메세지를 수신하고 처리하는 동안 메세지는 계속 대기열에 남아 있고, 처리 후 삭제해야함 (자동삭제X)

 

 

긴 폴링

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

- 기본 설정인 짧은 폴링을 사용할 경우 메시지 큐가 비어 있는 경우에도 메시지를 반환함

- 긴 폴링을 사용하면 응답을 전송하기 전에 SQS가 대기열에서 메시지를 사용할 수 있을 때 까지 대기시켜 빈 응답을 줄이므로 SQS 사용 비용을 절감할 수 있음

 

비즈니스 활용 사례

- $500 이상의 모든 주문을 우선순위로 처리하기로 결정했으면, 새로운 "우선순위 주문" 대기열을 도입해 메시지가 "표준 주문" 대기열의 메세지보다 먼저 처리되도록 설계

- 웹 애플리케이션이나 처리 노드에는 주문이 전송되는 대상 대기열 외에 변경사항이 없으므로 주문 처리 방식이나 애플리케이션에 큰 영향을 주지않고 구현할 수 있음

 

 

Amazon SNS

- 구독중인 서비스 또는 사용자에게 메세지를 전달, 전송을 조정 및 관리하는 웹서비스로 알림 서비스임

- SNS 구독자는 승인을 해야 정보를 받아볼 수 있음

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

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

 

 

 

 

 

참조

https://devocean.sk.com/blog/techBoardDetail.do?ID=163290 

 

AWS SQS (Simple Queue Service) 정리 (연재#1)

 

devocean.sk.com

 

728x90
Comments