모노산달로스의 행보

[AWS] RDS(Relational Database Service)의 대한 이해 본문

Infrastructure/AWS

[AWS] RDS(Relational Database Service)의 대한 이해

모노산달로스 2024. 10. 17. 16:13

aws - RDS

 

AWS(Amazon Web Services)

 

AWS(Amazon Web Services)는 아마존이 제공하는 클라우드 컴퓨팅 서비스로, 서버, 스토리지, 네트워크 등을 클라우드를 통해 이용할 수 있습니다. 높은 안정성과 확장성을 갖춘 AWS는 클라우드 분야에서 높은 점유율을 차지하고 있습니다. 스파게티처럼 많은 기술이 존재하여 올바른 사용을 위해서는 꼭 학습이 필요합니다. 반대로 배워두면 많은 클라우드 기술을 사용할 수 있게 됩니다.

 


RDS(Relational Database Service)

What is RDS(Relational Database Service)?

 

RDS(Relational Database Service)란 SQL 쿼리를 사용하는 데이터베이스를 위한 관리 서비스입니다. 다시 말해, aws에서 관리하는 관계형 데이터베이스를 생성할 수 있습니다.

 

RDS에서 생성 가능한 데이터베이스
Pstgres
MySQL
MariaDB
Oracle
Microsoft SQL Server
IBM DB2
Aurora(AWS Proprietary database)

 

RDS는 EC2 instance에 데이터베이스를 배포하는 것과는 조금 다릅니다. 완전 자동화, OS fetch, 백업 및 복원 기능 등 관리 서비로서 역할을 수행합니다. 다만, EC2 instance와는 다르게 SSH로 접근하는 것은 불가능합니다.

 

 


 

Storage Auto Scaling

What is Storage Auto Scaling?

 

RDS에서 데이터베이스를 생성하는 경우 스토리지 용량을 지정해야 합니다. 그런데 시간이 지나고 초기에 지정한 스토리지 용량으로 운영이 힘들어진다면 어떻게 될까요?

 

이러한 경우 RDS가 지정한 임계값을 통하여 자동으로 스케일링을 수행할 수 있습니다. 심지어 DB를 중단하지 않고 스케일링이 이루어집니다. 다만, Maximum Storage Threshold(최대 저장 임계값)을 설정하여 스토리지 최대 한도를 정해야 합니다. 이는 예측하기 힘든 애플리케이션 운영시 유용하게 사용됩니다.

 

자동으로 스토리지가 수정되는 경우는 아래와 같습니다.

할당된 저장 공간의 10% 미만이 남은 경우
부족한 저장 공간이 5분 이상 지속되는 경우
마지막 수정 이후 6시간이 지난 경우

 

 


 

RDS Read Replicas for read scalability

The relationship of read replicas in RDS

 

 

Read Replica란 읽기 전용 복제본이라고도 부르며, 애플리케이션이 데이터를 읽어오는 것만 가능한 데이터베이스 복제본입니다.

 

기본적으로 애플리케이션은 데이터베이스에 Read 작업과 Write 작업을 수행합니다. 이때, 메인 데이터베이스가 너무 많은 Read 요청을 받게 되면 성능이 저하되므로 읽기 전용 복제본을 만들어 Read Scalability를 확보하는 것입니다.

 

RDS에서 읽기 전용 복제본은 최대 5개까지 생성이 가능하며, 동일한 AZ(Availability Zone), 서로 다른 AZ 또는 서로 다른 리전에 생성될 수 있습니다. 이때, 애플리케이션은 복제본을 사용하기 위해 새롭게 연결 정보를 업데이트해야 합니다.

 

또한 복제본은 메인 데이터베이스로 승격할 수도 있으며, 이 경우 자체 생애주기를 가지게 됩니다.

 

Async Replication

What is ASYNC?

 

Async(Asynchronous)란 흔히 비동기 프로그래밍에서 사용되는 용어입니다. 쉽게 말해 여러 작업이 동시에 실행될 수 있다는 것을 의미합니다. 

 

RDS에서 Async replication이란 데이터를 메인 데이터베이스에 먼저 작성된 이후에 복제 데이터베이스에 전달하는 것을 의미합니다. 이에 따라 결국 복제본의 데이터는 메인 데이터베이스와 일관성을 유지할 수 있게 됩니다.

 


 

Use Case

RDS read replica use case

 

그럼 이러한 read replica가 실제로 어떤 경우 사용되는지 알아봅시다.

 

평균적인 로드를 감당하고 있는 생산 데이터베이스가 존재한다고 가정합시다. 이때, 새롭게 기존 데이터를 기반으로 분석 및 보고를 수행해야 하는 상황이 발생했습니다. 이를 위해 새롭게 Reporting Application이 생겨났습니다.

 

그런데 Reporting Application이 생산 데이터베이스에서 데이터를 읽어온다면 어떻게 될까요? 기존에 비해 늘어난 작업량으로 인해 오버로드가 발생하고, Production Application의 속도가 느려질 것입니다.

 

이를 해결하기 위해서 read replica를 생성할 수 있습니다. 이 경우 Production Application이 영향을 받지 않으므로 좋은 해결책이 될 수 있습니다.

 

 


Networking Cost

 

Networking cost based on region and AZ

 

잠시 Networking Cost(네트워킹 비용)에 대한 이야기를 해봅시다. 앞서 read replica는 동일한 AZ, 서로 다른 AZ 또는 서로 다른 지역에 생성될 수 있다고 이야기했습니다.

 

기본적으로 한 데이터가 다른 AZ로 넘어가는 경우 비용이 발생하게 됩니다. 하지만 RDS read replica의 경우 다른 AZ여도 같은 지역에 존재한다면 비용이 발생하지 않습니다.

 

 

Multi-AZ

How Multi-AZ works?

 

 

그럼 본격적으로 Multi-AZ(다중 가용영역)에 대해 알아보겠습니다.

 

다중 가용영역은 주로 Disaster Recovery(재해 복구)를 위해서 사용합니다. 이는 스탠바이 인스턴스를 다른 AZ에 복제하는 것으로부터 시작합니다. stanby replica는 async replication을 통해 이루어지므로 변경사항이 그대로 복제됩니다.

 

이는 하나의 DNS를 통해 통신하는 경우, 메인 데이터베이스에 문제가 생기면 자동으로 스탠바이 데이터베이스도 failover(장애 조치)가 수행된다는 뜻입니다. 이때, 자동으로 stanby replica가 메인 데이터베이스로 승격하며 장애를 해결하게 됩니다.

 

이러한 과정은, High Availability를 확보를 의미하기도 합니다. 따라서 해당 기능을 다중 가용영역이라고 부르는 것입니다.

 

 

From Single-AZ to Multi-AZ

The process of creating a standby database

 

 

그렇다면 Single-AZ(단일 AZ)로부터 Multi-AZ(다중 AZ)로 전환이 가능할까요?

 

다중 AZ로 전환하는 작업은 다운타임이 없습니다.(Zero downtime opertaion) 즉, 데이터베이스를 중지하지 않아도 전환이 가능합니다. 간단하게 데이터베이스 수정 버튼을 누르고 다중 AZ를 활성화하면 됩니다.

 

이는 replication과정이 내부적으로 다음과 같이 작동하기 때문입니다.

1. RDS가 기본 데이터베이스의 스냅샷을 저장합니다. (EBS snapshot과 같은 원리)
2. 스냅샷은 새로운 스탠바이 데이터로 복원됩니다.
3. 복원된 후 동기화 과정이 일어납니다. 따라서 스탠바이 데이터베이스는 메인 데이터베이스의 모든 데이터를 가져옵니다.

 


 

RDS의 기본적이고 전반적인 내용을 정리한 포스트입니다. 다음으로 Aurora database에 대해 알아본 뒤 순차적으로 Security와 Cache까지 나아가 보겠습니다.