DevOps BootCamp/AWS

RDS

cloudmaster 2023. 4. 14. 15:39

> 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