AWS RDS 이해

AWS RDS 이해

AWS 서비스 중 하나인 RDS를 이해해보자.


Amazon Relational Database Service(Amazon RDS) 개요

AWS에서 소개하는 Amazon RDS 설명을 보면

Amazon Relational Database Service(Amazon RDS)는 보다 쉽게 설정, 운영 및 확장할 수 있는 웹 서비스입니다. AWS 클라우드의 관계형 데이터베이스으로 비용 효율적이고 크기 조정 가능한 용량을 제공하며 업계 표준 관계형 데이터베이스인 일반적인 데이터베이스 관리 작업을 관리합니다. 그리고 Amazon RDS 이외의 Amazon Aurora 데이터베이스 엔진을 다룹니다.

1. Amazon EC2 및 온-프레미스 데이터베이스

Amazon Elastic Compute Cloud(Amazon EC2)AWS 클라우드에서 확장 가능한 컴퓨팅 용량을 제공합니다. 아마존 EC2 하드웨어에 미리 투자할 필요가 없으므로 응용 프로그램을 더 빠른 개발 및 배포할 수 있습니다.

온-프레미스 서버를 구입하면 CPU, 메모리, 스토리지 및 IOPS를 함께 번들로 제공받아 모두 사용할 수 있습니다.
Amazon EC2에서는 이러한 항목이 분리되어 확장하여 독립적으로 더 많은 CPU, 더 적은 IOPS 또는 더 많은 스토리지가 필요한 경우 쉽게 할당할 수 있습니다.

온-프레미스 서버에 있는 관계형 데이터베이스의 경우 서버, 운영 체제 및 소프트웨어에 대한 모든 책임을 집니다.
Amazon EC2 인스턴스에 있는 데이터베이스의 경우, AWS 운영 체제가 아래의 계층을 관리하는데 이러한 방식으로 Amazon EC2는 온-프레미스 데이터베이스보다 서버를 관리해야 하는 부담 줄입니다.

그림

Amazon EC2완전관리형 서비스가 아닙니다. 따라서 Amazon EC2에서 데이터베이스를 실행하면 사용자 오류가 발생하기 쉽습니다.
예를 들어 운영 체제 또는 데이터베이스를 업데이트하는 경우, 소프트웨어를 수동으로 사용하면 실수로 응용 프로그램 가동 중지 시간이 발생할 수 있습니다.
따라서 문제를 식별하고 해결하기 위해 모든 변경 사항을 확인하는 시간이 필요 할 수 있습니다.

2. Amazon RDS 및 Amazon EC2

Amazon RDS대부분의 관리 작업을 담당하는 관리형 데이터베이스 서비스입니다.
Amazon RDS를 사용하면 애플리케이션과 사용자가 수동 작업을 없애기 때문에 대부분의 기본 선택으로 Amazon EC2보다 Amazon RDS사용하거나 배포하는 것이 좋습니다.

그림

Amazon RDS완전 관리형 서비스로 구체적인 이점을 제공

  • 이미 익숙한 데이터베이스 제품을 사용가능
    • MariaDB, Microsoft SQL Server, MySQL, Oracle 및 PostgreSQL
  • 백업, 소프트웨어 패치, 자동 장애 감지 및 복구

  • 자동 백업을 켜거나 수동으로 백업 가능
    • 스냅샷을 사용한 백업으로 데이터베이스를 복원
    • Amazon RDS 복원 프로세스안정적이고 효율적으로 작동
  • 기본 인스턴스와 동기식으로 고가용성을 얻음
    • 문제가 발생할 때 장애 조치할 수 있는 보조 인스턴스
    • 읽기 전용 복제본을 사용하여 읽기 조정을 늘림
  • 데이터베이스 패키지의 보안 외에도 사용자를 제어하는 데 도움
    • RDS 데이터베이스에 액세스
    • AWS ID 및 액세스 관리(IAM)를 사용하여 사용자 및 권한 정의
    • 가상 사설 클라우드(VPC)에서 데이터베이스를 배치하여 보호

3. Amazon RDS Custom for Oracle 및 Microsoft SQL Server

Amazon RDS데이터베이스 관리 작업 및 작업을 자동화합니다.
한편, Amazon RDS 사용자 지정은 데이터베이스에 대한 모든 액세스 권한을 부여하는 RDS 관리 유형(환경)이며 운영 체제입니다.
RDS Custom제어 기능을 사용하여 데이터베이스에 액세스하고 사용자 지정할 수 있습니다.
레거시 및 패키지된 비즈니스 응용 프로그램을 위한 환경 및 운영 체제입니다.

이 배포 모델에서는 응용 프로그램에 맞게 설치하고 설정하여 구성을 변경할 수 있으며 동시에 데이터베이스를 오프로드(작업량을 적절히 분배) 할 수 있습니다.
Amazon RDS의 데이터베이스 관리에서 프로비저닝(즉시 사용할 수 있는 상태로 미리 준비해 두는 것), 확장, 업그레이드 및 AWS로의 백업과 같은 관리 작업을 더 많은 제어 및 융통성 이점을 갖게 됩니다.
Oracle Database 및 Microsoft SQL Server의 경우 RDS Custom은 Amazon RDS의 자동화를 결합하고 Amazon EC2의 유연성을 제공합니다.

RDS 사용자 지정의 공동 책임 모델을 사용하면 Amazon RDS보다 더 많은 제어 권한을 얻을 수 있습니다.

4. Amazon RDS on AWS Outposts

Amazon RDS on AWS Outposts는 RDS for SQL Server, RDS for MySQL 및 RDS for PostgreSQL 데이터베이스AWS 아웃포스트(프로비저닝?) 환경으로 확장
AWS Outposts퍼블릭 AWS 리전과 동일한 하드웨어를 사용하여 AWS 서비스, 인프라 및 운영 모델을 온-프레미스에 제공합니다.
Outposts의 RDS를 사용하면 온-프레미스에서 실행해야 하는 비즈니스 애플리케이션 근처에서 관리되는 DB 인스턴스를 프로비저닝할 수 있습니다.


DB 인스턴스

DB 인스턴스AWS Cloud의 격리된 데이터베이스 환경으로 Amazon RDS기본 구성 요소는 DB 인스턴스입니다.

DB 인스턴스하나 이상의 사용자작성 데이터베이스를 포함할 수 있습니다. 독립 실행형 데이터베이스 인스턴스에서 사용하는 것과 동일한 도구 및 응용 프로그램을 사용하여 DB 인스턴스에 액세스할 수 있습니다. AWS CLI(명령줄 인터페이스), Amazon RDS API 또는 AWS Management Console을 사용하여 DB 인스턴스를 생성하고 수정할 수 있습니다.

1. DB 엔진

DB 엔진특정 관계형 데이터베이스 소프트웨어입니다. DB 인스턴스에서 실행됩니다.

Amazon RDS는 현재 다음 엔진을 지원

  • MariaDB
  • MySQL
  • PostgreSQL
  • Microsoft SQL Server
  • Oracle

각 DB 엔진에는 자체적으로 지원되는 기능이 있으며, 각 버전의 DB 엔진에는 특정 기능이 포함될 수 있습니다. Amazon RDS 기능에 대한 지원은 AWS 지역 및 각 DB 엔진의 특정 버전에 따라 다릅니다.

또한 각 DB 엔진에는 관리하는 데이터베이스의 동작을 제어하는 DB 매개변수 그룹매개변수 집합이 있습니다.

2. DB 인스턴스 클래스

DB 인스턴스 클래스는 DB 인스턴스의 계산 및 메모리 용량을 결정합니다. DB 인스턴스 클래스는 DB 인스턴스 유형과 크기로 구성됩니다. 각 인스턴스 유형은 서로 다른 컴퓨팅, 메모리 및 스토리지 기능을 제공합니다.
예를 들어, db.m6g는 AWS Graviton2 프로세서로 구동되는 범용 DB 인스턴스 유형입니다. db.m6g 인스턴스 유형 내에서 db.m6g.2xlarge는 DB 인스턴스 클래스입니다.

필요에 가장 적합한 DB 인스턴스를 선택할 수 있습니다. 시간이 지남에 따라 필요한 사항이 변경되는 경우 DB 인스턴스를 변경할 수 있습니다.

3. DB 인스턴스 스토리지

Amazon EBS실행 중인 스토리지에 연결할 수 있는 내구성 있는 블록 수준 스토리지 볼륨을 제공합니다.

DB 인스턴스 스토리지는 다음과 같은 유형으로 제공

  • 범용 SSD (General Purpose SSD)
  • 프로비저닝된 IOPS (Provisioned IOPS) = PIOPS
  • Magnetic

스토리지 유형성능 특성가격이 다릅니다. 데이터베이스 요구사항에 맞게 스토리지 성능과 비용을 조정할 수 있습니다.

각 DB 인스턴스스토리지 유형 및 지원하는 데이터베이스 엔진에 따라 최소 및 최대 스토리지 요구 사항을 가집니다. 데이터베이스를 확장할 수 있도록 충분한 스토리지를 확보하는 것이 중요합니다. 또한 저장 공간이 충분하기 때문에 DB 엔진을 위한 기능이 내용이나 로그 항목을 작성할 공간을 확보할 수 있습니다.

4. 아마존 가상 사설 클라우드(아마존 VPC)

Amazon VPC(Virtual Private Cloud) 서비스를 사용하여 VPC(Virtual Private Cloud)에서 DB 인스턴스를 실행할 수 있습니다. VPC를 사용하면 가상 네트워킹 환경을 제어할 수 있습니다. 고유한 IP 주소 범위를 선택하고 서브넷을 생성하며 라우팅 및 액세스 제어 목록을 구성할 수 있습니다. Amazon RDS기본 기능VPC에서 실행되는지 여부와 동일합니다. Amazon RDS는 백업, 소프트웨어 패치 적용, 자동 장애 감지 및 복구를 관리합니다. VPC에서 DB 인스턴스를 실행하는 데 추가 비용이 들지 않습니다.

Amazon RDSNTP(Network Time Protocol)를 사용하여 DB 인스턴스의 시간을 동기화합니다.


AWS 리전 및 가용 영역

Amazon 클라우드 컴퓨팅 리소스세계 여러 지역(예: 북미, 유럽 또는 아시아)의 고가용성 데이터 센터 시설에 보관됩니다. 각 데이터 센터 위치를 AWS 영역이라고 합니다.

각 AWS 영역에는 가용성 영역(AZ)이라고 하는 여러 개의 개별 위치가 포함되어 있습니다. 각 가용성 영역은 다른 가용성 영역의 장애로부터 격리되도록 설계가 되었습니다. 각각은 동일한 AWS 영역다른 가용성 영역저렴하고 짧은 네트워크 연결을 제공하도록 설계되었습니다. 별도의 가용성 영역에서 인스턴스를 시작하여 단일 위치의 장애로부터 애플리케이션을 보호할 수 있습니다.

Multi-AZ 배포라고 하는 옵션이 여러 가용성 영역에서 DB 인스턴스를 실행할 수 있습니다. 이 옵션을 선택하면 Amazon은 자동으로 하나 이상의 보조 대기 DB 인스턴스를 다른 가용성 영역에 프로비저닝하고 유지 관리합니다. 기본 DB 인스턴스는 가용성 영역을 통해 각 보조 DB 인스턴스로 복제됩니다. 이 접근 방식은 데이터 이중화 및 페일오버 지원을 제공하고, I/O 동결을 제거하며, 시스템 백업 중 지연 시간 급증을 최소화하는 데 도움이 됩니다. Multi-AZ DB 클러스터 배포에서 보조 DB 인스턴스는 읽기 트래픽도 처리할 수 있습니다.


보안(Security)

보안 그룹DB 인스턴스에 대한 액세스를 제어합니다. 사용자가 지정한 IP 주소 범위 또는 Amazon EC2 인스턴스에 대한 액세스허용하여 이를 수행합니다.


아마존 RDS 모니터링

DB 인스턴스성능 및 상태를 추적할 수 있는 몇 가지 방법이 있습니다. Amazon CloudWatch 서비스를 사용하여 DB 인스턴스(리소스)의 성능 및 상태를 모니터링할 수 있습니다. CloudWatch 성능 차트는 Amazon RDS 콘솔에 표시됩니다. 또한 Amazon RDS 이벤트에 가입하여 DB 인스턴스, DB 스냅샷 또는 DB 매개 변수 그룹에 대한 변경 내용을 알릴 수 있습니다.


아마존 RDS로 작업하는 방법

Amazon RDS와 상호 작용할 수 있는 몇 가지 방법

  • AWS 관리 콘솔(AWS Management Console)
    • AWS Management Console은 단순한 웹 기반 사용자 인터페이스
    • 프로그래밍 없이 콘솔에서 DB 인스턴스를 관리
  • 명령줄 인터페이스(Command line interface)
    • AWS CLI(명령줄 인터페이스)를 사용하여 Amazon RDS API에 대화식으로 액세스
  • 아마존 RDS API(Amazon RDS APIs)
    • 개발자인 경우 API를 사용하여 프로그래밍 방식으로 Amazon RDS에 액세스
    • 애플리케이션 개발에는 AWS SDK(소프트웨어 개발 키트) 중 하나를 사용
      • AWS SDK는 애플리케이션 로직에 집중할 수 있도록 인증, 재시도 로직 및 오류 처리와 같은 하위 수준의 세부 정보를 처리
      • AWS SDK는 다양한 언어로 제공
    • AWS는 또한 라이브러리, 샘플 코드, 튜토리얼 및 기타 리소스를 제공
      • 쉽게 시작할 수 있도록 지원

아마존 RDS 요금 청구 방법

Amazon RDS를 사용할 때 주문형 DB 인스턴스 또는 예약된 DB 인스턴스를 사용하도록 선택


아마존 RDS 공동 책임 모델

  • Amazon RDSDB 인스턴스 및 DB 클러스터소프트웨어 구성 요소 및 인프라호스팅(자료 처리 요구를 받아 처리하는 중심이 되는 컴퓨터)하는 역할을 담당

  • 성능을 향상시키기 위해 SQL 쿼리를 조정
    • 프로세스인 쿼리 조정은 사용자가 담당
    • 쿼리 성능은 데이터베이스 설계, 데이터 크기, 데이터 배포, 애플리케이션 워크로드 및 쿼리 패턴에 따라 크게 다름
  • 모니터링 및 튜닝은 RDS 데이터베이스에 대해 갖고 있는 고도로 개별화된 프로세스
    • Amazon RDS 성능 통찰력 및 기타 도구를 사용하여 문제가 있는 쿼리를 식별

RDS Proxy 특징

RDS Proxy완전 관리형, 고가용성의 사용이 간편한 프록시 기능

  1. 데이터베이스 연결을 풀링(pooling) 및 공유(sharing)하여 확장성을 높임
  2. 데이터베이스 페일오버 시간을 최대 66% 단축하고 페일오버 중에도 애플리케이션 연결을 보존하여 가용성을 향상
  3. 선택적으로 데이터베이스에 AWS IAM 인증을 적용하고 AWS Secrets Manager자격 증명을 안전하게 저장함으로써 보안을 강화

RDS Proxy address의 Use Case

  1. 예측할 수 없는 워크로드가 있는 애플리케이션
  2. 데이터베이스 연결을 자주 열고 닫는 애플리케이션
  3. 연결은 되어 있지만 유휴 상태인 애플리케이션
  4. 일시적인 장애에 대한 가용성을 필요로 하는 애플리케이션
  5. 보안 강화 및 중앙 집중식 자격 증명 관리 - IAM, Secrets Manager 사용


© 2022. All rights reserved. 신동민의 블로그