AWS 기초이론 - RDS
1. RDS란?
- Relational DB Service : 관계형 데이터베이스
- Microsoft SQL, Oracle, MySQL, Postgre, Aurora, Maria DB 를 사용 가능
Data Warehousing
- Business Intelligence
- 리포트 작성, 데이터 분석시 사용
- 매우 방대한 분량의 데이터 로드시 사용
OLTP VS OLAP
- OLTP : INSERT와 같이 종종 사용되어지는, 혹은 규모가 작은 데이터를 불러올 때 사용되는 SQL 쿼리가 필요할 때 유용
- OLAP : 매우 큰 데이터를 불러올 때 사용, 주로 덩치가 큰 SELECT 쿼리에서 사용
2. Database Backups
두 가지 방식이 있다.
Automated Backups (AB)
- Retention Period(1~35일) 안의 어떤 시간으로 돌아가게 할 수 있음
- AB는 그날 생성된 스냅샷과 Transaction logs(TL)을 참고함
- 디폴트로 AB기능이 설정되어 있으며 백업 정보는 S3에 저장
- AB동안 약간의 I/O suspension이 존재할 수 있음 -> Latency
DB Snapshots
- 주로 사용자에 의해 실행
- 원본 RDS Instance를 삭제해도 스냅샷은 존재함
백업시 일어나는 일
- 원본 RDS 인스턴스를 가지고 새로운 DB를 복원시 새로운 인스턴스와 Endpoint가 생성
- 원본 Endpoint는 앞에 original인 반면, 복원된 것은 앞에 restored가 붙는다.
3. Multi AZ, Read Replicas
Multi AZ
- 원래 존재하는 RDS DB에 무언가 변화가 생길때(ex 쓰기) 다른 Availability Zone에 똑같은 복제본이 만들어짐 = Synchronize
- AWS에 의해 자동으로 관리됨
- 원본 RDB DB에 문제가 생길 시 자동으로 다른 AZ의 복제본을 사용
Read Replica
- Production DB의 읽기 전용 복제본이 생성
- 주로 Read-Heavy DB 작업시 효율성의 극대화를 위해 사용 (Scaling)
- Disaster Recovery 용도가 아님
- 최대 5개 Read Replica DB 허용
- Read Replica의 Read Replica 생성 가능 (단 Latency 발생)
- 각각의 Read Replica는 자기만의 고유 Endpoint 존재
- EC2 인스턴스로부터 쓰기 작업시 Read Replica에 의해 똑같은 RDS 복제본이 생성
- 쓰기 작업도 복제본에 쓰기
- Read Traffic이 발생하면 Main DB로 연결하는게 아니라 각각의 Read Replica로 연결하여 Main DB의 Work Load를 줄일 수 있음
4. ElastiCache
- 클라우드 내에서 In-memory 캐시를 만들어 줌
- 데이터베이스에서 데이터를 읽어오는 것이 아니라 캐시에서 빠른 속도로 데이터를 읽어옴
- Read-Heavy 어플리케이션에서 상당한 Latency 감소 효과
Memcached
- Object 캐시 시스템으로 알려져 있음
- ElastiCache는 Memcached의 프로토콜이 디폴트
- EC2 Auto Scaling처럼 크기가 커졌다 작아졌다 가능
- 오픈 소스
- 사용 용도
- 가장 단순한 캐싱 모델일때
- Object caching이 주된 목적
- 캐시 크기를 마음대로 scaling해야 할때
Redis
- Key-Value, Set, List와 같은 형태의 데이터를 In-Memory에 저장 가능
- 오픈 소스
- Multi-AZ 지원(Disaster Recovery 가능!)
- 사용 용도
- List, Set과 같은 데이터 셋 사용
- 리더보드처럼 데이터셋의 랭킹을 정렬하는 용도 필요시
- Multi AZ 기능 사용시