Udemy - Stephane Maarek AWS SAA 강의를 듣고 메모 목적으로 남김
1. Amazon RDS 개요 및 특징
- 개념: 관계형 데이터베이스(SQL)를 위한 완전 관리형 서비스 (Relational Database Service)임.
- 지원 엔진: PostgreSQL, MySQL, MariaDB, Oracle, Microsoft SQL Server, IBM DB2, Aurora.
- 장점 (EC2에 직접 구축하는 것과 비교):
- 자동 프로비저닝 및 OS 패치 적용.
- 자동 백업 및 특정 시점 복원(Point-in-Time Restore) 지원.
- 성능 모니터링 대시보드 제공.
- 읽기 전용 복제본(Read Replicas)을 통한 읽기 성능 향상.
- 다중 AZ(Multi-AZ) 설정을 통한 재해 복구(DR) 대비.
- 유지 관리 기간(Maintenance Window)을 통한 업그레이드.
- EBS 기반 스토리지 사용 및 스토리지 자동 확장(Auto Scaling) 지원.
- 단, 기반 EC2 인스턴스에 SSH로 직접 접속하는 것은 불가능함 (RDS Custom 제외).
2. RDS 확장성 및 고가용성
- 읽기 전용 복제본 (Read Replicas):
- 읽기 작업의 확장성(Scalability)을 위해 사용됨.
- 최대 15개까지 생성 가능하며, 동일 AZ, 다른 AZ, 다른 리전(Cross-Region)에 생성할 수 있음.
- 비동기식(ASYNC) 복제를 사용하므로 약간의 복제 지연이 발생할 수 있음(결과적 일관성).
- INSERT, UPDATE, DELETE가 아닌 SELECT(읽기) 쿼리에만 사용함 (보고서, 분석 용도 등).
- 동일 리전 내의 복제본으로의 데이터 전송은 무료지만, 다른 리전으로의 전송에는 네트워크 비용이 발생함.
- 다중 AZ (Multi-AZ):
- 성능 향상이 아닌 재해 복구(Disaster Recovery) 및 고가용성을 위한 기능임.
- 마스터 DB의 데이터를 대기(Standby) DB로 동기식(SYNC) 복제함.
- AZ 장애, 인스턴스 또는 스토리지 장애 발생 시 애플리케이션 코드 변경 없이 단일 DNS 이름을 통해 자동으로 장애 조치(Failover)가 이루어짐.
- 다운타임 없이(Zero downtime) 단일 AZ에서 다중 AZ로 변경 가능함.
3. Amazon Aurora
- 개념: AWS가 클라우드에 맞게 최적화하여 독자적으로 개발한 관계형 데이터베이스임.
- 특징:
- PostgreSQL 및 MySQL과 완벽하게 호환됨.
- 성능: RDS MySQL 대비 5배, RDS PostgreSQL 대비 3배 이상의 성능 제공.
- 스토리지 용량이 10GB 단위로 최대 128TB(또는 256TB)까지 자동 확장됨.
- 최대 15개의 읽기 전용 복제본을 가질 수 있으며, 복제 지연 시간이 10ms 미만으로 매우 짧음.
- 고가용성 (HA) 및 쓰기/읽기 확장:
- 3개의 가용 영역(AZ)에 걸쳐 데이터의 복사본을 6개 유지함. (쓰기 작업에 4개, 읽기 작업에 3개 필요).
- 하나의 마스터 인스턴스가 쓰기를 담당하며, 장애 발생 시 30초 이내에 자동으로 다른 읽기 복제본이 마스터로 승격됨.
- 사용자 지정 엔드포인트(Custom Endpoints): 특정 읽기 복제본(예: 분석 쿼리용 고사양 인스턴스)들을 묶어 별도의 엔드포인트로 사용할 수 있음.
- 고급 기능:
- Aurora Serverless: 워크로드 예측이 어렵거나 간헐적인 경우 적합함. 용량 계획 없이 자동으로 리소스를 확장 및 축소하며 초 단위로 과금됨.
- Aurora Global Database: 1개의 기본 리전과 최대 10개의 보조 리전을 구성하여 지연 시간을 줄이고 글로벌 재해 복구를 구현함 (리전 간 복제 지연 1초 미만).
- 데이터베이스 복제 (Database Cloning): 스냅샷 복원보다 훨씬 빠르고 저렴하게(Copy-on-write 방식) 프로덕션 DB와 동일한 스테이징/테스트용 데이터베이스를 생성할 수 있음.
- Aurora Machine Learning: SQL 쿼리 내에서 SageMaker(머신러닝 모델) 및 Comprehend(감정 분석)를 직접 호출할 수 있음.
4. 데이터베이스 백업 및 보안
- RDS / Aurora 백업:
- 자동 백업: 매일 지정된 유지 관리 시간(Backup Window)에 전체 백업 및 트랜잭션 로그 백업을 수행하여 원하는 특정 시점(Point-in-time)으로 복원 가능하게 함 (보존 기간 1~35일).
- 수동 스냅샷: 사용자가 명시적으로 삭제할 때까지 영구 보존 가능함. 중지된 RDS DB의 스토리지 비용을 아끼려면 스냅샷을 찍고 기존 DB를 삭제한 후 필요할 때 복원하는 것이 유리함.
- 보안 (Security):
- 저장 데이터 암호화 (At-rest): KMS 키를 사용하여 암호화함. 데이터베이스 생성 시에만 활성화할 수 있음. (암호화되지 않은 DB를 암호화하려면 스냅샷 생성 -> 암호화 옵션을 켜서 스냅샷 복사 -> 복원 과정을 거쳐야 함).
- 전송 중 암호화 (In-flight): 기본적으로 TLS(SSL) 인증서를 사용하여 보호함.
- IAM 데이터베이스 인증: 비밀번호 없이 IAM 역할(Role)과 정책을 활용하여 데이터베이스에 인증할 수 있음.
5. Amazon RDS 프록시 (RDS Proxy)
- 개념: 완전 관리형 데이터베이스 프록시 서비스임.
- 역할 및 장점:
- 데이터베이스 연결을 풀링(Pooling)하고 공유하여 DB의 CPU 및 메모리 부담을 덜어줌.
- 장애 조치(Failover) 시간을 최대 66%까지 단축하여 가용성을 높임.
- 연결 관리가 중요한 Serverless 애플리케이션(특히 AWS Lambda)에서 RDS 접속 시 필수적으로 사용됨.
- 퍼블릭 접근이 차단되어 VPC 내부에서만 접근 가능하며, Secrets Manager를 연동하여 자격 증명 관리를 강화할 수 있음.
6. Amazon ElastiCache
- 개념: 관계형 데이터베이스의 읽기 부하를 분산하고 애플리케이션의 상태(세션 등)를 비저장(Stateless)으로 만들기 위해 사용하는 인메모리(In-Memory) 캐시 서비스. (RDS의 캐시 버전).
- 특징:
- 아주 짧은 대기 시간(Sub-millisecond latency)과 극도로 높은 성능 제공.
- 캐시 로직을 적용하기 위해서는 애플리케이션 코드의 수정이 반드시 필요함.
- 주요 용도 및 패턴:
- DB 캐싱: 자주 읽는 데이터를 ElastiCache에 저장하여 RDS 부하 감소 (Lazy Loading, Write Through).
- 사용자 세션 스토어: 여러 인스턴스에 걸친 웹사이트의 사용자 로그인 세션(상태) 정보 저장.
- 엔진 비교:
- Redis: 다중 AZ, 자동 장애 조치, 읽기 전용 복제본 지원(고가용성 지원). 데이터 백업/복원 및 디스크 영구 저장 기능 있음. 정렬된 세트(Sorted Sets)를 제공하여 실시간 게임 리더보드 등에 흔히 사용됨.
- Memcached: 데이터 파티셔닝(Sharding)을 위한 다중 노드 지원. 다중 스레드 아키텍처. 고가용성이나 데이터 영구 보존, 백업 기능이 없음.
- 캐시 보안:
- Redis는 IAM 인증, Redis AUTH(비밀번호/토큰), 전송 중 SSL 암호화를 지원함. Memcached는 SASL 기반 인증을 지원함.