NEW 기획 디자인 개발 프로덕트 아웃소싱 프리랜싱

개발

AWS로 클라우드 시작하기: ③RDS

요즘, 많은 기업들이 채용 과정에서 클라우드 사용 경험을 요구하고 있습니다. 비즈니스 요구사항이 다변화하면서 자유롭게 서버를 확장/축소할 수 있는 클라우드가 많은 기업들에게 사랑받고 있습니다. AWS, GCP, NCP, Azure 등 다양한 클라우드 환경에서 가장 사랑받는 서비스를 꼽자면 AWS일 것 같습니다.

 

기존 온프레미스에 익숙한 개발자들에게 클라우드는 설정할 것들이 너무 많은 어려운 존재인데요. AWS를 처음 접하는 개발자들이 AWS를 친숙하게 이해하고, 클라우드 설계를 진행할 수 있도록 기초적인 내용을 전달하고자 총 6개의 시리즈로 아래와 같이 진행될 예정입니다.

1. VPC

2. EC2

3. RDS

4. S3 & CloudFront

5. IAM & Organizations

6.  10분 만에 만드는 고가용성 클라우드 설계

 

RDS란?

RDS는 Amazon Relational Database Service의 약자로 클라우드 상에서 제공되는 관계형 데이터베이스 서비스입니다. RDS는 다양한 관계형 데이터베이스 엔진을 지원합니다.

 

1) Mysql

2) PostgreSQL

3) MariaDB

4) ORACLE

5) Amazon Aurora

6) MS SQL Server

 

이중 가장 보편적인 Mysql/MariaDB를 중심으로 RDS 구성 과정을 다뤄보고자 합니다.

RDS에 포함되지 않는 NoSQL 역시 AWS에서 제공하며, key-value 방식의 DynamoDB 뿐 아니라 인 메모리 방식의 ElastiCache, Redis와 그래프 SQL 기반의 Neptune 등 이 있습니다.

AWS 클라우드 데이터베이스

 

 

RDS의 특징

RDS는 클라우드 기반의 데이터베이스로써, 일반적으로 웹서버에 설치해 운영하던 DB와는 조금 다른 작동 방식으로 구성됩니다. 일반적인 과정에서 RDB를 구성할 때 개발자는 아래와 같은 과정을 거치게 됩니다.

 

1) 서버 구축

2) 서버 접속 및 DBMS 설치

3) DBMS 설정 파일 변경

4) DBMS 재실행

5) DBMS 접속 및 계정 및 권한 설정 (PostrgreSQL은 접속 전 계정 및 권한 설정)

6) 서버 접속 종료 후 개발/운영 환경 접속 테스트

 

반면 RDS는 위 과정의 1,2번 과정을 거치지 않으며, 3,4,5번 과정을 클라우드 콘솔(또는 AWS CLI)에서만 수행할 수 있습니다.

 

RDS를 구성할 때에는 아래와 같은 과정을 거칩니다.

 

1) DBMS 설정 파일 생성 (기본 설정 이용 시 건너뜀)

2) RDS 구성

3) 네트워크(VPC) 환경 설정

4) 개발/운영 환경 접속 테스트

 

RDS는 기본 DBMS 설정 파일을 제공함과 동시에, 사용자만의 설정파일을 만들 수 있도록 하고, 각각의 RDS 인스턴스가 해당 설정파일을 바탕으로 실행되도록 구성합니다. 따라서, DB에 다양한 설정을 적용하고자 하는 경우에는, RDS를 실행하기 전에 설정파일을 먼저 구성하는 것이 좋습니다.

 

또, RDS 역시 인스턴스 기반의 서비스로 예약 인스턴스/Savings Plan 등을 통해 비용 할인을 받을 수 있습니다.

 

그 외에도 자체 구축 시에는 직접 설정해야 하는 Replication 설정 등도 다중 AZ 또는 읽기 전용 복제본을 구성하여 별도 구축 과정 없이 단순 설정만으로 구성이 가능합니다. 특히 메인으로 사용하는 인스턴스에 장애가 발생할 경우 자동으로 Main-Sub 구성을 변경하거나, 백업을 자동화시키는 등의 기능이 콘솔에서 굉장히 간단하게 구성되어 있습니다.

 

 

RDS 시작하기

RDS 데이터베이스

 

RDS는 일반 생성과 손쉬운 생성 두 가지 방식의 생성 과정을 제공합니다. 다만 운영 서비스를 개발할 계획이라면 조금 어렵더라도 표준 생성을 이용하여 세부 설정을 디테일하게 관리하는 것이 좋습니다.

 

엔진 옵션

엔진은 위 언급한 6개 엔진 중 한 가지를 골라, 엔진의 버전을 지정할 수 있습니다. MariaDB의 경우 10.2 버전대부터 10.6 버전대까지 지원하며, MySQL 역시 최신 Community 버전을 제공합니다.

 

템플릿

RDS의 세부 설정을 이용하려는 목적에 맞게 불러올 수 있습니다.

 

1) 프로덕션: 실제 서비스 운영에 필요한 필수 항목들이 적용됩니다. 운영 비용이 높습니다.

  • 다중 AZ 배포: 적용
  • SSD: 프로비저닝 된 IOPS SSD
  • 인스턴스 타입: 자유

 

2) 개발/테스트: 개발 과정 및 테스트 과정에 사용하기 위한 수준의 옵션을 제공합니다. 비용이 상대적으로 적습니다.

  • 다중 AZ 배포: 미적용
  • SSD: 범용 SSD
  • 인스턴스 타입: 자유

 

3) 프리티어: RDS를 맛볼 수 있게 무료로 사용 가능한 옵션으로 시작합니다. 비용이 없습니다.

  • 다중 AZ 배포: 미적용
  • SSD: 범용 SSD (20GB)
  • 인스턴스 타입: t2.micro 고정

 

구축하려는 RDS의 목적에 맞는 적당한 템플릿을 선택한 후 세부 설정을 진행합니다.

 

설정, 인스턴스 클래스, 스토리지, 가용성 및 내구성

템플릿 옵션값
위 선택한 템플릿에 따라 변화하는 옵션 값입니다.

 

설정에서는 구축하는 RDS 인스턴스의 이름과, 접속 가능한 DBMS 계정 정보를 생성합니다. 암호는 분실 시 복구 과정이 번거로우니 잘 기억해두는 것이 좋습니다.

 

DB 인스턴스 클래스에서는 구성할 RDS의 인스턴스 타입을 선택할 수 있습니다. DB 인스턴스는 일반적으로 메모리 최적화 클래스를 사용하는 것이 권장되며, 데이터 연산도 고려해야 하는 경우라면 스탠다드 클래스를 적용합니다. 프리티어를 사용할 것이 아니라면 버스터블 클래스는 RDS에 적합하지 않으니 가급적 피하는 것이 좋습니다.

 

스토리지에서는 사용할 SSD의 성능과 크기를 설정할 수 있습니다. 초기 할당되는 스토리지의 크기는 스토리지 자동 조정 기능을 통해 자동으로 확장할 수 있습니다. 예기치 못한 상황이 발생하기 전에 자동으로 스토리지를 확장하여주니 가급적 자동 조정을 활성화하는 것이 편리합니다.

 

가용성 및 내구성 메뉴에서는 다중 AZ 배포(대기 인스턴스를 생성하여, 장애 발생 시 다른 가용 영역에 있는 대기 인스턴스를 메인 인스턴스로 자동 전환) 기능을 설정할 수 있습니다. 클라우드 환경에서는 매우 드물지만 특정 가용 영역 전체에 장애가 발생할 수 있으니, 빠른 대응을 위해 대기 인스턴스를 다른 가용 영역에 만들어두는 것이 좋습니다.

 

연결 및 추가 구성

연결 메뉴

 

연결 메뉴에서는 VPC를 포함해 서브넷, 보안그룹 설정을 진행할 수 있습니다. 또 인스턴스가 배치될 메인 가용 영역을 지정할 수 있습니다. 경우에 따라 DBMS 권장 포트인 3306 포트 대신 다른 포트를 사용하고자 하는 경우 ‘추가 구성’ 버튼을 눌러 다른 포트로 지정할 수 있습니다.

 

추가 구성

RDS와 온프레미스 DB서버 간 가장 큰 차이점으로 볼 수 있습니다. 데이터베이스 설정 옵션이 있는 메뉴로 각각의 항목은 아래의 역할을 수행합니다.

 

1) 초기 데이터베이스 이름: RDS가 생성되면 자동으로 생성될 첫 Database의 이름을 지정합니다. 이름을 공란으로 둘 경우 RDS는 DBMS 필수 테이블 외에 다른 테이블을 생성하지 않습니다.

2) DB 파라미터 그룹: DB에 적용할 파라미터의 설정값입니다. AWS에서 각 DBMS 버전 별로 기본 파라미터 설정 파일이 제공되며, 해당 버전에서 처음 RDS를 생성하는 경우 디폴트로 AWS 제공 설정이 선택되어 있습니다.

  • DB 파라미터 그룹에는 Character_Set을 포함해 Collation_Connection 등 DBMS에서 DB를 처음 생성할 때 전달하는 파라미터 값들이 포함되어 있습니다.
  • 일반적으로 my.cnf 파일에서 설정하는 대부분의 값들이 파라미터 그룹에 포함되어있다고 생각하면 좋습니다. binlog_cache_size, log-bin, max_heap_table_size

3) 옵션 그룹: RDS에서 제공하는 보안 강화 옵션입니다. 일반적인 DBMS에서 설정하는 값이 아닌 RDS에 적용하는 보안 특성 값입니다. RDS에 익숙하지 않은 경우 옵션 그룹은 디폴트 값을 이용하는 것이 권장됩니다.

4) 백업: 자동 백업을 설정하여 매 정해진 시간마다 백업파일을 생성하고, 언제든지 백업본으로 돌아갈 수 있도록 합니다.

  • 백업 보존 기간: 백업 파일을 보관할 기간을 설정합니다.
  • 백업 기간: 백업을 수행할 시간을 지정합니다. 유저 방문이 적은 새벽 시간대를 활용합니다.

5) 모니터링: CPU 모니터링을 활성화하여 RDS의 상태를 조회하기에 더욱 간편하도록 설정합니다.

6) 로그 내보내기: 각각의 이벤트에 대한 로깅 여부를 설정합니다. 로깅을 설정하면 CloudWatch Logs로 각각의 이벤트가 발생할 때 알림을 받을 수 있습니다.

  • 에러 로그와 느린 쿼리 로그(슬로우 쿼리)를 활성화하면 DB 운영간 발생하는 쿼리 이슈를 실시간으로 팔로업 할 수 있습니다.

7) 유지 관리: RDS의 DBMS 버전을 자동으로 업그레이드할지, 유지 관리 기간을 설정할지 결정합니다. 자동 업그레이드는 유지 관리 기간 동안 수행하며, 유지 관리 기간을 설정하지 않으면 RDS가 임의로 사용자가 적은 시간대에 유지 관리를 수행합니다.

8) 삭제 방지: 실수로 RDS를 종료하여 데이터베이스를 삭제하는 일을 막아줍니다.

 

추가 구성까지 모든 정보를 입력하면 이제 RDS 인스턴스를 실행할 수 있습니다. RDS 최초 실행 시 최대 10분 정도 설치 및 설정 시간이 소요되며, 완료되면 바로 DB에 접속할 수 있습니다.

 

 

운영 중인 RDS 접속/변경하기

RDS 접속

 

RDS가 작동하기 시작하면, RDS 이름을 클릭하여 세부 화면에 접속할 수 있습니다. AWS가 생성해준 내 RDS의 엔드포인트를 Host로 사용하여 연결할 수 있습니다. MariaDB/MySQL 인 경우 아래 명령어로 위 DB에 접속할 수 있습니다.

 

mysql -u root --host=yonggill-rds.cwneh6dacift.ap-northeast-2.rds.amazonaws.com -p

 

RDS가 운영 중인 경우, 모든 변경 사항은 즉시 적용과 유지 관리 기간에 적용 중 선택할 수 있습니다. 운영 중인 데이터베이스라면 유지 관리 기간에 적용을 권장합니다.

 

파라미터 그룹을 이용해 RDS를 실행한 경우, RDS를 시작할 때 적용한 파라미터 그룹을 먼저 수정한 뒤 RDS 메뉴의 수정 버튼을 클릭하여 불러올 수 있습니다. 수정 작업에서는 기존에 등록된 데이터의 변조/가공이 이루어지지 않으며, 마찬가지로 유지 관리 기간에 파라미터 그룹을 갱신하도록 지정할 수 있습니다.

 

 

RDS 돌아보기

RDS는 온프레미스 서버를 이용하던 개발팀/조직에게는 구조상 큰 거부감이 들 수 있습니다. 단순히 my.cnf 파일을 변경한 후 DBMS를 재부팅해주기만 하면 모두 적용되던 기존 방식과 다르게, 즉시 적용하기 불안하고, my.cnf 파일 대신 콘솔의 설정파일을 수정하며, 실제로 적용이 된 건지 아닌지 바로 확인하기도 어렵습니다.

 

그럼에도 불구하고 RDS에 적용하고 나면 많은 일들을 알아서 해주는 그 기능과, 온프레미스 또는 EC2에 설치된 DB에 비해 월등히 빠른 속도와 유지관리 기능 자체로 매력을 갖고 있습니다. 이제 시작하는 서비스라면 비용이 조금 부담되더라도 처음부터 RDS를 세팅하는 것이 좋을 것입니다. 향후 서비스가 갑작스레 커졌을 때 RDS 덕분에 큰 고민 없이, 엄청난 시간을 들이는 dump, import 과정 없이 버튼 클릭 몇 번으로 자유로운 확장이 가능할 테니까요.

댓글 0

논현동 용용이

온라인 IT 아웃소싱 플랫폼에서 이것 저것을 담당하고 있습니다.

같은 분야를 다룬 글들을 권해드려요.

요즘 인기있는 이야기들을 권해드려요.

일주일에 한 번!
전문가들의 IT 이야기를 전달해드려요.

[구독하기] 버튼을 누르면 개인정보 처리방침에 동의됩니다.

일주일에 한 번! 전문가들의 요즘IT 이야기를 전달해드려요.

[구독하기] 버튼을 누르면 개인정보 처리방침에 동의됩니다.