RDS 읽기 전용 복제본
RDS 읽기 전용 복제본(Read Replica)은 읽기 성능을 스케일링하는 역할
애플리케이션이 RDS 데이터베이스 인스턴스에 대해 읽기와 쓰기 작업을 수행할 때, 주된 데이터베이스 인스턴스가 너무 많은 요청을 받아 성능 저하가 발생한다고 가정할때, RDS는 `읽기 전용 복제본`을 활용하여 읽기 작업을 분산한다.
주요 특징
- 최대 `15개`의 읽기 전용 복제본 생성 가능
- 동일한 가용 영역 또는 여러 리전의 걸쳐 생성 가능
- 주 RDS 인스턴스와 복제본 사이에 `비동기식 복제` 발생
비동기식 복제의 의미
`읽기의 일관성` 유지 하는 것. 예를 들어 읽기 전용 복제본을 읽어들이면 모든 데이터를 얻을 수 있음
읽기 전용 복제본의 활용
1. `읽기 스케일링` : 주된 용도, 읽기 부하 분산
2. `데이터베이스로 승격`: 필요시 복제본을 독립적인 `데이터베이스로 승격`하여 쓸 수 있음. 복제 매커니즘에서 벗어나고 독립적인 인스턴스로 동작하게 됨
사용 시 주의사항
읽기 전용 복제본을 사용하려면, 애플리케이션에서 연결 설정을 업데이트해야 하며, RDS 클러스터 상의 모든 읽기 전용 복제본 목록을 활용하여 연결을 최적화할 수 있음
이러한 RDS의 읽기 전용 복제본은 읽기 스케일링을 통해 애플리케이션 성능을 최적화하는데 유용하며, 필요 시 데이터베이스 인스턴스로 승격하여 더욱 유연하게 사용할 수 있음
읽기 전용 복제본: 실제 사용 사례
평균적인 로드를 감당하고 있는 프로덕션 데이터베이스 존재.
이 데이터베이스는 메인 RDS 데이터베이스 인스턴스에서 읽기와 쓰기 작업을 수행하고 있음
새로운 팀이 해당 데이터를 기반으로 보고서와 분석을 실시하고자 하는데 만약 이 보고 어플리케이션을 메인 RDS 데이터베이스에 연결하면 다음과 같은 문제가 발생할 수 있음
- 데이터베이스 `오버로드` 발생
- 기존 프로덕션 애플리케이션의 `속도 저하`
읽기 전용 복제본 활용
- 새로운 워크로드를 위한 `읽기 전용 복제본` 생성
- 메인 RDS DB 인스턴스와 읽기 전용 복제본 간이 `비동기식 복제`가 발생
- 보고 애플리케이션은 생성된 읽기 전용 복제본에서 `읽기 작업과 분석`을 실행
그 결과로 프로덕션 애플리케이션은 `전혀 영향을 받지 않으며` 새로운 팀은 필요한 데이터 분석을 수행할 수 있다.
주의사항
읽기 전용 복제본에선 `SELECT` 명령문만 사용 가능. SQL에서 읽기에 해당하는 키워드
데이터베이스를 변경하는 `INSERT`, `UPDATE`, `DELETE` 같은 키워드는 사용 불가
정리
이렇게 읽기 전용 복제본을 활용하면 기존 시스템에 영향을 주지 않으면서도 새로운 요구사항을 효과적으로 처리할 수 있다. 데이터 분석이나 보고서 생성과 같은 읽기 집약적인 작업에 특히 유용
RDS Read Replicas - Network Cost
AWS에서는 일반적으로 하나의 가용 영역에서 `다른 가용 영역`으로 데이터가 이동할 때 `비용`이 발생
하지만 예외가 존재하며 이 예외는 보통 RDS 읽기 전용 복제본과 같은 관리형 서비스에서 나타남
동일 리전 내 복제: 무료
RDS 읽기 전용 복제본이 원본과 `다른 가용 영역`에 있더라도 `동일한 리전`내에 있다면 비용이 발생하지 않음
예를 들어:
- 원본 RDS DB: us-east-1a
- 읽기 전용 복제본: us-east-1b
인 경우, 비동기식 복제로 인한 트래픽이 하나의 az에서 다른 az로 이동하더라도 `무료`이다.
다른 리전 내 복제: 유료
복제본이 `서로 다른 리전`에 존재하는 경우에는 달라진다.
예를 들어:
- 원본 RDS DB:us-east-1
- 읽기 전용 복제본: eu-west-1b
인 경우, RDS DB 인스턴스와 복제본이 여러 리전을 이동해야 하기 때문에 `네트워크 복제에 대한 비용이 발생`
RDS 다중 AZ Disater Recovery
RDS 다중 AZ는 `재해 복구(Disater Recovery)`를 위한 해결책
- `마스터 데이터베이스 인스턴스`: 주 가용 영역에서 읽기와 쓰기 수행
- `스탠바이 인스턴스`: 다른 가용 영역에 위치하며, 마스터와 `동기식으로 복제`
동작 방식
- 애플리케이션은 `하나의 DNS 이름`으로 마스터 DB와 통신
- 마스터 DB의 모든 변경 사항이 실시간으로 스탠바이 인스턴스에 복제
- 마스터에 문제가 생기면 `자동으로 장애 조치(Failover)`가 수행
주요 특징
- `높은 가용성` : 전체 AZ 또는 네트워크 손실에 대비
- `자동 장애 조치`: 수동 개입 없이 스탠바이가 새로운 마스터로 승격
- `투명한 전환`: 애플리케이션은 동일한 DNS 이름으로 계속 연결
주의 사항
스탠바이 DB는 읽기나 쓰기, 스케일링 목적으로 사용되지 않음. 오직 `장애 대비용`으로 존재
읽기 전용 복제본과의 관계
`읽기 전용 복제본`도 `다중 AZ로 설정`할 수 있다. 읽기 성능 향상과 재해 복구를 동시에 달성하고자 할때 유용한 옵션
RDS 다중 AZ는 고가용성을 보장하는 강력한 기능이며 중요한 프로덕션 데이터베이스를 운영할때 이 기능을 활용하면 예기치 못한 장애 상황에서도 서비스의 연속성을 유지할 수 있다. 다만 이 기능이 성능 향상이 아닌 `재해 복구`에 초점을 맞추고 있다는 점을 항상 기억해야 한다.
RDS - From Single-Az to Multi-Az
`무중단 전환`이 가능하다!
RDS 데이터베이스를 단일 AZ에서 다중 AZ로 전환할때 `다운타임이 전혀 없다`
즉 데이터베이스를 중지할 필요가 없다는 뜻
전환 과정
- 데이터베이스 수정: 단순히 데이터베이스 설정에서 `다중 AZ 기능`을 `활성화`
- 자동 복제: RDS가 자동으로 `마스터 데이터베이스`와 `동기식 복제본`인 `스탠바이 데이터베이스`를 설정
모든 과정은 백그라운드에서 자동으로 작업되기 때문에 사용자는 아무것도 할 필요 없다.
기술적 내부 과정
RDS는 다음과 같은 과정을 통해 무중단 전환을 실헌함
- 스냅샷 생성: 기본 데이터베이스의 스냅샷을 자동으로 생성
- 스탠바이 복원: 생성된 스냅샷을 새로운 스탠바이 데이터베이스에 복원
- 동기화: 두 데이터베이스 간 동기화 설정
- 완료: 스탠바이 데이터베이스가 메인 RDS 데이터베이스의 모든 내용을 수용하여 다중 AZ 설정이 완료
주의 사항
전환 과정 중에 약간의 성능 저하가 있을 수 있음. 이는 백그라운드에서 진행되는 복제 작업 때문인데 일시적이며, 전환이 완료되면 정상화됨
결론
RDS의 단일 AZ에서 다중 AZ의 전환은 매우 간단하고 효율적이며 데이터베이스의 가용성을 크게 향상 시키면서도 운영 중단 없이 수행할 수 있어 유용
참고강의
https://www.inflearn.com/course/aws-%EC%9E%85%EB%AC%B8
'백엔드 공부일지 > AWS 공부일지' 카테고리의 다른 글
[AWS] DynamoDB 기초부터 Index, Query, Scan 활용까지 (1) | 2024.11.04 |
---|---|
[AWS] S3 사용 용례 & 암호화 (1) | 2024.10.06 |
[AWS] S3와 S3 스토리지 종류 (0) | 2024.10.06 |
[AWS] RDS 관계형 데이터베이스 서비스 (1) | 2024.09.29 |
[AWS] EC2, EBS, ELB (1) | 2024.09.23 |