1. Amazon SES (Simple Email Service)
🤔 SES가 뭔가요?
비유로 이해하기: SES는 대량 메일 발송 서비스입니다.
- Gmail/Outlook으로 1만 명에게 메일 보내기? 😰 (스팸 처리됨)
- SES로 보내기: 안전하고, 빠르고, 저렴! 😊
SES 특징
┌─────────────────────────────────────────────────────────────────┐
│ Amazon SES │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 애플리케이션 │ │
│ │ │ │ │
│ │ │ API / SMTP │ │
│ │ ↓ │ │
│ │ ┌──────────────────────────────────────────────────┐ │ │
│ │ │ Amazon SES │ │ │
│ │ │ │ │ │
│ │ │ ✅ 대량 이메일 발송 │ │ │
│ │ │ ✅ 인바운드/아웃바운드 지원 │ │ │
│ │ │ ✅ 평판 대시보드 │ │ │
│ │ │ ✅ 배달률, 바운스, 오픈율 통계 │ │ │
│ │ │ ✅ DKIM, SPF 지원 (스팸 방지) │ │ │
│ │ └──────────────────────────────────────────────────┘ │ │
│ │ │ │ │
│ │ ↓ │ │
│ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │
│ │ │ User 1 │ │ User 2 │ │ User N │ │ │
│ │ └──────────┘ └──────────┘ └──────────┘ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ 사용 사례: │
│ • 트랜잭션 이메일 (주문 확인, 비밀번호 재설정) │
│ • 마케팅 이메일 (뉴스레터, 프로모션) │
│ • 대량 이메일 (공지사항) │
│ │
└─────────────────────────────────────────────────────────────────┘SES 발송 방법
| 방법 | 설명 | 사용 시기 |
|---|---|---|
| AWS Console | 웹 UI에서 발송 | 테스트 |
| API (SDK) | 코드로 발송 | 애플리케이션 통합 |
| SMTP | SMTP 프로토콜 | 기존 시스템 통합 |
2. Amazon OpenSearch Service
🤔 OpenSearch가 뭔가요?
비유로 이해하기: OpenSearch는 초고속 검색 엔진입니다.
- DynamoDB: "ID=123인 상품 찾아줘" (정확한 키로만 검색)
- OpenSearch: "iPhone 케이스" 검색 → 부분 일치, 유사어도 찾음!
OpenSearch 특징
┌─────────────────────────────────────────────────────────────────┐
│ Amazon OpenSearch │
│ │
│ ElasticSearch의 후속 서비스 (AWS 관리형) │
│ │
│ 특징: │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ • 모든 필드에서 검색 가능 (부분 일치 포함) │ │
│ │ • 전문 검색 (Full-text Search) │ │
│ │ • 다른 DB의 보조 검색 엔진으로 사용 │ │
│ │ • Managed Cluster 또는 Serverless │ │
│ │ • SQL 기본 미지원 (플러그인으로 활성화 가능) │ │
│ │ • OpenSearch Dashboards (시각화 도구) │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ 데이터 수집 소스: │
│ • Kinesis Data Firehose │
│ • AWS IoT │
│ • CloudWatch Logs │
│ │
│ 보안: │
│ • Cognito & IAM 인증 │
│ • KMS 암호화 │
│ • TLS 전송 암호화 │
│ │
└─────────────────────────────────────────────────────────────────┘OpenSearch 사용 패턴
패턴 1: DynamoDB + OpenSearch
┌─────────────────────────────────────────────────────────────────┐
│ DynamoDB + OpenSearch │
│ │
│ [사용자] │
│ │ │
│ ├─ CRUD (생성/수정/삭제) ───→ [DynamoDB] │
│ │ │ │
│ │ ↓ DynamoDB Stream │
│ │ [Lambda] │
│ │ │ │
│ │ ↓ 인덱싱 │
│ │ [OpenSearch] │
│ │ │ │
│ └─ 검색 ───────────────────────────┘ │
│ │
│ 흐름: │
│ 1. 상품 등록 → DynamoDB에 저장 │
│ 2. DynamoDB Stream → Lambda → OpenSearch에 인덱싱 │
│ 3. "iPhone 케이스" 검색 → OpenSearch에서 ID 목록 반환 │
│ 4. ID로 DynamoDB에서 상세 정보 조회 │
│ │
└─────────────────────────────────────────────────────────────────┘패턴 2: CloudWatch Logs → OpenSearch
┌─────────────────────────────────────────────────────────────────┐
│ CloudWatch Logs → OpenSearch │
│ │
│ Real-time: │
│ [CloudWatch Logs] ─→ [Subscription Filter] ─→ [Lambda] ─→ [OpenSearch]│
│ │
│ Near Real-time: │
│ [CloudWatch Logs] ─→ [Subscription Filter] ─→ [Firehose] ─→ [OpenSearch]│
│ │
│ 용도: 로그 분석, 검색, 시각화 │
│ │
└─────────────────────────────────────────────────────────────────┘패턴 3: Kinesis → OpenSearch
┌─────────────────────────────────────────────────────────────────┐
│ Kinesis → OpenSearch │
│ │
│ Real-time: │
│ [Kinesis Data Streams] ─→ [Lambda] ─→ [OpenSearch] │
│ │
│ Near Real-time (변환 포함): │
│ [Kinesis Data Streams] ─→ [Kinesis Firehose] ─→ [Lambda 변환] ─→ [OpenSearch]│
│ │
└─────────────────────────────────────────────────────────────────┘3. Amazon Athena
🤔 Athena가 뭔가요?
비유로 이해하기: Athena는 S3에 SQL을 날리는 서비스입니다.
- S3에 CSV/JSON 파일 수백 개 있어요
- DB에 안 넣고 바로 SQL로 분석! 🎉
Athena 특징
┌─────────────────────────────────────────────────────────────────┐
│ Amazon Athena │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ S3 Bucket │ │
│ │ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ │ │
│ │ │ .csv │ │ .json│ │ .orc │ │parquet│ │ .avro│ │ │
│ │ └──────┘ └──────┘ └──────┘ └──────┘ └──────┘ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │ │
│ ↓ 쿼리 │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ Amazon Athena │ │
│ │ │ │
│ │ SELECT * FROM logs │ │
│ │ WHERE status = 'ERROR' │ │
│ │ AND date > '2024-01-01' │ │
│ │ │ │
│ │ • Serverless (서버 관리 불필요!) │ │
│ │ • 표준 SQL (Presto 기반) │ │
│ │ • 과금: $5 / 스캔한 TB당 │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │ │
│ ↓ 시각화 │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ Amazon QuickSight │ │
│ │ (리포팅, 대시보드) │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘Athena 사용 사례
| 사용 사례 | 설명 |
|---|---|
| 로그 분석 | VPC Flow Logs, ELB Logs, CloudTrail |
| BI/분석 | 비즈니스 인텔리전스, 리포팅 |
| 데이터 탐색 | S3 데이터 빠른 탐색 |
| 비용 분석 | AWS Cost and Usage Report 분석 |
Athena 성능 최적화
┌─────────────────────────────────────────────────────────────────┐
│ Athena 성능 최적화 │
│ │
│ 1. 컬럼형 포맷 사용 (비용 절감!) │
│ ✅ Parquet, ORC │
│ ❌ CSV, JSON │
│ → Glue로 변환 가능 │
│ │
│ 2. 데이터 압축 │
│ • gzip, snappy, lz4 등 │
│ → 스캔 데이터 감소 = 비용 감소 │
│ │
│ 3. 파티셔닝 │
│ s3://bucket/logs/year=2024/month=01/day=15/ │
│ → WHERE year=2024 AND month=01 → 해당 폴더만 스캔! │
│ │
│ 4. 큰 파일 사용 │
│ • 128 MB 이상 권장 │
│ • 작은 파일 많으면 오버헤드 증가 │
│ │
└─────────────────────────────────────────────────────────────────┘Athena Federated Query
┌─────────────────────────────────────────────────────────────────┐
│ Athena Federated Query │
│ │
│ S3 외의 데이터 소스도 SQL로 쿼리 가능! │
│ │
│ ┌────────────────────────────────────────────────────────┐ │
│ │ Amazon Athena │ │
│ │ │ │ │
│ │ Lambda (Data Source Connector) │ │
│ │ │ │ │
│ │ ┌────┴────┬────────┬────────┬────────┬────────┐ │ │
│ │ ↓ ↓ ↓ ↓ ↓ ↓ │ │
│ │ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ │ │
│ │ │ S3 │ │ RDS │ │Dynamo│ │Redis│ │On- │ │Redshift│ │ │
│ │ │ │ │ │ │ DB │ │Cache│ │Prem │ │ │ │ │
│ │ └─────┘ └─────┘ └─────┘ └─────┘ └─────┘ └─────┘ │ │
│ └────────────────────────────────────────────────────────┘ │
│ │
│ → 결과는 S3에 저장 │
│ │
└─────────────────────────────────────────────────────────────────┘4. Amazon MSK (Managed Streaming for Apache Kafka)
🤔 MSK가 뭔가요?
비유로 이해하기: MSK는 AWS 관리형 Kafka입니다.
- Kafka = 대용량 실시간 데이터 스트리밍 플랫폼
- 직접 설치/관리 어려움 → AWS가 대신 해줌!
MSK vs Kinesis
| 항목 | Kinesis Data Streams | Amazon MSK |
|---|---|---|
| 기반 | AWS 자체 | Apache Kafka |
| 메시지 크기 | 1 MB | 기본 1MB, 최대 10MB+ |
| 단위 | Shard | Partition |
| 확장 | Shard 분할/병합 | Partition 추가만 |
| 암호화 | TLS + KMS | TLS (또는 PLAINTEXT) + KMS |
| 관리 복잡도 | 낮음 | 중간 |
| Kafka 호환 | ❌ | ✅ |
MSK 구조
┌─────────────────────────────────────────────────────────────────┐
│ Amazon MSK │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ Your VPC │ │
│ │ │ │
│ │ ┌───────────────────────────────────────────────────┐ │ │
│ │ │ MSK Cluster │ │ │
│ │ │ │ │ │
│ │ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │ │
│ │ │ │ Broker 1│ │ Broker 2│ │ Broker 3│ (Multi-AZ)│ │ │
│ │ │ │ (AZ a) │ │ (AZ b) │ │ (AZ c) │ │ │ │
│ │ │ └────┬────┘ └────┬────┘ └────┬────┘ │ │ │
│ │ │ │ │ │ │ │ │
│ │ │ └────────────┼────────────┘ │ │ │
│ │ │ │ replication │ │ │
│ │ │ │ │ │
│ │ │ 데이터: EBS 볼륨에 저장 (원하는 기간만큼) │ │ │
│ │ └───────────────────────────────────────────────────┘ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ Producers ───────→ [MSK] ───────→ Consumers │
│ (데이터 전송) (데이터 소비) │
│ │
│ Consumers: │
│ • Lambda │
│ • EC2 │
│ • ECS / EKS │
│ • Kinesis Data Analytics (Flink) │
│ • Glue Streaming ETL │
│ │
└─────────────────────────────────────────────────────────────────┘MSK Serverless
MSK Serverless:
• 용량 관리 불필요 (자동 스케일링)
• 컴퓨팅/스토리지 자동 프로비저닝
• Kafka 클러스터 관리 오버헤드 제거
사용 시기:
• Kafka 운영 경험 부족
• 트래픽 변동이 큰 경우
• 빠른 시작이 필요한 경우5. AWS Certificate Manager (ACM)
🤔 ACM이 뭔가요?
비유로 이해하기: ACM은 SSL/TLS 인증서 관리 서비스입니다.
- HTTPS 적용하려면 인증서 필요
- 직접 구매/설치/갱신 귀찮음 → ACM이 대신! (무료!)
ACM 특징
┌─────────────────────────────────────────────────────────────────┐
│ AWS Certificate Manager │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ ACM │ │
│ │ │ │
│ │ ✅ SSL/TLS 인증서 프로비저닝 │ │
│ │ ✅ Public 인증서 무료! │ │
│ │ ✅ 자동 갱신 (매년 갱신 걱정 없음) │ │
│ │ ✅ Private 인증서도 지원 │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │ │
│ ┌─────────────┼─────────────┐ │
│ ↓ ↓ ↓ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ ALB │ │ CloudFront │ │ API Gateway │ │
│ │ (HTTPS) │ │ (HTTPS) │ │ (HTTPS) │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │
│ ⚠️ EC2에 직접 설치는 불가! (ALB/CloudFront 통해 사용) │
│ │
└─────────────────────────────────────────────────────────────────┘ACM 통합 서비스
| 서비스 | 용도 |
|---|---|
| ELB | 로드밸런서 HTTPS |
| CloudFront | CDN HTTPS |
| API Gateway | API HTTPS |
AWS Private CA
┌─────────────────────────────────────────────────────────────────┐
│ AWS Private CA │
│ │
│ Public CA vs Private CA: │
│ │
│ Public CA (ACM): │
│ • 인터넷에서 신뢰됨 (브라우저가 인식) │
│ • 웹사이트 HTTPS용 │
│ │
│ Private CA: │
│ • 조직 내부에서만 신뢰됨 │
│ • 내부 서비스, IoT 기기, VPN 등 │
│ │
│ 사용 사례: │
│ • 내부 서비스 간 TLS 통신 │
│ • 코드 서명 │
│ • 사용자/기기 인증 │
│ • IoT 디바이스 인증서 │
│ • 기업 PKI (Public Key Infrastructure) │
│ │
└─────────────────────────────────────────────────────────────────┘6. Amazon Macie
🤔 Macie가 뭔가요?
비유로 이해하기: Macie는 민감 정보 탐지 서비스입니다.
- S3에 실수로 주민등록번호, 신용카드 번호 저장됐을 수도?
- Macie가 자동으로 찾아서 알려줌! 🔍
Macie 동작
┌─────────────────────────────────────────────────────────────────┐
│ Amazon Macie │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ S3 Buckets │ │
│ │ ┌──────────────────────────────────────────────────┐ │ │
│ │ │ documents/ │ │ │
│ │ │ ├── report.csv ← "주민번호: 123456-1234567" │ │ │
│ │ │ ├── users.json ← "email: test@example.com" │ │ │
│ │ │ └── data.xlsx ← "카드번호: 1234-5678-..." │ │ │
│ │ └──────────────────────────────────────────────────┘ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │ │
│ ↓ 분석 │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ Amazon Macie │ │
│ │ │ │
│ │ ML + 패턴 매칭으로 민감 정보 탐지: │ │
│ │ • PII (개인식별정보) │ │
│ │ - 이름, 주소, 전화번호 │ │
│ │ - 주민등록번호, 여권번호 │ │
│ │ - 신용카드 번호 │ │
│ │ • 금융 정보 │ │
│ │ • 의료 정보 │ │
│ │ • API 키, 비밀번호 │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │ │
│ ↓ 알림 │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ EventBridge │ │
│ │ │ │ │
│ │ ┌─────────────┼─────────────┐ │ │
│ │ ↓ ↓ ↓ │ │
│ │ [Lambda] [SNS] [Security Hub] │ │
│ │ (자동 조치) (알림) (보안 대시보드) │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘Macie 사용 사례
| 사용 사례 | 설명 |
|---|---|
| 규정 준수 | GDPR, HIPAA 등 데이터 보호 규정 |
| 보안 감사 | 민감 데이터 노출 탐지 |
| 데이터 분류 | S3 데이터 자동 분류 |
7. AWS AppConfig
🤔 AppConfig가 뭔가요?
비유로 이해하기: AppConfig는 실시간 설정 변경 서비스입니다.
- 코드 배포 없이 설정만 변경!
- Feature Flag (기능 on/off) 관리에 최적
AppConfig 특징
┌─────────────────────────────────────────────────────────────────┐
│ AWS AppConfig │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 기존 방식 │ │
│ │ │ │
│ │ 설정 변경 → 코드 수정 → 빌드 → 배포 → 재시작 │ │
│ │ (시간 소요, 위험) │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ AppConfig 방식 │ │
│ │ │ │
│ │ 설정 변경 → AppConfig에서 변경 → 앱이 자동 적용! │ │
│ │ (코드 배포 불필요, 재시작 불필요!) │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ 사용 사례: │
│ • Feature Flags: 새 기능 on/off │
│ • 애플리케이션 튜닝: 타임아웃, 캐시 설정 │
│ • Allow/Block 리스트: IP 차단 목록 │
│ │
│ 지원 서비스: │
│ • EC2, ECS, EKS │
│ • Lambda │
│ • 모바일 앱 │
│ │
└─────────────────────────────────────────────────────────────────┘AppConfig 배포 전략
┌─────────────────────────────────────────────────────────────────┐
│ AppConfig 배포 │
│ │
│ 점진적 배포 (롤백 가능!): │
│ │
│ 설정 변경 │
│ │ │
│ ↓ │
│ 10% 적용 ───→ 문제 없음? ───→ 30% 적용 ───→ 100% 적용 │
│ │ │ │
│ └── 문제 발생 ─┴─→ 자동 롤백! │
│ │
│ 검증 방법: │
│ 1. JSON Schema (구문 검사) │
│ → "필수 필드가 있는가?" │
│ │
│ 2. Lambda Function (의미 검사) │
│ → "값이 유효한 범위인가?" (커스텀 로직) │
│ │
└─────────────────────────────────────────────────────────────────┘핵심 요약
서비스 한눈에 보기
| 서비스 | 핵심 기능 | 키워드 |
|---|---|---|
| SES | 이메일 발송 | 대량 메일, SMTP |
| OpenSearch | 검색 엔진 | Full-text, ElasticSearch 후속 |
| Athena | S3 SQL 쿼리 | Serverless, $5/TB |
| MSK | 관리형 Kafka | Kinesis 대안 |
| ACM | SSL/TLS 인증서 | 무료, 자동 갱신 |
| Macie | 민감 정보 탐지 | PII, S3 스캔 |
| AppConfig | 동적 설정 | Feature Flag, 재시작 없음 |