RDS (Relational Database Service) SQL 기반 관계형 데이터베이스를 완전관리형으로 제공하는 AWS 서비스
지원 엔진
- PostgreSQL
- MySQL
- MariaDB
- Oracle
- Microsoft SQL Server
- IBM DB2
- Amazon Aurora (AWS 전용 DB)
⚖️ RDS vs EC2 직접 DB 설치
RDS를 사용하는 이유 = 운영 부담 제거
RDS 장점
- 자동 프로비저닝
- OS 패치 자동화
- 지속적 백업 + 시점 복구 (PITR)
- 모니터링 대시보드
- Read Replica
- Multi-AZ (DR)
- 유지보수 윈도우
- 수직 / 수평 스케일링
- EBS 기반 스토리지
제한 사항
- ❌ DB 서버에 SSH 접근 불가
📈 RDS Storage Auto Scaling
스토리지 부족을 자동으로 감지 & 확장
동작 조건
- Free Storage < 10%
- 상태가 5분 이상 지속
- 마지막 확장 후 6시간 경과
- Maximum Storage Threshold 사전 설정 필요
특징
- 수동 확장 불필요
- 예측 불가능한 워크로드에 적합
- 모든 RDS 엔진 지원
📚 RDS Read Replicas (읽기 확장)
읽기 성능 향상을 위한 비동기 복제
핵심 특징
- 최대 15개 Read Replica
- 위치
- Same AZ
- Cross AZ
- Cross Region
- ASYNC 복제
- Eventually Consistent
- Read Replica → 독립 DB로 승격 가능
- 애플리케이션에서 Read 전용 엔드포인트 분리 필요
Writes → Master
Reads → Read Replicas
🧪 Read Replica 사용
- 프로덕션 DB는 정상 운영
- 분석 / 리포팅 워크로드 추가
- Read Replica에서 SELECT 전용 처리
- 쓰기 부하에 영향 없음
💸 Read Replica – 네트워크 비용
- Same Region
- Cross AZ 포함 → ❌ 비용 없음
- Cross Region
- ✅ 네트워크 비용 발생
🛡️ RDS Multi-AZ (Disaster Recovery)
고가용성 목적 (스케일링 아님)
구조
- Master DB (AZ A)
- Standby DB (AZ B)
- SYNC 복제
- 단일 DNS
- 자동 Failover
특징
- AZ / 네트워크 / 인스턴스 / 스토리지 장애 대응
- 애플리케이션 수정 ❌
🔄 Single-AZ → Multi-AZ 전환
무중단 전환 가능
내부 동작
- DB Snapshot 생성
- 다른 AZ에 Standby DB 복원
- Master ↔ Standby 동기화
🧩 RDS Custom
OS & DB에 직접 접근 가능한 RDS
제공 기능
- Oracle / SQL Server
- OS & DB 설정 변경
- 패치 설치
- 네이티브 기능 활성화
- SSH / SSM Session Manager 접근 가능
비교
- RDS: AWS가 전부 관리
- RDS Custom: Full Admin 권한
🚀 Amazon Aurora
AWS 전용 고성능 관계형 DB
핵심 특징
- MySQL / PostgreSQL 호환
- 성능
- MySQL RDS 대비 5배
- PostgreSQL RDS 대비 3배
- 스토리지
- 10GB 단위 자동 확장
- 최대 128TB
- 최대 15개 Replica
- Replica Lag < 10ms
- Failover 거의 즉시
- 비용
- RDS 대비 약 20% 비쌈
- 효율은 더 높음
🏗️ Aurora High Availability 구조
스토리지 레벨에서 고가용성 내장
구조
- 3 AZ에 6개 데이터 복제본
- Write: 6개 중 4개 필요
- Read: 6개 중 3개 필요
- Peer-to-peer 복제
- Self-Healing
- 수백 개 볼륨에 데이터 스트라이핑
🔌 Aurora Cluster 엔드포인트
- Writer Endpoint
- Master 인스턴스
- Reader Endpoint
- Read Replica 로드밸런싱
- Shared Storage Volume
- 모든 인스턴스 공유
⚙️ Aurora 주요 기능
- 자동 Failover
- 백업 & 복구
- 보안 & 격리
- 컴플라이언스
- 버튼 클릭 스케일링
- 무중단 패치
- 고급 모니터링
- Backtrack
- 백업 없이 특정 시점 복원
📊 Aurora Replica Auto Scaling
읽기 부하에 따라 Replica 자동 증감
- CPU / 요청량 기반
- Reader Endpoint 자동 확장
🎯 Aurora Custom Endpoints
특정 워크로드를 특정 Replica로 분리
- 예: 분석 쿼리는 고사양 Replica로
- Reader Endpoint 대신 Custom Endpoint 사용
⚡ Aurora Serverless
사용량 기반 완전 자동 DB
특징
- 자동 인스턴스 생성 / 스케일
- 간헐적·예측 불가 워크로드에 적합
- 용량 계획 ❌
- 초 단위 과금
- 경우에 따라 비용 ↑
🌍 Aurora Cross-Region & Global Database
Cross-Region Read Replica
- DR 목적
- 간단한 구성
Aurora Global Database (권장)
- Primary Region (Read/Write)
- 최대 5개 Secondary Region
- 각 Secondary Region당 최대 16 Replica
- Replication Lag < 1초
- Region 승격 RTO < 1분
- 글로벌 지연 시간 감소
🤖 Aurora Machine Learning
SQL에서 바로 ML 예측 수행
연동 서비스
- Amazon SageMaker
- Amazon Comprehend
사용 예
- 추천 시스템
- 사기 탐지
- 감성 분석
- 광고 타게팅
💾 RDS Backups
Automated Backups
- Daily Full Backup
- Transaction Log: 5분 간격
- Point-in-Time Restore
- 보존 기간: 1 ~ 35일
- 0 → 비활성화
Manual Snapshots
- 수동 생성
- 무기한 보존 가능
⚠️ RDS 중지 상태에서도 스토리지 비용 발생
→ 장기 중지 시 Snapshot + Restore 권장
💾 Aurora Backups
- Automated Backup
- 1 ~ 35일
- 비활성화 불가
- Manual Snapshot
- 무기한 보존
♻️ Restore 옵션
- Restore 시 항상 새 DB 생성
- MySQL RDS
- On-Prem → S3 → RDS
- MySQL Aurora
- Percona XtraBackup → S3 → Aurora
🧬 Aurora Database Cloning
Snapshot보다 빠른 복제
특징
- Copy-on-Write
- 초기 스토리지 공유
- 변경 시에만 분리
- 매우 빠르고 비용 효율적
- 프로덕션 → 스테이징 DB에 최적
🔐 RDS & Aurora 보안
At-rest Encryption
- KMS 기반
- 생성 시 설정 필수
- Master 미암호화 → Replica 암호화 ❌
In-flight Encryption
- TLS 기본 지원
IAM Authentication
- 비밀번호 대신 IAM Role
Network Security
- Security Group 기반 제어
- SSH 접근 ❌ (RDS Custom 제외)
Audit Logs
- CloudWatch Logs 연동 가능
🧵 Amazon RDS Proxy
DB 연결을 효율적으로 관리하는 중간 프록시
특징
- Connection Pooling
- DB 부하 감소
- Failover 시간 최대 66% 단축
- Serverless / Multi-AZ
- Lambda와 궁합 좋음
- Secrets Manager 연동
- Public 접근 불가 (VPC 내부 전용)
⚡ Amazon ElastiCache Overview
인메모리 캐시 DB (Redis / Memcached)
목적
- DB Read 부하 감소
- 초저지연
- 애플리케이션 Stateless화
특징
- AWS가 운영 전부 관리
- 애플리케이션 코드 변경 필수
🧱 ElastiCache – DB Cache 패턴
Cache Hit → ElastiCache
Cache Miss → RDS →Cache 저장
- 반드시 Cache Invalidation 전략 필요
👤 ElastiCache – Session Store 패턴
- 사용자 세션을 캐시에 저장
- 어떤 EC2로 요청 와도 로그인 유지
🆚 Redis vs Memcached
Redis
- Multi-AZ + Auto Failover
- Read Replica
- 영속성 (AOF)
- 백업 / 복구
- Sets / Sorted Sets 지원
Memcached
- 샤딩 기반
- HA ❌
- 비영속
- 멀티스레드
- 단순 캐시용
🔐 ElastiCache 보안
Redis
- IAM Authentication
- Redis AUTH (비밀번호)
- SSL In-flight Encryption
Memcached
- SASL 인증 지원
🧠 ElastiCache 사용 패턴
- Lazy Loading
- 캐시 미스 시 DB 조회
- Stale Data 가능
- Write Through
- DB write 시 캐시 동시 갱신
- Session Store
- TTL 기반 세션 저장
인용
“캐시 무효화와 이름 짓기가 컴퓨터 과학에서 가장 어렵다”
🏆 Redis 대표 사용 사례
게임 리더보드
- Sorted Set 사용
- 실시간 순위 계산
- 고성능 & 정렬 보장