읽기 전용 복제본은 read scalability를 높입니다.
읽기 전용 복제본은 최대 15개까지 생성할 수 있습니다(MySQL은 최대 5개).
읽기 전용 복제본은 동일한 가용영역이나, 혹은 다른 가용영역과 다른 리전에 생성할 수 있습니다.
RDS DB instance 읽기 복제본과 RDS DB instance 사이에서 비동기식 복제가 발생합니다.
Amazon RDS에서 소스 DB 인스턴스의 스냅샷을 사용 해 두 번째 DB 인스턴스를 생성하고,
엔진의 기본 비동기식 복제 기능을 사용해 소스 DB 인스턴스가 변경될 때마다 읽기 전용 복제본을 업데이트 합니다.
read replica는 복제본을 DB로 사용하고자 한다면 DB로 승격시켜 사용할 수도 있습니다.
읽기 전용 복제본은 select 문만 사용할 수 있습니다.
https://aws.amazon.com/ko/rds/features/read-replicas/
aws에서 한 가용 영역에서 다른 가용 영역으로 데이터 네트워킹이 발생할 때 비용이 발생합니다.
하지만 읽기 전용 복제본이 DB와 동일한 리전에 있다면 다른 가용 영역에 있더라도 비용이 발생하지 않습니다.
예를 들어,
같은 리전에서 a 가용영역에 RDS DB instance가 존재하고 b 영역에 read replica가 존재하여
비동기식 복제 네트워크가 발생할 때 비용이 발생하지 않습니다.
보통의 관리형 서비스에서는 하나의 AZ에서 다른 AZ로 발생하는 트래픽에 대해서는 비용이 발생하지 않습니다.
하지만 서로 다른 리전에서 발생하는 트래픽에 대해서는 데이터 복제에 네트워크 비용이 발생합니다.
예를 들면,
서울 리전에 RDS DB instance가 존재하고, 도쿄 리전에 read replica가 존재한다면 서로 다른 리전을 넘나드는 네트워크이기 때문에
데이터 복제에 대한 네트워크 비용이 발생합니다.
다중 AZ(가용 영역)은 재해를 대비하기 위해 구성합니다.
A 가용 영역에 메인 DB instance가 존재할 때, B 가용 영역의 DB standby intance에 동기식으로 복제합니다.
이는 마스터 DB 인스턴스의 모든 변화를 동기적으로 복제하는 것으로, 마스터 DB 인스턴스의 변경사항이 대기 인스턴스에도 그대로 복제된다는 것을 의미합니다.
다중 AZ는 재해 복구를 위해 구성한다고 앞에서 말했습니다.
다중 AZ를 구성하면, 애플리케이션에서 하나의 DNS를 가지고 마스터 DB 인스턴스에 읽기/쓰기 작업을하다가
장애가 발생하는 경우 이 DNS를 그대로 사용하면서 standby 인스턴스로 통신이 자동적으로 이루어져 자동 failover(네트워크 등에서 이상 발생 시 예비 시스템으로 자동 전환되는 기능)가 수행됩니다.
다중 AZ를 구성함으로써 가용성을 높일 수 있으며, 가용 영역 자체에 문제가 발생하거나,
네트워크 문제 혹은 마스터 DB 인스턴스 자체에 문제가 발생하거나 DB 인스턴스의 스토리지에 문제가 발생할 때 standby instance가 마스터 DB 인스턴스가 될 수 있도록 합니다.
애플리케이션에서 별도의 작업을 할 필요 없이 자동으로 standby DB instance로 연결이 이루어지며 마스터 DB 인스턴스로 승격되어 사용하게 됩니다.
RDS Multi AZ는 scaling을 위한 것이 아닙니다.
마스터 데이터베이스에 문제가 발생했을 경우
재해 복구를 위해 장애 조치 목적으로 standby DB instance를 하나 두는 것이고,
누구도 대기 인스턴스에서 읽거나 쓰기 작업을 할 수 없습니다.