AWS RDS 이해
AWS 서비스 중 하나인 RDS를 이해해보자.
- Amazon Relational Database Service(Amazon RDS) 개요
- DB 인스턴스
- AWS 리전 및 가용 영역
- 보안(Security)
- 아마존 RDS 모니터링
- 아마존 RDS로 작업하는 방법
- 아마존 RDS 요금 청구 방법
- 아마존 RDS 공동 책임 모델
- RDS Proxy 특징
- RDS Proxy address의 Use Case
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)
에서 데이터베이스를 배치하여보호
- RDS 데이터베이스에
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 RDS는 NTP(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 인스턴스를 관리
- AWS Management Console은 단순한
- 명령줄 인터페이스(Command line interface)
- AWS CLI(명령줄 인터페이스)를 사용하여
Amazon RDS API에 대화식으로 액세스
- AWS CLI(명령줄 인터페이스)를 사용하여
- 아마존 RDS API(Amazon RDS APIs)
개발자인 경우 API
를 사용하여프로그래밍 방식
으로 Amazon RDS에액세스
- 애플리케이션 개발에는
AWS SDK(소프트웨어 개발 키트) 중 하나를 사용
- AWS SDK는 애플리케이션
로직에 집중
할 수 있도록인증, 재시도 로직 및 오류 처리
와 같은 하위 수준의 세부 정보를 처리 - AWS SDK는
다양한 언어로 제공
- AWS SDK는 애플리케이션
- AWS는 또한
라이브러리, 샘플 코드, 튜토리얼 및 기타 리소스를 제공
- 쉽게 시작할 수 있도록 지원
아마존 RDS 요금 청구 방법
Amazon RDS를 사용할 때 주문형 DB
인스턴스 또는 예약된 DB
인스턴스를 사용하도록 선택
아마존 RDS 공동 책임 모델
Amazon RDS는
DB 인스턴스 및 DB 클러스터
의소프트웨어 구성 요소 및 인프라
를호스팅(자료 처리 요구를 받아 처리하는 중심이 되는 컴퓨터)하는 역할을 담당
- 성능을 향상시키기 위해
SQL 쿼리를 조정
프로세스인 쿼리 조정
은 사용자가 담당- 쿼리 성능은 데이터베이스 설계, 데이터 크기, 데이터 배포, 애플리케이션 워크로드 및 쿼리
패턴에 따라 크게 다름
- 모니터링 및 튜닝은 RDS 데이터베이스에 대해 갖고 있는
고도로 개별화된 프로세스
- Amazon RDS 성능 통찰력 및 기타 도구를 사용하여
문제가 있는 쿼리를 식별
- Amazon RDS 성능 통찰력 및 기타 도구를 사용하여
RDS Proxy 특징
RDS Proxy는 완전 관리형, 고가용성의 사용
이 간편한 프록시 기능
- 데이터베이스
연결을 풀링(pooling) 및 공유(sharing)
하여확장성을 높임
- 데이터베이스
페일오버 시간
을 최대 66%단축
하고 페일오버 중에도 애플리케이션연결을 보존하여 가용성을 향상
선택적으로
데이터베이스에AWS IAM 인증을 적용
하고AWS Secrets Manager
에자격 증명을 안전하게 저장
함으로써보안을 강화
RDS Proxy address의 Use Case
예측할 수 없는 워크로드
가 있는 애플리케이션데이터베이스 연결을 자주 열고 닫는
애플리케이션연결은 되어 있지만 유휴 상태
인 애플리케이션일시적인 장애에 대한 가용성을 필요
로 하는 애플리케이션보안 강화 및 중앙 집중식 자격 증명 관리
- IAM, Secrets Manager 사용
- Ref