RDS Read Replicas for read scalability
<aside>
🪒
설명

- 최대 15개의 Read Replicas 생성 가능
- AZ / Region 상관 X
- 메인 DB와 복제 DB는 비동기로 이루어짐
- own DB로 승격시켜 사용 가능
</aside>
<aside>
🕝
사용 예시
- 생산 부서에서 APP ↔ DB 운영 상황
- 기획 부서에서 DB 접근하여 데이터를 분석을 하고자 접근 요청
- 메인 DB에 접근 시 Overload 발생 → 앱 속도 저하
- read replicas DB를 생성
- SELECT 명령어만 사용 가능
- INSERT, UPDATE, DELETE 명령어는 DB 자체를 변경하기 때문에 사용 불가능
</aside>
<aside>
🀄
RDS Read Replicas Network Cost

- 같은 리전, 다른 AZ ⇒ 무료
- 다른 리전, 다른 AZ ⇒ 유로
⇒ 즉 Croos-Region의 경우 복제에 대한 돈을 지불 해야함
</aside>
<aside>
🀄
실제 사용 예시
EC2 - RDS 관계

- RDS를 쓰기 전용, 읽기 전용 2가지로 분리 ⇒ 부하 분산
MySQL - RDS DB

- RDS DB → DELETE, UPDATE, INSERT 작업
- RDS DB read replica → SELETE(읽기) 작업
</aside>
Multi AZ
<aside>
👗
설명

- 주로 재해 복구에 사용 ⇒ 안정성 증가
- 사진 ex)
- RDS Master DB가 AZ A에 존재한다면 복제로 standby DB를 AZ B에 동기 replication으로 생성
- master DB의 변경이 그대로 standby instance에 복제(동기이기 때문)
- 하나의 DNS name을 사용하여 master DB에 문제가 발생시 standby DB가 자동으로 장애 대응을 하는 구조 → 가용성 증가
- Standbt DB가 Master DB로 자동으로 승격 가능
단점
- 예비용 EC2 instance가 하나 더 지속적으로 운영 중이니 비용 2배 지불
</aside>
Read Replica VS Multi -AZ
<aside>
🌌
- 복제의 목적
- Multi-AZ
- 서비스가 항상 가동해야 하는 가용성을 위함 → 안정성
- 부하 분산을 통한 성능 향상 목적 X
- fali over(자동 복구) 가능
- 쓰기 작업 실시한 즉시 자동 예비 instance에 복제 → 데이터 항상 일치
- Read Replica
- 성능 향상을 위한 서비스
- fali over(자동 복구) 불가능
- 쓰기 작업 실시 후 약간의 시간차를 가지고 데이터가 복구 → 데이터 일치하지 않을 가능성 존재
</aside>