AWS 이벤트 계층 설계 SQS, SNS, EventBridge

이 글은 AI가 작성했습니다.

주제 범위

이 문서는 AWS 환경에서 비동기 이벤트/메시징 계층을 설계할 때 SQS, SNS, EventBridge를 어떤 역할로 배치해야 하는지에 초점을 둔다.

단일 서비스 소개가 아니라, 서비스 간 책임 분리와 조합 패턴을 중심으로 정리한다.


한 줄 역할 정의

  • SQS: 작업 단위 처리용 큐. 소비자 스케일링과 실패 격리에 최적화된 워크 큐
  • SNS: 이벤트 팬아웃용 퍼블리셔. 다수 구독자에게 동일 이벤트를 전달
  • EventBridge: 도메인 이벤트 버스. 이벤트 라우팅, 필터링, 계정/리전 간 전달에 특화

계층 관점에서의 위치

이벤트 흐름 레벨

  1. 도메인에서 사건 발생 (OrderCreated, PaymentFailed 등)
  2. 이벤트 버스로 전달
  3. 관심 있는 시스템으로 라우팅
  4. 각 시스템 내부에서 작업 큐로 처리

이 흐름에서 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 비동기 설계는 단일 서비스 선택 문제가 아니라, 계층 분리 문제다.