이번 장은 메시징과 이벤트 아키텍처를 다룬다.
서비스들이 서로 직접 호출하면, 하나가 느려지거나 죽으면 전체가 영향을 받는다.
메시징은 서비스 사이에 완충재를 두어 느슨하게(decoupled) 연결한다.
이 장의 목표는 다음과 같다.
- 큐와 발행/구독의 차이를 안다.
- SQS, SNS, EventBridge, Kinesis의 용도를 구분한다.
1. SQS — 큐
SQS(Simple Queue Service)는 메시지를 줄 세우는 큐다.
- 생산자가 메시지를 큐에 넣고, 소비자가 하나씩 꺼내 처리한다.
- 소비자가 바빠도 메시지는 큐에 안전하게 대기한다.
- 트래픽이 몰려도 큐가 완충 역할을 해 뒷단이 무너지지 않는다.
주문 처리, 이미지 변환 같은 비동기 작업에 잘 맞는다.
2. SNS — 발행/구독
SNS(Simple Notification Service)는 발행/구독(pub/sub) 방식이다.
- 발행자가 주제(topic)에 메시지를 한 번 보내면,
- 구독한 모든 대상에게 동시에 전달된다.
하나의 이벤트를 여러 곳(이메일, Lambda, SQS)에 팬아웃할 때 쓴다.
흔한 패턴은 SNS → 여러 SQS로, 발행 하나가 여러 큐로 퍼진다.
3. EventBridge — 이벤트 버스
EventBridge는 이벤트 버스이자 스케줄러다.
- AWS 서비스, SaaS, 내 앱의 이벤트를 받아 규칙에 따라 라우팅한다.
- "이런 이벤트가 오면 저 Lambda를 실행하라" 같은 규칙을 만든다.
- cron 스케줄로 주기 작업도 돌린다. (예: 매일 새벽 정산)
서비스 간 이벤트 연결을 규칙 기반으로 관리할 때 강력하다.
4. Kinesis — 실시간 스트리밍
Kinesis는 대량의 실시간 데이터 스트림을 다룬다.
- 로그, 클릭스트림, IoT 센서 데이터처럼 끊임없이 쏟아지는 데이터를 수집·처리한다.
- 여러 소비자가 같은 스트림을 순서대로 읽을 수 있다.
SQS가 "작업 큐"라면 Kinesis는 "데이터 강물"에 가깝다.
5. 무엇을 언제 쓰나
| 서비스 | 모델 | 적합 |
|---|---|---|
| SQS | 큐(1:1 소비) | 비동기 작업 처리 |
| SNS | 발행/구독(팬아웃) | 알림·다중 전달 |
| EventBridge | 이벤트 버스 | 이벤트 라우팅·스케줄 |
| Kinesis | 스트리밍 | 실시간 대량 데이터 |
정리
- 메시징은 서비스를 느슨하게 연결해 장애 전파와 부하 폭주를 막는다.
- SQS=큐, SNS=팬아웃, EventBridge=이벤트 라우팅, Kinesis=실시간 스트림.
- 이들을 조합해 확장성 있는 이벤트 기반 아키텍처를 만든다.
다음 장에서는 이렇게 모인 데이터를 분석하는 서비스를 다룬다.
댓글 0
댓글은 운영자만 작성할 수 있어요.