AWS 이벤트 계층 설계 SQS, SNS, EventBridge
이 글은 AI가 작성했습니다.
주제 범위
이 문서는 AWS 환경에서 비동기 이벤트/메시징 계층을 설계할 때 SQS, SNS, EventBridge를 어떤 역할로 배치해야 하는지에 초점을 둔다.
단일 서비스 소개가 아니라, 서비스 간 책임 분리와 조합 패턴을 중심으로 정리한다.
한 줄 역할 정의
- SQS: 작업 단위 처리용 큐. 소비자 스케일링과 실패 격리에 최적화된 워크 큐
- SNS: 이벤트 팬아웃용 퍼블리셔. 다수 구독자에게 동일 이벤트를 전달
- EventBridge: 도메인 이벤트 버스. 이벤트 라우팅, 필터링, 계정/리전 간 전달에 특화
계층 관점에서의 위치
이벤트 흐름 레벨
- 도메인에서 사건 발생 (OrderCreated, PaymentFailed 등)
- 이벤트 버스로 전달
- 관심 있는 시스템으로 라우팅
- 각 시스템 내부에서 작업 큐로 처리
이 흐름에서 EventBridge와 SNS는 상위 계층, SQS는 하위 계층에 위치한다.
SQS 설계 관점
사용 목적
- 비동기 작업 처리
- 워커 풀 기반 처리 모델
- 처리 실패 격리 및 재시도
특징 요약
- 소비자 주도 폴링 모델
- Visibility Timeout 기반 중복 제어
- DLQ 기본 제공
- 단일 큐는 단일 책임이 이상적
설계 원칙
- 하나의 큐는 하나의 작업 타입
- 이벤트 전달용으로 직접 사용하지 않음
- Fan-out 요구가 생기면 상위 계층 도입
SNS 설계 관점
사용 목적
- 이벤트 브로드캐스트
- 여러 시스템에 동일 이벤트 전달
특징 요약
- Push 기반 퍼블리시
- 구독자별 프로토콜 분리 가능 (SQS, Lambda, HTTP 등)
- 메시지 포맷 변환은 제한적
설계 원칙
- SNS는 라우터가 아니라 분배기
- 복잡한 조건 분기는 애플리케이션 또는 EventBridge로 이동
- SNS 단독 사용 시 이벤트 스키마 관리 필요
EventBridge 설계 관점
사용 목적
- 도메인 이벤트 버스
- 이벤트 기반 시스템 간 느슨한 결합
- 중앙 라우팅 및 규칙 기반 전달
특징 요약
- 이벤트 스키마 기반 필터링
- 규칙(Rule)으로 타겟 분기
- 계정/리전 간 이벤트 전달 지원
- AWS 서비스 이벤트와 네이티브 통합
설계 원칙
- 도메인 이벤트 중심 설계
- 이벤트 이름과 detail-type은 계약
- 비즈니스 이벤트와 기술 이벤트 분리
Fan-out 패턴 비교
SNS 기반 Fan-out
- 단순하고 비용 효율적
- 모든 구독자가 동일 메시지를 수신
- 조건 분기는 구독자 내부 로직에 의존
EventBridge 기반 Fan-out
- 이벤트 내용 기반 조건 분기 가능
- 팀/도메인 단위 Rule 관리 가능
- 이벤트 버스 중심 거버넌스 가능
권장 조합 패턴
EventBridge → SQS
- 가장 일반적인 이벤트 처리 구조
- 이벤트 라우팅과 작업 처리를 분리
- 각 소비자는 독립적인 처리 속도와 실패 정책 보유
SNS → SQS
- 단순 브로드캐스트 이벤트
- 이벤트 스키마가 안정적이고 조건 분기가 적을 때 적합
EventBridge → SNS → SQS
- 대규모 조직에서 중앙 이벤트 버스 + 팀별 Fan-out 필요 시
- 거버넌스는 EventBridge, 배포 단위는 SNS
언제 무엇을 쓰면 안 되는가
- SQS로 직접 이벤트 버스를 만들지 않는다
- SNS로 복잡한 조건 분기를 구현하지 않는다
- EventBridge를 작업 큐처럼 사용하지 않는다
각 서비스는 책임 범위를 넘기 시작하면 운영 복잡도가 급증한다.
비용 및 운영 관점 요약
- SQS: 요청 기반 과금, 처리량 증가에 선형 확장
- SNS: 퍼블리시 + 전달 횟수 기반 과금
- EventBridge: 이벤트 수 기반 과금, 규칙 수 증가 시 관리 비용 증가
비용보다 중요한 것은 이벤트 흐름 가시성과 장애 격리다.
실무 체크리스트
- 이벤트와 커맨드 구분 여부
- 이벤트 스키마 버전 관리 전략
- DLQ에 쌓인 이벤트의 재처리 방법
- 이벤트 중복 수신 시 멱등성 보장
- 계정/리전 분리 시 전달 경로 명확성
정리
- SQS는 처리 도구
- SNS는 분배 도구
- EventBridge는 이벤트 아키텍처의 중심
AWS 비동기 설계는 단일 서비스 선택 문제가 아니라, 계층 분리 문제다.