RDS(Relational Database Service)
- 관리형 데이터베이스 서비스
- SQL을 쿼리 언어로 사용하는 데이터베이스를 위한 서비스
- PostgreSQL
- MySQL
- MariaDB
- Oracle
- Microsoft SQL Server
- IBM DB2
- Aurora(AWS 독점 데이터베이스)
- AWS에서 관리됨
RDS와 EC2 인스턴스에 직접 DB 배포 차이점
- RDS는 DB 제공 외에 다양한 서비스 제공
- 데이터베이스 프로비저닝 및 기본 운영체제 패치 자동화
- 지속적으로 백업이 이루어짐(특정 시점으로 복원 가능) = Point in Time Restore
- 데이터베이스 성능을 모니터링할 수 있는 대시보드 사용 가능
- 가용성 높이고, 재해 복구에 유용한 Multi-AZ 구성
- 인스턴스 타입을 늘려 수직 수평 확장 가능
- SSH 인스턴스 접속 불가
RDS - Storage Auto Scaling
- RDS Database 생성할 때 필요한 스토리지 용량을 지정해야 함
- 스토리지 용량을 늘리기 위해 데이터베이스 중단 필요X
- 업무량이 예측하기 어려운 애플리케이션에 매우 유용
RDS 읽기 전용 복제본(RDS Read Replicas for read scalability)
- 최대 15개 까지 읽기 전용 복제본 생성 가능
- 동일 AZ, 다른 AZ, 다른 Region 가능(AZ간 이동은 무료, Region은 비용 발생)
- Main RDS 데이터베이스 인스턴스와 복제본 사이에 비동기식 복제
- 데이터베이스로 승격 가능. But, 생명주기를 가짐
RDS 읽기 전용 복제본 - 사용 사례
- Select SQL 키워드만 사용(수정, 삭제, 생성 X)
RDS Multi AZ
- 재해 복구용으로만 사용
- 동기식
- 애플리케이션 -통신-> DNS 이름
- 마스터 데이터베이스에 문제가 발생시 스탠바이 데이터베이스에 자동으로 장애 조치 수행
- -> 스탠바이 데이터베이스가 마스터 데이터베이스로 승격
- 스케일링 X
- 읽기, 쓰기 X
- 단일 AZ에서 멀티 AZ로 변경할 때 다운타임 0 -> 데이터베이스 중지X
RDS 생성
Amazon Aurora
- AWS 고유의 기술
- Postgres 및 MySQL과 호환
- RDS의 MySQL보다 5배 높은 성능
- RDS의 PostgreSQL 보다 3배 높은 성능
- 스토리지 자동 확장 가능(많은 데이터가 쌓이면 자동으로 10GB -> 128TB)
- 장애 조치 즉각적
- 비용 RDS에 비해 20% 높음
- 복제, 자가복구 가능
- Global Aurora
- 요새 추천 방식
- 읽기, 쓰기 하나의 기본 리전, 최대 5개의 보조 읽기 전용 리전 생성 -> 응답 지연 1초 이하
- 보조 Region 당 최대 16개의 읽기 전용 복제본 사용 가능
- 재해 복구를 위해 다른 Region을 승격시키는데, 복구시키는 시간이 1분 이내
- 평균적으로 한 Region에서 다른 Region으로 복제하는데 1초 이하
- Aurora Machine Learning
- 기계 학습 모델
- SageMaker : 백엔드인 어떤 종류의 기계 학습 모델이라도 사용할 수 있게 허용
- Comprehend : 감정 분석을 할 때 사용
- 사용 사례 : 광고 타겟팅, 감정 분석, 상품 추천, 이상 행위 탐지 등
Amazon Aurora process
RDS Backups
- 자동 백업
- RDS 서비스가 자동으로 매일 DB 전체 백업을 수행
- 5분마다 트랜잭션 로그가 백업됨
- -> 가장 빠른 백업은 5분 전 백업으로, 언제든 5분 전으로 복원 가능
- 자동 백업 보존 기간 1~35일 사이로 설정 가능 or 0으로 설정하여 백업 사용X
- 수동 DB 스냅샷
- 백업 사용 예시
- 데이터 백업하고 싶을 때
- 비용 절감하고 싶을 때
- 예시로, RDS DB를 한 달에 2시간만 사용
- -> DB 중지해도 스토리지 비용은 계속 지불해야 함
- -> 두 시간 사용 후 스냅샷을 만든 다음, 원본 DB 삭제하면 됨(스냅샷은 RDS 데이터베이스의 실제 스토리지 비용보다 훨씬 저렴)
- -> 데이터베이스를 다시 사용할 거면, 스냅샷을 복원하여 사용
Aurora Backup
- 자동 백업
- 1 - 35일 까지 가능(비활성화 X)
- 시점 복구 기능(어느 시점이든 복구 가능)
- 수동 DB 스냅샷
RDS & Aurora 복원
- RDS / Aurora 백업 또는 스냅샷을 복원할 때마다 새 DB가 생성됨
- Restoring MySQL RDS DB from S3
- 온프레미스 DB의 백업을 생성한 다음 객체 스토리지인 S3에 배치
- S3에서 MySQL을 실행하는 새 인스턴스로 백업 파일을 복원
- Restoring MySQL Aurora cluster from S3
- Perconda XtraBackup 소프트웨어를 사용하여 온프레미스 DB 백업
RDS Proxy
완전 관리형 데이터베이스 프록시 서비스
개념
- VPC 내에 RDS DB를 배포할 수 있음
- RDS Proxy 역시 완전 관리형으로 VPC 내 배포 가능
- 애플리케이션이 DB 인스턴스에 직접 연결하는 대신 프록시를 통해 연결
동작 원리
- RDS Proxy는 데이터베이스 연결 풀(Connection Pool) 생성 및 공유
- 여러 애플리케이션 연결을 모아 DB 인스턴스로 가는 연결 수 감소
- DB 리소스(CPU, RAM) 사용 효율 향상
- 연결 개방/시간초과 최소화
장점
- 서버리스(Serverless)
- 고가용성(High Availability)
- Multi-AZ 지원
- 장애 조치(Failover) 시간 최대 66% 감소
- 장애 조치 시 프록시가 자동으로 대기 인스턴스에 연결
- 보안(Security)
- IAM 인증 강제 가능
- 자격 증명은 AWS Secrets Manager에 저장
- 퍼블릭 액세스 불가, VPC 내에서만 접근 가능
- 호환성(Compatibility)
- RDS(MySQL, PostgreSQL, MariaDB) 지원
- Aurora(MySQL, PostgreSQL) 지원
- 애플리케이션 코드 수정 불필요 — 연결 대상만 프록시로 변경
Lambda와 RDS Proxy
- Lambda 함수는 대량의 짧은-lived 인스턴스를 빠르게 생성/삭제
- 직접 DB에 연결 시, 수많은 개방 연결과 시간초과 발생 가능
- RDS Proxy 사용 시
- Lambda가 Proxy의 연결 풀을 공유
- DB 연결 수 감소 → 성능 향상 및 안정성 확보
요약
- RDS Proxy = RDS/Aurora의 연결 수 최소화
- 장애 조치 시간 최대 66% 단축
- IAM 인증 강제 및 Secrets Manager 저장
- Lambda 대규모 연결 문제 해결
Amazon ElastiCache
관리형 인메모리 데이터베이스 서비스
개념
- RDS가 관리형 관계형 데이터베이스를 제공하듯,
ElastiCache는 관리형 Redis / Memcached 제공
- 캐시(Cache) = 인메모리 기반 초고속 데이터베이스
- 읽기 집중형(READ-heavy) 작업 부하에서 DB 부하 감소
캐시의 역할
- 자주 수행되는 쿼리 결과를 메모리에 저장
- 이후 동일한 요청 시 DB 쿼리 생략 → 지연 시간 단축, 부하 감소
- ElastiCache는 상태 정보 저장소로도 사용 가능 → 무상태(Stateless) 애플리케이션 구현 가능
관리형 서비스 이점
- AWS가 담당: OS 유지 관리, 패치, 구성, 모니터링, 장애 복구, 백업 등
- RDS와 동일한 관리형 장점 제공
ElastiCache 사용 아키텍처
1️⃣ 캐시 조회 중심 구조
- 구성: Application ↔ ElastiCache ↔ RDS
- 동작:
- 앱이 ElastiCache에서 쿼리 결과 존재 여부 확인
- 존재 시 → 캐시 히트(Cache Hit) → RDS 접근 생략
- 없을 시 → 캐시 미스(Cache Miss) → RDS에서 데이터 조회 후 ElastiCache에 저장
- 효과: RDS 부하 감소, 응답 시간 단축
- 주의: 캐시 무효화 전략(Cache Invalidation) 필요 (최신 데이터 유지용)
2️⃣ 세션 관리 구조
- 사용자 세션을 ElastiCache에 저장
- 앱 인스턴스 간 세션 공유 가능 → 무상태 애플리케이션 구현
- 사용자는 다른 인스턴스로 리디렉션되어도 로그인 유지
Redis vs Memcached
항목 Redis Memcached
| 가용성 |
다중 AZ 지원, 자동 장애 조치 |
고가용성 X |
| 복제(Replication) |
지원 (읽기 복제본 생성 가능) |
없음 |
| 데이터 내구성 |
AOF 지속성 제공 |
없음 (서버리스 버전 예외) |
| 백업/복원 |
지원 |
일부 서버리스 버전만 지원 |
| 데이터 구조 |
문자열, 집합, 정렬된 집합 등 (리더보드 구현 유용) |
Key-Value 기반 단순 구조 |
| 확장 방식 |
복제 기반 (노드 간 데이터 복제) |
차팅(Sharding) 기반 (데이터 분할 저장) |
| 성능 구조 |
단일 스레드 |
멀티 스레드 |
정리
- ElastiCache = 관리형 Redis/Memcached 인메모리 캐시
- 장점: 고속 응답, DB 부하 감소, 무상태 앱 구성 가능
- Redis: 고가용성·복제·백업·다양한 데이터 구조 지원
- Memcached: 단순 Key-Value 캐시, 빠르지만 복제/백업 기능 부족
ElastiCache 사용
Amazon ElastiCache 보안 & 캐싱 전략
ElastiCache 인증 방식
항목 Redis Memcached
| IAM 인증 |
지원 (Redis 전용) |
미지원 |
| 기본 인증 |
Redis AUTH (비밀번호/토큰 설정) |
SASL 기반 인증 |
| 전송 중 암호화(SSL) |
지원 |
일부 지원 |
| 보안 그룹 |
VPC 내에서 보안 그룹으로 보호 |
동일 |
- Redis AUTH : Redis 클러스터 생성 시 설정 가능
→ 캐시에 추가 보안 계층 제공
- IAM 정책 : AWS API 수준 보안에만 사용됨
- SSL 암호화 : 전송 중 데이터 보호 가능
- Memcached : SASL 기반 인증 메커니즘 제공 (이름만 알아두면 됨)
🔐 요약
EC2 인스턴스 → Redis AUTH / IAM 인증 / 보안 그룹 / SSL 암호화
로 안전하게 Redis 클러스터 접근 가능
캐시 로딩 전략 (3가지)
전략 설명 장점 단점
| 1️⃣ Lazy Loading (지연 로딩) |
캐시 히트 없을 때만 DB 조회 후 캐시에 저장 |
단순, 효율적 |
초기 요청 시 지연 발생, 오래된 데이터 가능성 |
| 2️⃣ Write Through |
DB에 데이터 기록 시 동시에 캐시에 저장 |
항상 최신 데이터 유지 |
쓰기 부하 증가 |
| 3️⃣ Session Store |
세션 데이터를 캐시에 저장, TTL로 자동 만료 |
무상태 앱 구현 가능 |
TTL 관리 필요 |
Lazy Loading 동작 방식
1️⃣ Cache Hit → ElastiCache에서 직접 데이터 반환
2️⃣ Cache Miss → RDS(DB)에서 데이터 조회 후 캐시에 저장
→ 다음 요청 시 캐시 히트 발생
Redis 실전 사용 사례 – 실시간 리더보드
- Redis Sorted Set (정렬된 세트)
- 고유성 + 정렬된 순서 모두 보장
- 점수(score) 기준으로 실시간 순위 매김
- 새로운 요소 추가 시 자동 정렬
- 사용 예시:
- 게임 리더보드 (1위, 2위, 3위 등 실시간 갱신)
- 실시간 점수판, 순위 기반 랭킹 시스템
- 장점:
- 모든 클라이언트가 동일한 리더보드 접근
- 애플리케이션 측에서 별도 구현 불필요
- Redis 내부 구조로 즉시 순위 제공
정리
- Redis 보안: IAM 인증, AUTH 비밀번호, SSL 전송 암호화
- Memcached 보안: SASL 인증 (IAM X, 단순 구조)
- 캐시 전략: Lazy Loading / Write Through / Session Store
- Redis Sorted Set: 실시간 리더보드 구현 핵심