Cloud 기초/AWS 기초

AWS RDS 기초 (RDS MariaDB 생성)

Cloudy Allen 2023. 9. 10. 01:51

 

AWS RDS

 

RDS는 Relational Database Service의 약자로 AWS에서 제공하는 Fully Managed DB Service입니다. 

한 마디로 클릭 몇 번으로 만들기만 하면 AWS에서 알아서 다 해주는 관계형 DB 서비스라는 의미입니다.

 

Chat GPT에게 RDS가 뭔지 물어봤습니다. 그랬더니 한 10가지 키워드로 정리해주었습니다. (그저 갓피티)

그럼 10가지 키워드에 맞춰서 한번 볼까요?

 

1. Managed Databases

2. High Availability

3. Scalability

4. Security

5. Automated Backups and Snapshots

6. Monitoring and Alerts

7. Read Replicas

8. Data Migration

9. Global Databases

10. Resource Optimization

 

Managed Databases라는건 다른 AWS에서 제공하는 EC2같은 서비스처럼 사용자가 클릭으로 선택만 하면

알아서 설치부터 관리까지 해주는 데이터베이스라는 의미입니다. 

그리고 대표적인 관계형 데이터베이스인 MySQL, PostgreSQL, MariaDB, AuroraDB 등을 지원합니다.

 

High Availability도 비슷한 의미인데요.

결국 DB와 관련된 중요한 서비스인 백업에 관련된 내용인데

여러 Region에서 DB를 구축하여 하나의 Region에서 문제가 생겨도 다른 Region의 DB를 통해 복구하면

문제없이 계속해서 DB 접근을 할 수 있는 장점이 있습니다.

 

Scalabilty는 DB의 메모리 크기를 필요에 따라 늘였다 줄였다 하는 것이 가능하다는 의미이고,

Security는 DB 보안과 관련된 여러 서비스들이나 리소스 접근과 관련된 다양한 인증 서비스들도 제공한다는 의미입니다.

 

Automated Backups and Snapshot은 RDS의 대표적인 기능 중에 하나인데요.

RDS는 Snapshot이라는 기능을 통해 특정 시점의 DB의 상태를 사진을 찍듯이 저장하여 export할 수 있습니다.

 

Monitoring and Alerts도 제공하는데요

현재 DB의 status나 DB를 저장하거나 로드하는 과정에서 문제는 없었는지 이런 모니터링 기능도 제공하고 있습니다.

 

Read Replicas는 실데이터를 읽는 트레픽을 분산시켜 데이터를 읽기만 하는 경우에 속도개선을 제공하는 서비스입니다.

 

Data Migration은 다른 DB로 데이터를 옮기는 서비스인데요. 이 때 중요한 것은 데이터 유출이 일어나지 않는 것이겠죠? 

그래서 AWS는 Private Link, VPN 등을 제공하여

안전하게 다른 VPC 혹은 더 나아가서 다른 클라우드 서비스로의 안전한 데이터 이동을 위한 다양한 방안을 제시합니다.

 

Global Database는 AWS에서 Region이라는 개념이 있는데 다양한 Region에서 DB를 제공함으로써

지역에 따른 서비스 이용 퍼포먼스가 떨어지지 않도록 하는 서비스도 제공하고 있습니다.

 

마지막으로 Resource Optimization는 auto scaling을 통해

순간적으로 많은 데이터의 저장이 필요할 때는 데이터의 공간을 자동으로 늘리고

데이터의 남는 공간이 많아질 때는 데이터의 사이즈를 자동으로 줄여서 데이터 공간과 비용의 효율적 관리를 제공합니다.

 

지금까지  RDS의 특징에 대해서 알아봤는데요. 그러면 한번 직접 간단하게 만들어볼까요?

한번 AWS에서 제공하는 MySQL을 만들어봅시다.

 

RDS 메인 화면

 

검색창에 RDS라고 검색해서 나오는 서비스를 클릭하면 보이는 화면처럼 RDS 메인화면으로 이동할 수 있습니다.

여기서 오른쪽 위쪽에 노란 버튼으로 보이는 데이터베이스 생성을 클릭해봅시다.

그러면 아래 화면으로 이동합니다.

 

RDS 생성 화면

 

RDS를 생성하는 화면에 오면 아까 말씀드린 것처럼 AWS에서 제공하는 다양한 DB 엔진을 제공합니다.

지금 우리는 MySQL을 선택해서 만들 겁니다.

Aurora는 AWS에서만 제공하는 RDS인데, 보시는 것처럼 MySQL 혹은 PostgreSQL과 호환이 되는 DB 엔진을 제공합니다.

버전은 자동으로 선택되는 버전을 선택해줍니다.

그리고 밑으로 내리면 다음과 같은 화면이 보이는데요.

 

 

여기서 우리는 프리티어를 선택하고 인스턴스 식별자는 cloudman-db-1으로 만들겠습니다. 

이건 우리의 DB가 만들어지는 가장 컴퓨터를 구별하는 이름이라고 생각하면 됩니다.

자격증명 설정은 DB에 접속하는 인증을 위해 필요한 부분인데요.

마스터 사용자의 이름은 cloudman으로 하고 암호는 자동으로 생성되는 암호를 쓰도록 하겠습니다.

 

인스턴스 구성

 

밑으로 내려가면 인스턴스 구성이 보이는데요. DB가 설치되는 가상 컴퓨터의 사양이라고 보시면 됩니다.

그냥 아무런 변경 없이 이대로 설정하고 넘어가겠습니다.

 

스토리지 구성

 

스토리지는 말그대로 저장공간의 사양을 어떻게 할 것인가인데요.

범용 SSD와 메모리 사이즈는 20으로 하여 그대로 넘어가겠습니다.

 

연결 설정

 

연결설정은 DB에 접근하기 위한 네트워크 구성에 관한 부분입니다.

우선 EC2 컴퓨팅 리소스에 연결함 /연결 안함 의 옵션인데요.

기본적으로 AWS에서 제공하는 managed service 형태의 PaaS는 대부분 가상 컴퓨팅 환경에서 서비스를 만들어서 제공합니다.

그러면 그 서비스가 위치한 가상 컴퓨터를 따로 사용자가 접근해서 관리하겠냐 아니면 그냥 서비스만 이용하게냐를 물어보는 것입니다.

지금은 따로 가상컴퓨팅에 다른 작업이 필요하지 않으니까 리소스 연결 안 함으로 선택하겠습니다.

 

그 밑에는 어떤 프로토콜, 즉 어떤 인터넷 주소 시스템을 쓸 것인가를 선택하는 부분입니다.

일반적으로는 IPv4를 이용하기 때문에 변경없이 넘어갑니다. 

 

밑으로 가면 VPC와 서브넷을 선택하는 부분이 있는데요. 이건 VPC를 설명하는 부분에서 자세히 설명하겠지만

간단하게 설명하면 가상의 네트워크 공간을 정해서 그 네트워크공간에 DB클러스터나 인스턴스가 있다고 이해하시면 됩니다. 

여기서는 원래부터 있는 기본 VPC와 Subnet을 이용하겠습니다.

 

퍼블릭 액세스는 외부 네트워크로 들어온 접근을 허용할 것인가를 선택하는 부분인데

당연히 보안상 퍼블릭 접근을 허용하지 않는 것이 좋겠죠?

 

VPC 보안 그룹(Secuirty Group)은 일종의 방화벽이라고 보시면 되는데

VPC로 들어오는 특정 IP나 다른 SecurityGroup을 허용/차단하는 Inbound rule과

VPC에서 나가는 특정 IP나 다른 SecurityGroup을 허용/차단하는 Outbound rule이 있습니다.

여기서는 기본적인 Security Group을 설정한 상태로 넘어가겠습니다.

다른 주제에서 Security Group은 더 자세하게 다루겠습니다.

 

RDS Proxy는 RDS를 접속할 때 직접 접속하지 않고 프록시 주소를 타고 접속하도록 제공하는 서비스입니다.

 그 밖에 port는 기본적으로 MySQL이나 MariaDB의 경우 3306포트를 쓰지만 다른 포트를 사용하는 것도 가능합니다.

그리고 이제 생성 버튼을 누르면 끝입니다.

 

그러면 이제 이렇게 생성중이라는 상태가 뜨고 

 

 

조금 더 기다리면 다음과 같이 사용가능으로 상태가 바뀝니다.

 

 

이렇게 그냥 클릭 몇번으로 MariaDB를 가상 컴퓨터에 설치해서 띄우는 것까지 끝났습니다. 정말 간단하죠?

 

RDS를 생성하는 AWS CLI로 보겠습니다.

 

aws rds create-db-instance \
  --db-instance-identifier YourDBInstanceName \
  --db-instance-class db.t2.micro \
  --engine mariadb \
  --allocated-storage 20 \
  --master-username YourMasterUsername \
  --master-user-password YourMasterPassword \
  --db-name YourDatabaseName \
  --vpc-security-group-ids YourSecurityGroupID \
  --availability-zone YourAvailabilityZone \
  --storage-type gp2

 

보시면 우리가 콘솔에서 클릭으로 설정했던 내용을 옵션으로 설정하고 있습니다.

CLI로 리소스를 만들 때의 장점은

해당 명령어를 공유하면 다른 사람이 리소스를 만들어도 동일한 조건으로 리소스를 만들 수 있고

여러 번 실행할 수도 있다는 장점이 있습니다.

하지만 그만큼 어떤 명령어가 있는지 찾아보기도 어렵고 저 많은 옵션을 다 외우기도 힘들죠.

그래서 사실 콘솔이나 AWS CLI를 통한 리소스 생성보다는

테라폼이나 CDK, SDK 등 IaC를 활용한 리소스 생성이 더 효율적인 인프라 구축 방법이라고 할 수 있습니다.

 

다음에는 RDS를 설정하면서 나왔던 VPC, Security Group 등의 개념에 대해서 알아보겠습니다.