-
AWS SQS vs SNS vs EventBridgeAWS 2023. 5. 2. 00:01
개요
Event Driven Architecture 구조를 가져가기 위해 자료조사를 해보았을 때 SQS, SNS EventBridge에 대한 개념들이 보여서 이들을 정리해보고자 합니다.
SNS란?
Simple Notification Servier의 약자입니다.
구독 중인 Service 또는 사용자에 메시지를 전달, 전송을 관리하는 알림 서비스입니다.
애플리케이션, 서비스 및 시스템이 구독자 또는 엔드포인트로 메시지를 보낼 수 있게 합니다.
SNS는 pub/sub 메시징 모델로 발신자가 토픽에 메시지를 게시하고 구독자가 이러한 토픽에서 메시지를 받습니다.
HTTP, HTTPS, 이메일, SNS, Lambda 및 모바일 푸시를 포함한 다양한 메시징 프로토콜을 지원합니다.
분산 애플리케이션, 이벤트 기반 아키텍처 및 모바일 애플리케이션을 구축하는데 이상적인 솔루션입니다.
신뢰성 있는 메시지 전달을 보장하는 고가용성 및 내구성 있는 서비스로 메시징 필터링을 통해 구독자는 관심 있는 메시지만 수신하여 메시지 오버헤드를 줄이고 성능을 향상할 수 있습니다.
SQS, Lambda, EC2와 함께 사용하여 이벤트 기반 아키텍처를 쉽게 생성할 수 있습니다.
SQS란?
Simple Queue Service의 약자입니다.
애플리케이션 간의 메시지를 전달하기 위한 간단한 Queue이며 dead-letter queue, 표준대기열, FIFO 대기열을 지원하고 있습니다.
표준 대기열: 메시지의 순서보장을 하지 않으며 메시지가 한번 이상 전달될 수 있다. (초당 거의 무제한 호출)
FIFO 대기열: 선입선출 전달과 메시지 정확히 한번 전달 (초당 최대 3,000건 호출)
Dead-Letter Queue(DLQ): consumer에게 배달되지 못한 메시지를 캡처하여 저장하여 애플리케이션의 복원력 및 내구성 보장
보기 제한 시간: 메시지를 받은 뒤 특정 시간 동안 동일한 메시지를 다른 곳에서 꺼내 볼 수 없도록 제한하는 시간
지연전송: 특정 시간 동안 메시지를 받지 못하게 만드는 기능
짧은 폴링: 메시지가 있으면 가져오고 없으면 그대로 빠져나옴
긴 폴링: 메시지가 있으면 가져오고 없으면 올 때까지 제한시간까지 기다림
일반적인 Message Queue와의 차이점
SNS는 메시지 전송 옵션에 대한 유연성을 제공하며 다른 AWS 서비스와 잘 통합됩니다.
카프카는 대용량의 데이터를 처리하는데 최적화된 분산 스트리밍 플랫폼입니다.
AWS SQS와 MQ를 비교해 보면 SQS는 단순하게 Queue만 지원하고 topic은 지원하지 않습니다 이에 따라 SNS와 함께 활용합니다.
하지만 MQ는 queue, toipc 등 풍부한 기능을 제공합니다.
SQS의 장점이라면 초당 호출수가 제한이 없는 점이 큰 장점으로 느껴집니다.
일반적인 Amazon SNS 시나리오
사용자는 제품에 대한 주문이 생성될 때 SNS 주제에 메시지를 전송하는 애플리케이션을 개발할 수 있습니다.
그러면 해당 SNS 주제를 구독하는 SQS 대기열은 새 주문에 대해 동일한 알림을 수신합니다.
SQS 대기열 중 하나에 연결된 Amazon Elastic Compute Cloud(Amazon EC2) 서버 인스턴스는 주문 처리 또는 이행을 처리할 수 있습니다.
EventBridge와 SNS 차이
AWS SNS와 유사한 EventBridge입니다.
여러 가지 차이점들이 존재하지만 대표적으로 EventBridge는 FIFO를 지원하지 않아 FIFO 토픽을 사용하고 싶다면 SNS를 사용해야 할 것 같습니다.
처리량이 많거나 대기 시간이 짧은 메시지에 반응하는 애플리케이션에는 SNS를 사용하는 것이 좋습니다.
참고자료
https://docs.aws.amazon.com/ko_kr/sns/latest/dg/welcome.html
https://docs.aws.amazon.com/ko_kr/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html
'AWS' 카테고리의 다른 글
AWS VPC란? (0) 2023.05.23 AWS MFA 설정 (0) 2023.05.05 [AWS] CloudFront와 S3 연결하기[이론편] (0) 2023.02.02 [AWS] AWS MediaConvert Jobtemplate Kotlin SDK 적용 (0) 2022.12.25 [AWS] MediaConvert createJob Kotlin SDK 적용 (0) 2022.12.24