📚 AWS 디커플링 서비스
1️. 디커플링(Decoupling) 핵심 개념
💡 디커플링 = 시스템 구성 요소 간 의존성을 낮추는 설계 방식
디커플링의 목적
- 시스템 유연성 증가
- 확장성(Scalability) 향상
- 장애 발생 시 영향 범위 최소화
결합도 개념
🔒 Tight Coupling
- 구성 요소 간 강한 의존성
- 하나의 변경 → 전체 시스템 영향
- 확장·변경 어려움
🔓 Loose Coupling
- 구성 요소 간 낮은 의존성
- 개별 요소 독립적 변경 가능
- 안정적이고 확장 용이
2️. Amazon SQS (Queue 기반 디커플링)
📦 하나의 메시지를 한 번만 처리하는 큐 서비스
핵심 특징
- 메시지 임시 저장 (최대 14일)
- Consumer가 Polling 방식(PULL) 으로 처리
- 처리 완료 시 메시지 삭제
- 실패 시 메시지 재전달
SQS Queue 종류
Standard Queue
- 순서 보장 ❌
- 중복 전달 가능
- At-Least-Once Delivery
FIFO Queue
- 순서 보장 ✅
- 중복 제거 ✅
- Exactly-Once Delivery
.fifo접미사 필수
SQS 주요 개념
- Producer / Consumer
- Visibility Timeout
- Dead Letter Queue (DLQ)
- Message Group ID
- Deduplication ID
3️. Amazon SQS 활용 구조
🔄 비동기 작업 처리 & 트래픽 완충
활용 패턴
- 트래픽 급증 시 버퍼 역할
- Auto Scaling과 결합
- 이미지 처리, 배치 작업, 비동기 처리
4️. Amazon SNS (Pub/Sub 기반 디커플링)
📢 하나의 메시지를 여러 구독자에게 동시에 전달
핵심 특징
- PUSH 방식
- Fan-Out 구조
- 메시지 저장 ❌ (Standard)
- Topic 기반 Pub/Sub
SNS 구성 요소
- Topic
- Publisher
- Subscriber
- Subscription
- Message
- Access Policy
SNS 활용 예
- 알림 시스템
- 이벤트 브로드캐스트
- 다중 처리 로직 분리
5️. Amazon SNS + SQS 조합
🔗 Fan-Out + 안정적인 메시지 처리
- SNS → 여러 SQS로 메시지 전달
- 각 SQS는 독립 Consumer 처리
- 필터링을 통한 조건별 분기 가능
6️. SNS FIFO / SQS FIFO
🔁 순서 + 중복 제거가 중요한 경우
FIFO 특징
- 메시지 순서 보장
- Deduplication 지원
- Message Group 단위 병렬 처리
순서 보장 조건
- SNS FIFO + SQS FIFO 조합 필수
7️. SNS Storage / Replay 패턴
♻️ 이벤트 재생(Replay)을 위한 구조
개념
- 메시지를 S3/DynamoDB에 저장
- 데이터 삭제 후
- 동일 이벤트 흐름 재생성 가능
활용
- 이벤트 소싱
- 감사 로그
- 데이터 복구
8️. Amazon Kinesis (스트리밍 기반 디커플링)
📡 실시간 스트리밍 데이터 처리 플랫폼
Kinesis 서비스 구성
- Kinesis Data Streams
- Amazon Data Firehose
- Kinesis Data Analytics
- Kinesis Video Streams
9️. Kinesis Data Streams
🌊 Shard 기반 실시간 데이터 수집
핵심 특징
- 지속적으로 유입되는 데이터 처리
- 데이터 재처리 가능
- Shard 단위 확장
- Retention: 24시간 ~ 1년
주요 개념
- Shard
- Partition Key
- Sequence Number
- Reshard (Split / Merge)
- On-Demand / Provisioned Mode
10. Amazon Data Firehose
🚚 스트리밍 데이터를 목적지로 자동 전달
핵심 특징
- 완전관리형
- 별도 Consumer 관리 불필요
- 내부 Buffer 기반 전송
- Lambda 기반 Transform 지원
주요 목적지
- Amazon S3
- Amazon Redshift
- Amazon OpenSearch
- Datadog / Splunk
- HTTP Endpoint
1️1. SQS vs SNS vs Kinesis 비교
| 구분 | SQS | SNS | Kinesis |
|---|---|---|---|
| 메시지 전달 | 1:1 | 1:N | Stream |
| 전달 방식 | Pull | Push | Pull |
| 메시지 저장 | O | X (Standard) | O |
| 순서 보장 | FIFO만 | FIFO만 | Shard 기준 |
| 재처리 | 제한적 | FIFO 기반 | O |
| 주요 목적 | 작업 분리 | 이벤트 브로드캐스트 | 실시간 데이터 처리 |
📝 전체 요약
AWS 디커플링 서비스는 SQS(작업 분리), SNS(이벤트 전달), Kinesis(스트리밍 처리)를 통해 시스템을 느슨하게 연결하고 확장성과 안정성을 확보하는 아키텍처를 구현한다.