아키텍처를 "견고하고 확장 가능하게" 만드는 방법을 묻는 질문에서 정답의 핵심 키워드는 바로 "디커플링(Decoupling, 분리)"입니다.
애플리케이션의 각 구성요소가 서로 꽉 맞물려 있다면, 한 부분이 느려지거나 장애가 날 때 시스템 전체가 멈춰버립니다.
이 문제를 해결하기 위해 AWS는 메시지 기반의 디커플링 서비스를 제공합니다: SQS, SNS, EventBridge.
SQS는 가장 기본이 되는 메시지 큐 서비스입니다.
핵심 비유: "주문이 밀려드는 식당의 주문서 대기열"
핵심 개념:
SAA 문제 (Standard vs. FIFO)
.fifo로 끝나야 합니다.)SAA 키워드:
- "애플리케이션의 작업을 분리하여..."
- "Consumer의 처리 속도와 관계없이 요청을 안전하게 저장..."
- "데이터베이스 쓰기 작업을 비동기적으로 처리..."
- "순서가 중요하고 중복 처리가 안되는 금융 거래..." (→ FIFO)
SNS는 게시/구독(Pub/Sub) 모델을 따르는 알림 서비스입니다.
핵심 비유: "라디오 방송국" 또는 "그룹 확성기"
핵심 개념:
SAA 단골 아키텍처 (SNS + SQS = 안정적인 팬아웃)
SAA 키워드:
- "하나의 이벤트를 여러 하위 시스템으로 동시에 전송..." (→ Fan-Out)
- "사용자에게 이메일 또는 SMS 알림을 보내야 함..."
- "여러 마이크로서비스가 동일한 이벤트에 대해 반응해야 함..."
- "SQS와 결합하여 안정적인 팬아웃 패턴을 구현..."
EventBridge는 SAA 아키텍처의 꽃, 이벤트 기반 아키텍처(EDA)의 핵심입니다. (이전에는 CloudWatch Events라고 불렸습니다.)
핵심 비유: "똑똑한 중앙 이벤트 관제 센터"
핵심 개념:
{"source": "order.service", "detail": {"status": "shipped", "region": "ap-northeast-2"}} 이벤트가 발생하면, {"region": "ap-northeast-2"} 규칙을 가진 타겟만 이벤트를 받음)SAA 키워드:
- "이벤트 기반 아키텍처(EDA)를 구성..."
- "다양한 AWS 서비스에서 발생하는 이벤트에 대응..."
- "이벤트의 내용(콘텐츠)을 기반으로 필터링하여..."
- "SaaS 애플리케이션(예: Zendesk, Datadog)과 통합..."
- "여러 부서가 자신이 관심 있는 이벤트만 구독..."
| 구분 | SQS (Simple Queue Service) | SNS (Simple Notification Service) | EventBridge |
|---|---|---|---|
| 핵심 비유 | 작업 대기열 (Queue) | 확성기 (Megaphone) | 스마트 라우터 (Router) |
| 패턴 | 1:1 (Producer -> Consumer) | 1:N (Publisher -> Subscribers) | N:M (Sources -> Targets) |
| 전달 방식 | Pull (Consumer가 가져감) | Push (구독자에게 밀어줌) | Push (규칙에 맞는 타겟으로) |
| 필터링 | 없음 (모든 메시지 순차 처리) | 없음 (토픽 구독자 전체) | 콘텐츠 기반 필터링 (Rule) |
| SAA 핵심 | 디커플링, 내구성, FIFO | 팬아웃(Fan-Out), 알림 | 이벤트 기반 아키텍처(EDA) |