> RDS: Relational Database Service의 약자로, AWS에서 제공하는 관계형 데이터베이스 서비스
> EC2 인스턴스
: 데이터베이스와 관련해서 자동으로 관리를 담당하는 부분이 매우 적기 때문에, 사용자가 일일이 시간을 투자하여 데이터베이스 엔진의 설치와 버전 관리, 데이터 백업을 해야 함
> 가용성과 내구성이 확보되지 않기 때문에 데이터베이스에 저장된 데이터가 유실되거나 정상적으로 사용하지 못할 확률이 커지며, 후에 필요에 따라 데이터베이스의 규모를 확장하기 어려움
> RDS
: 데이터베이스 유지 보수와 관련된 일들을 RDS에서 전적으로 자동 관리
> 사용자가 해야 할 일은 초기 설정을 제외하고 데이터베이스에 저장된 데이터를 관리하는 일 밖에 없기에 큰 편의성을 느낄 수 있음
> 데이터베이스 엔진 선택지를 제공
RDS Architecture
> EC2 서버에서 혹은 Amazon RDS에서 관계형 데이터베이스를 호스팅
온프레미스 데이터 센터에 데이터베이스 호스팅
> 데이터 센터에 데이터베이스를 호스팅하면 전원, 네트워크 환경설정, 서버 환경설정부터 애플리케이션 최적화, 데이터베이스 소프트웨어 업그레이드 등까지 데이터 센터 운영을 위한 제반 업무를 모두 수행
Amazon EC2 서버에 데이터베이스 호스팅
> EC2 서버에 데이터베이스를 호스팅하면 사용자는 DB 소프트웨어 설치, 패치, 데이터베이스 백업, 앱 최적화등을 관리하고, AWS는 OS설치, 서버유지 보수, 서버 랙 관리, 네트워크 관리 등의 업무를 처리
Amazon RDS를 이용해 데이터베이스 호스팅
> AWS가 데이터베이스 설치부터 업그레이드 등, 데이터베이스 호스팅과 관련된 모든 복잡한 업무를 대신 처리. 사용자는 애플리케이션 최적화에만 집중
RDS의 주요 장점
- 인프라 관리 불필요 : 사용자는 데이터베이스와 관련된 어떤 인프라도 직접 관리할 필요가 없습니다. AWS가 데이터베이스와 관련된 모든 업무를 대신 처리
- 즉각적 프로비저닝 : RDS에서 데이터베이스 프로비저닝은 거의 즉시 이루어짐. 클릭 몇 번만으로 원하는 사양의 RDBMS를 배포
- 확장성 관리 : RDS는 매우 간단하게 스케일업 및 스케일다운 할 수 있으며, 사용자가 원하는 내용대로 환경을 설정할 수 있습니다. 언제든 컴퓨팅 또는 메모리 리소스의 확장성을 조절
- 애플리케이션 호환성 : RDS는 다양한 데이터베이스 엔진을 지원하므로 업계에서 널리 사용되는 데이터베이스 애플리케이션, 커스텀 코드, 기업에서 이미 사용 중인 데이터베이스 도구 등과 완벽하게 호환
- 고가용성 : RDS를 이용해 멀티 AZ 환경에 데이터를 프로비전하면, RDS는 동기적으로 데이터를 복제해 다른 AZ의 대기 인스턴스에 저장
- 보안 유지 : RDS는 대기 상태 데이터 및 이동 상태 데이터의 암호화를 지원하며, 이를 이용해 대기 상태의 데이터를 암호화 할 수 있고, SSL 기법을 이용해 전송 상태의 데이터를 암호화
RDS 고가용성 구현
> 고가용성(high availability) 아키텍처를 지원
가장 단순한 아키텍처 : 싱글 AZ 배포
> 개발 환경에서 데이터베이스를 사용하거나 클라우드 기반 데이터베이스에 대한 경험을 얻는 차원에서 사용하는 거라면, 싱글 AZ 환경에서 RDS 인스턴스를 론칭
> VPC 내에서 필요한 수준의 스토리지를 붙여서 하나의 RDS 인스턴스를 사용
고가용성 아키텍처 : 멀티 AZ 배포
> 기업에게 매우 중요한 데이터베이스를 실행하거나, 데이터를 절대 잃어버려서는 안되는 경우, 설정된 복원 소요 시간이 매우 촉박하거나 가동 정지 시간이 일절 허용되지 않는 경우, 멀티 AZ 환경에서 데이터베이스를 배포
> 멀티 AZ 아키텍처에 데이터베이스를 배포하려면, 사용자가 먼저 기본 데이터베이스 인스턴스를 어느 AZ에 놓을지 정해야 함
> RDS는 또 다른 AZ에 대기 인스턴스 또는 스탠바이 인스턴스 및 스토리지를 선택해 배포
> 대기 인스턴스는 기본 인스턴스와 동일한 타입으로 배포, 스토리지 또한 기본 스토리지와 동일한 환경 설정 내용으로 구성
> 마스터 데이터베이스라고 부르는 기본 데이터베이스가 모든 트래픽을 처리
> 스탠바이 데이터베이스는 애플리케이션이 실행되고 있는 기본 데이터베이스가 셧다운되는 상황을 대비해 가동 가능 상태에서 대기
> 기본 데이터베이스는 정상 상태를 유지하도록 하고, 대기 데이터베이스는 즉시 복구가 가능하도록 대기 상태를 유지
이 때,
> 대기 데이터베이스는 대기라는 상태에 있는 한 작동시킬 수 없고.
> 기본 데이터베이스와 대기 데이터베이스에 동시에 트래픽을 분산시킬 수는 없음
> 액티브 및 패시브(active/passive) 데이터베이스 모델과 비슷한 개념
※기본 데이터베이스의 데이터는 동기적으로 대기 데이터베이스의 스토리지에 복제
RDS 확장성 구현
인스턴스 타입 변경
> 하나의 인스턴스 클래스에서 다른 인스턴스 클래스로 변경함으로써 스케일업 또는 스케일 다운 할 수 있음
> 약간의 가동 정지시간(downtime)이 발생할 수 있으므로, 애플리케이션이 이러한 가동 정지시간에 영향을 받지 않도록 확인해야 함
읽기 사본 활용
> 마스터 데이터베이스의 Read-Only 복사본
> 마스터베이스와 동기화 상태를 유지하며, RDS는 RDBMS 엔진에 따라 최대 15개의 읽기 사본을 지닐 수 있음
> 읽기 사본은 read-only 쿼리의 부담을 줄여주며, 결과적으로는 마스터 데이터베이스의 워크로드를 감소 시키는 장점
> 읽기 사본은 고가용성 구현 매커니즘으로 사용
> 데이터가 비동기적으로 복제되므로 데이터의 손실 가능성이 존재하기 때문에 데이터 손실에 주의
'DevOps BootCamp > AWS' 카테고리의 다른 글
Elastic Load Balancing (0) | 2023.04.18 |
---|---|
Auto Scaling Group (0) | 2023.04.18 |
Storage - EFS (0) | 2023.04.14 |
Storage - EBS (0) | 2023.04.14 |
Storage - S3 (0) | 2023.04.14 |