Amazon RDS 배포 구성(Multi-AZ, Read Replica)과 스케일링

이민석's avatar
Sep 25, 2024
Amazon RDS 배포 구성(Multi-AZ, Read Replica)과 스케일링

개요

최근 3개월 동안 비용 절감 및 최적화로 다양한 AWS 서비스를 사용 및 개선하였습니다.
그 중에서는 가장 높은 비용을 차지하는 Amazon RDS 및 RDS Aurora도 있었습니다.
하지만 정작 Amazon RDS 가용성 및 배포 구성에 대해서 잘 모르는 것 같아서 추가 학습을 했습니다.

  1. Amazon RDS란?

  2. Multi-AZ 배포린?

  3. Read Replica란?

  4. Multi-AZ + Read Replica란?

  5. Backup & Snapshot

  6. RDS 수동 Scaling

Amazon RDS 란?

Amazon RDS*는 AWS 클라우드에서 관계형 데이터베이스를 제공하는 서비스입니다.
다양한 옵션들을 통해서 설치, 운영 및 확장에 용이하게 사용이 가능합니다. - [Ref]

Multi-AZ 배포란?

Multi-AZ 옵션을 활성시키면 Amazon RDS에서 Warm Standby 전략을 사용할 수 있습니다. 해당 옵션을 활성화하면 대기 인스턴스(Standby RDS)*가 하나 활성화 됩니다. 이로 인해 아래의 이점을 누릴 수 있습니다. - [Ref]

  • Automatic Failover

  • Synchronous Replication

  • Enabled with one click

대기 인스턴스(Standby Instance)*
RDS Multi-AZ는 말 그대로 사용하지 않는 데이터베이스를 1개 구매해야 합니다.
따라서 재해복구(DR, Disaster Recovery) 관점에서는 좋을 수 있습니다.

만약 아래와 같은 구조라면 db.t3.medium 2개의 비용이 청구됩니다.
- Instance : db.t3.medium
- Standby Instance : db.t3.medium

Read Replica란?

Read Replica 옵션을 활성화시키면 Amazon RDS에서 Warm Standby 전략을 사용할 수 있습니다. 해당 옵션을 활성화하면 읽기 전용 인스턴스(RDS Read Replica)*가 생깁니다. 읽기 전용 인스턴스는 말 그대로 읽기(Read) 작업만 가능한 인스턴스 입니다. 이로 인해 아래 이점을 누릴 수 있습니다. - [Ref]

  1. 추가 읽기 용량으로 RDS 로드*에 대한 부담 완화

  2. 다른 Region의 애플리케이션 데이터를 가깝게 가져오기

  3. 재해 발생 시 Replication을 마스터 노드로 승격시켜서 복구 가능

Multi-AZ vs Read Replica
Multi-AZ는 Synchronous Replication인데 반해,
Read Replica는 Asynchronous Replication입니다.
동기(Sync), 비동기(Async) 특징을 기억하십시오.

읽기 전용 인스턴스(Read Replica)*
RDS Read Replica를 활성화하면 읽기 작업에만 쓰이는 RDS 인스턴스가 하나 생깁니다. 따라서 해당 인스턴스에 대해서 인스턴스 타입에 맞는 비용이 추가 지출됩니다.

만약 아래와 같은 구조라면 db.t3.medium 2개의 비용이 청구됩니다.
- Master : db.t3.medium
- Read Replica : db.t3.medium

Multi-AZ + Read Replica란?

고가용성을 위해서 Multi-AZ를 활성화하고 읽기 성능 강화를 위해서 Read Replica를 병행해서 실행 가능합니다. 이 경우, Standby Replica와 Read Replica가 생성됩니다. 이때 클라이언트는 Standby Replica에는 읽기 권한이 없으며 Read Replica에만 읽기 권한이 할당됩니다. - [Ref]

Backup & Snapshot

Amazon RDS는 인스턴스 백업 기간 동안 RDS 혹은 Multi-AZ 클러스터의 자동 백업*을 생성하고 저장합니다. 이 파일은 Amazon S3에 DB Snapshot 형태로 저장됩니다. - [Ref]

RDS 수동 Scaling

Amazon RDS에서는 자동 수평, 수직 확장이 지원되지 않습니다.
제한 적인 범위에서의 읽기 수평 확장(Scale Out)*수직 확장(Scale Up)*만 지원합니다.

읽기 수평 확장(Sacle out)*
읽기 작업에 대한 수평 확장 기능은 Read Replica를 활성화 하는 것으로 가능합니다.
해당 작업은 수동으로 진행되며 자동화를 위해서는 CloudWatch Metric + Lambda 등의 리소스를 활용하여야 합니다.

수직 확장(Scale Up)*
전체 작업에 대한 수직 확장은 Amazon RDS Instance Type을 변경해야 합니다.
해당 작업은 수동으로 진행되며 자동화를 위해서는 CloudWatch Metric + Lambda 등의 리소스를 활용하여야 합니다.

수직 확장 중에는 데이터베이스 Connection이 불안정해집니다. - [Ref]

  1. Multi-AZ가 비활성화된 RDS는 Connection이 끊깁니다.

  1. Multi-AZ가 활성화된 RDS는 Connection이 유지되나 일부 불안정한 시간이 수초~ 수십초 내외로 지속될 수 있습니다. 해당 원인은 RDS Instance의 트래픽이 RDS Standby Instance로 바뀌면서 DNS 레벨에서 변경된 IP 주소가 반영되는데 걸리는 시간입니다.

CloudWatch Metrics에서 확인해야할 주요 지표는 다음과 같습니다. - [Ref]

  1. 성능 지표 : CPUUtilization, FreeableMemory, FreeLocalStorage

  2. 지연시간 지표 : ReadLatency, WriteLatency, DMLLatency, SelectLatency, CommitLatency

  3. 버퍼 지표 : BufferCacheHitRatio

참고 자료

Share article
RSSPowered by inblog