AWS

RDS를 간단하게 배워보자1/2

elikim 2021. 3. 7. 00:00

학습 목표

 

RDS 데이터베이스 인스턴스 만들기

읽기 전용 복제본 생성하기

DynamoDB에서 테이블 생성해보기

 

시작하기에 앞서,

1. 어떤 DB 엔진을 쓸 것인가.

 

 (1) AWS에서는 6가지 DB 엔진을 사용할 수 있다.

  • MySQL

 블로그 및 전자상거래와 같은 OLTP(OnLine Transaction Processing) 어플리케이션용으로 설계됐다.

MySQL은 MyISAM과 InnoDB 두 가지 스토리지 엔진에서 하나를 선택할 수 있으며 RDS 자동 백업 기능을 사용하기 위해서는 InnoDB를 써야한다.

 

  • MariaDB

 MariaDB는 MySQL과 바이너리 수준의 호환성을 가지면서 기능을 향상한 데이터베이스이다. MariaDB는 오라클이 MySQL을 개발한 회사를 인수하면서 MySQL의 미래에 대한 우려로 개발됐다고 한다. RDS는 이 글을 쓰는 시점에

10.2.1부터 10.5.8까지 많은 버전의 MariaDB를 제공한다.

 

  • Oracle

가장 널리 배포된 DBMS이며, 일부 애플리케이션은 데이터베이스 사양으로 ORacle 데이터베이스를 명시하기도 한다.

 

  • PostgreSQL

Oracle과 호환되는 오픈 소스 데이터베이스라고 스스로 홍보한다. Oracle 기반으로 어플리케이션을 개발했지만, 비용 절감을 위해 PostgreSQL을 선택한다.

 

  • Amazon Aurora

Amazon이 MySQL과 PostgreSQL과의 바이너리 수준의 호환성을 가지면서 기능을 향상시킨 데이터베이스이다. 가상 스토리지 계층을 사용해서 하부 스토리지 쓰기 횟수를 줄이기 때문에 MySQL과 PostgreSQL보다 쓰기 성능이 우수하다. Aurora는 MySQL 5.6-compatible, MySQL 5.7-compatible, PostgreSQL compatible 에디션들을 제공한다.

 

  • Microsoft SQL

 RDS는 여러 버전의 Microsoft SQL Server와 Express, Web, Standard, Enterprise 에디션을 사용할 수 있다. 데이터베이스 업그레이드를 수행하지 않고도 온프레미스에 배포된 기존 SQL server 데이터베이스를 RDS로 마이스레이션할 수 있다.

 

 (2) 라이선스

 RDS는 두 가지 라이선스 모델을 제공한다.

 

  • 라이선스가 포함된 모델

MariaDB와 MySQL은 GNU v2.0을 사용하며, PostgreSQL은 PostgreSQL 라이선스를 사용하므로 별도의 라이선스 비용은 없다. 

Microsoft SQL 서버의 모든 버전과 에디션, Oracle Database SE1 그리고 SE2는 인스턴스 요금에 라이선스 비용이 포함되어 있다.

 

  • 기존 보유 라이선스 사용

Oracle Database EE, SE, SE1, SE2 에디션에서 기존 보유 라이선스를 사용할 수 있다.

 

2. 어떤 인스턴스 클래스를 설정할 것인가

 데이터베이스는 다양한 용도를 위해 설계되었으며 사용자의 목적 달성을 위해 성능, 메모리, 네트워크 대역폭, 디스크 처리량에 따른 여러 클래스를 제공한다. 또한 용도 변경이나 잘못 선택한 경우에는 다른 클래스로 전환할 수도 있다. 클래스는 세 가지 유형이 있다.

 

 (1) Standard Class

 표준 인스턴스 클래스는 데이터베이스 요구를 대부분 충족하며, 글을 쓰는 시점에서 db.m6g.16xlarge는 64 vCPUs, 256GiB RAM, 19,000Mbps의 네트워크 대역폭 성능을 제공한다.

 

*vCPUs는 하이퍼스레딩 기술을 적용하여 코어를 2 개로 나누어 쓰는 것이다. 64 vCPUs는 32코어이다. AMD가 4세대 CPU출시하기 전 1코어 4스레드 기술을 적용할 것이라는 소문이 돌던 적이 있다. 따라서 꼭 기술 발전에 따라 vCPUs로 코어수를 예측하기 어려워질지도 모르겠다.

 

 (2) 메모리 최적화 클래스

 높은 처리 성능이 요구되는 데이터베이스용이며, 메모리를 더 많이 확보하고 있으면 메모리에 더 ㅁ낳은 데이터를 저장할 수 있으므로 쿼리 시간이 빨라진다. db.r6g.16xlarge는 64 vCPUs, 512GiB RAM, 19,000Mbps 네트워크 대역폭을 제공한다.

 

 (3) 버스터블 클래스

 순간 확장 가능한 인스턴스는 개발, 테스트, 다른 비프로덕션 데이터베이스를 위한 인스턴스이다.

 

3. 어떤 스토리지를 선택할 것인가

 

 (1) IOPS 란

 각 스토리지의 가장 큰 차이는 "얼마나 빠른 속도를 제공하는가"라고 할 수 있다. 올바른 선택을 하기 위해서 내가 필요로하는 속도가 어느정도인지를 계산하는 것이 중요하다. AWS는 IOPS(Input/Output Operations Per Second)를 사용해 스토리지의 속도를 측정하는데, IOPS는 초기 설정값이 임계값이 되어 그 성능을 초과할 수 없다. 따라서 IOPS가 무엇인지 그리고 얼마나 필요한지 알아보겠다.

 

 단일 Input/Output 작업에서 전송할 수 있는 데이터의 양은 데이터베이스 엔진이 사용하는 페이지 크기에 달려있으며,요구되는 IOPS수준을 알기 위해 필요한 디스크 처리량을 알아야한다.

 

 MySQL과 MariaDB의 페이지 크기는 16KB이고 Oracle, PostgreSQL, Microsoft SQL server는 8KB이다. 페이지 크기가 클수록 단일 I/O 작업에서 더 많은 데이터를 전송할 수 있다.

 

 페이지 크기가 16KB라고 하고, 데이터베이스가 초당 102,400KB의 데이터를 읽어야 한다고 하면, 데이터베이스는 16KB 페이지 크기로 초당 6,400페이지를 읽어야 하며 페이지 당 I/O 작업 하나로 계산하기 때문에 스토리지와 인스턴스 클래스는 6,400 IOPS를 유지해야 한다. 다만, 페이지 크기가 32KB를 넘으면 데이터베이스 엔진이 단일 I/O작업에서 2개 이상의 I/O작업으로 계산한다. 128KB의 경우 4개의 I/O연산으로 계산하는 것이다.

 

 (2) 범용 (SSD)

 최대 16TB의 볼륨을 할당할 수 있다. RDS는 기본적으로 기가바이트당 3 IOPS 성능을 볼륨에 할당하며, 최대 10,000 IOPS까지 볼륨에 할당할 수 있다. 볼륨이 커지면 성능은 향상된다. 

 

 (3) 프로비저닝된 IOPS (SSD)

 프로비저닝된 IOPS SSD는 순간 확장 개념이 없고 사용 여부와 관계없이 일정한 성능이 제공되고 그에 따른 비용이 청구되므로, 일관된 짧은 지연 시간에 성능이 필요한 OLTP 데이터베이스에 유용하다.

 

 (4) 마그네틱

 구형 인스턴스의 호환성을 위해 마그네틱 스토리지를 제공하며, 최대 크기는 4TB, 최대 성능은 1,000 IOPS이다.

 

4. 다중 AZ 설정

 데이터베이스 인스턴스가 중단되어도 데이터베이스를 계속 운영하려면, RDS의 다중 AZ 배포를 통해 여러 가용 영역에 데이터베이스 인스턴스 여러 개를 배포한다. 다중 AZ를 사용하면 한 가용 영역에 기본 인스턴스를 두고 다른 가용 영역에 예비 인스턴스를 두어 기본 인스턴스가 중단되면 대략 2분 이내 예비 인스턴스로 장애 조치가 수행된다.

 

 인스턴스를 만든 후에 다중 AZ를 구성할 수 있으나 이 경우 성능이 상당히 떨어지므로 유지 관리 주기를 짧게 잡아야 한다.

 

더 자세한 내용이 많지만 여기까지 하고, 직접 만들어 보겠다.

AWS RDS의 대시보드로 오면 데이터베이스 생성 버튼이 바로 보인다. 눌러주면 위와 같은 그림이 나온다. 여기서 표준 생성 모드가 더 자세한 설정이 가능하다. 우선 익숙한 MariaDB를 선택한다. 

아직 실제로 어떻게 쓰는지도 모르고 만드는 연습이니까 프리 티어를 골랐다. 사진에 없지만 암호화도 해주어야 한다. 어드민 계정과 암호를 설정한다.

위에 설명한 내용들이 그대로 나온다. 스토리지 유형을 설정하고 용량을 정할 수 있다. 자동조정을 활성화 해서 순간적으로 IOPS를 상승시킬 수 있는데 1TB이하의 스토리지는 3,000 IOPS까지 상승 가능하다고 한다. 

DB를 어디에 연결할지 혹은 어디에 생성할지를 정하는 것 같다. VPC의 퍼블릭 혹은 프라이빗 서브넷 등 위치를 정할 수 있다. 보안 그룹도 VPC에서 생성한 것을 쓰거나 새로 만들 수 있다. 

 AZ는 구성하지 않았다. 나중에 전체 토폴로지를 구성할 때에는 만들어볼 계획이다.

생성 버튼을 누르고 조금 기다리면 생성에 성공됐다는 메세지가 위에 나온다.

 

이번엔 읽기 전용 복제본을 생성해 보겠다.

데이터베이스 인스턴스를 클릭하고 작업에서 읽기 복제본 생성을 누른다.

새로운 인스턴스 생성과 흡사하다. 물론 엔진은 이미 정해져있고 클래스는 변경이 가능하다.

당연히 퍼블릭 엑세스 가능에서 아니요를 설정해주고, 보안 요구사항이 있다면 추가 변경이 가능하다.

식별자 필드에 복제본 이름을 지정해주고 이외 암호화, Cloudwatch, 모니터링 등을 설정해주고 생성을 누른다.

그리고 대시보드 인스턴스에 들어가보면

복제된 데이터베이스가 있다.

 

DynamoDB 생성은 다음 포스트로

 

*본 내용은 AWS 솔루션스 아키텍스 스터디가이드 책을 참고하여 만들었습니다