[AWS] RDS란 무엇인가?

양진혁·2022년 3월 28일
2

AWS

목록 보기
9/14

RDS(Relational Database Service)란 무엇인가?

간단히 말하면 관계형 데이터베이스를 제공하는 AWS의 서비스이다. 유저가 사용하기 쉽도록 인프라 등을 자동화 시켜주고 유저들은 앤드포인트로 접속할 수 있는 데이터베이스를 제공받는다.

아마존에서 말하는 RDS

Amazon RDS를 사용하면 클라우드에서 관계형 데이터베이스를 간편하게 설정, 운영 및 확장할 수 있습니다. 하드웨어 프로비저닝, 데이터베이스 설정, 패치 및 백업과 같은 시간 소모적인 관리 작업을 자동화하면서, 비용 효율적이고 크기 조정 가능한 용량을 제공합니다. 사용자가 애플리케이션에 집중해 애플리케이션에 필요한 빠른 성능, 고가용성, 보안 및 호환성을 제공할 수 있도록 지원합니다.

RDS 특징

  • 관계형 데이터베이스를 제공하는 서비스
    • Relational Database Service: 관계형 데이터베이스
    • <-> NoSQL(DynamoDB, DocumentDB, ElasticCache) 차이점: 관계형 데이터베이스는 데이터베이스 안의 내용이 정형화 되어 있고 테이블 간 관계를 중심적으로 보는 DB이다.
  • 가상머신 위에서 동작
    • 단 시스템에 직접 로그인 불가능 -> OS패치, 관리 등은 AWS의 역할, RDS는 Serverless 서비스가 아니다.
    • 단 Aurora Serverless는 말 그대로 Serverless 서비스이다.
  • CloudWatch와 연동
    • DB 인스턴스의 모니터링(EC2와 동일 ex: 디테일 모니터링, CPU, Storage 사용량)
    • DB에서 발생하는 여러 로그(Error Log, General Log 등)을 확인 가능
  • 내부에서는 EC2 활용
    • VPC 안에서 동작
      • 기본적으로 Public IP를 부여하지 않아 외부에서 접근이 불가능하다.
      • 설정에 따라 Public으로 오픈 가능하다(DNS 접근)
    • 서브넷과 보안그룹지정 필요(이를 통해서 방화벽 역할을 수행한다.)
    • EC2 타입의 지정 필요
    • Storage는 EBS 활용
      • EBS 타입의 선택 필요
      • 생성시 EBS의 용량을 지정해서 생성(필요한 용량을 미리 지정해야 한다. 물론 추후에 용량 늘리는 것이 가능하다. Aurora의 경우에는 미리 지정하지 않고 사용한 양만큼만 지불한다.)
  • Parameter Group: Root 유저만 설정 가능한 DB의 설정값들을 모아 그룹화한 개념
    • DB 클러스터에 파라미터 그룹을 적용시켜 설정값을 적용
    • 마이너 버전 엔진 업데이트는 자동으로 업데이트 설정 가능
    • 기타 업데이트(파라미터 그룹, EBS사이즈, 인스턴스 변경)의 경우 점검시간을 설정하여 특정 시간에 업데이트가 이루어질 수 있도록 설정 가능하다.

RDS 인증방법

  • 전통적인 유저 / 패스워드 방식
    • AWS Secret Manager(RDS를 비롯해 DB, 여러 인증을 관리해주는 서비스, 자동으로 일정 주기마다 패스워드 변경, 다른 서비스들이 RDS 혹은 서비스들을 접근할 때 암호를 하드코딩할 필요 없게 만들어줌)와 연동하여 자동 로테이션 가능
  • IAM DB인증
    • 데이터베이스를 IAM 유저 크레덴셜 / Role을 통해 관리 가능
  • Kerberos 인증(ms active directory 안에 들어있는 프로토콜)

RDS 가격모델

컴퓨팅 파워 + 스토리지 용량 + 백업 용량 + 네트워크 비용
Reserved Instance 구매 가능

  • EC2 와 마찬가지로 일정 기간을 계약하여 저렴한 가격에 서비스를 이용 가능하다.

RDS에서 제공하는 DB 엔진

라이선스 비용 발생(오픈 소스가 아님)

  • MS SQL Server
  • Oracle
    • Oracle OLAP

라이선스 비용이 필요 없음(오픈소스, 기반 별도의 사용량을 제외한 라이센스가 필요 없다.)

  • My SQL Server
  • PostgreSQL
  • MariaDB

그 외

  • Amazon Aurora

RDS 암호화

암호화 지원

  • SQL 서버 혹은 Oracle에서는 TDE(Transparent Data Encryption) 지원
  • 모든 엔진에서 EBS 볼륨 암호화 지원(볼륨 자체가 EBS 기반이기 때문)
    • Default Master Key 혹은 생성한 Master Key 선택 가능
  • 자동 백업, 스냅샷, Read Replica 등에 적용

RDS 백업

자동 백업

  • 매일마다 스냅샷을 만들고 트래젝션 로그를 저장(1일차 스냅샷 제작, 2일차 스냅샷 제작, 3일차 스냅샷 제작하는 과정을 거친다. 이 사이에 있는 모든 내용에 대한 트랜잭션 로그를 모두 저장한다.)
  • 데이터는 S3에 저장되며 데이터베이스의 크기만큼 공간을 점유한다.
  • 저장된 데이터를 바탕으로 일정 기간 내의 특정 시간으로 롤백 가능(롤백은 기존 DB를 롤백하는 것이 아닌 스냅샷을 기준으로 새로운 DB를 만든다. 트랜잭션 로그를 사용해서 만든다)
    • 다른 DB 클러스터를 새로 생성
  • 1 ~ 35일까지 보관을 지원한다
  • Backup을 시행할 때 약간의 딜레이 발생 가능성
  • 기본적으로 사용 상태로 설정되어 있다.

수동 백업(DB 스냅샷)

  • 유저 혹은 다른 프로세스로부터 요청에 따라 만들어지는 스냅샷
  • 데이터베이스가 삭제된 이후에도 계속 보관
  • 스냅샷의 복구는 항상 새로운 DB Instance를 생성하여 수행

RDS 구성 아키텍쳐

RDS Multi AZ
두개 이상의 AZ에 걸쳐 DB를 구축하고 원본과 다른 DB(standby)를 자동으로 동기화(Snyc)

  • SQL Sercer, Oracle, MySQL, PostgreSQL, MariaDB에서 지원
  • Aurora의 경우 다중 AZ를 설계 단계에서 지원

원본 DB의 장애 발생 시 자동으로 다른 DB가 원본으로 승격 된다.(DNS가 StandbyDB로)
StandbyDB는 접근이 불가능하다.
퍼포먼스의 상승 효과가 아닌 안정성을 위한 서비스이다.

읽기 전용 복제본(Read Replica)
원래 데이터베이스의 읽기 전용 복제본을 생성(Async)

  • 쓰기는 원본 데이터베이스에, 읽기는 복제본에 처리하여 워크로드 분산
  • MySQL, PostgreSQL, MariaDB, Oracle, Aurora에서 지원

안정성이 아닌 퍼포먼스를 위한 서비스이다
총 5대까지 생성이 가능하다
각각의 복제본은 고유 DNS가 할당된다 -> 접근이 가능

  • 원본 DB의 장애 발생 시 수동으로 DNS 변경이필요하다

복제본 자체에 Multi-AZ 설정 가능(MySQL, MariaDB, PostgreSQL, Oracle)
Multi-AZ DB에 Read Replica 설정 가능
자동 백업이 활성화 되어 있어야 읽기 전용 복제본 생성 가능
각 DB의 엔진 버전이 다를 수 있다.

RDS Multi Region
다른 리전에 지속적으로 동기화 시키는 DB 클러스터를 생성

  • Async 복제

주로 로컬 퍼포먼스 혹은 DR 시나리오(재난 시나리오)로 활용한다.
각 리전별로 자동 백업이 가능하다
리전별로 Multi - AZ 가 가능하다.

Multi-AZMulti-RegionRead Replica
목적고가용성DR/로컬 퍼포먼스확장성/성능
복제방식SnycAsyncAsync
액티브primary DB만 읽기/쓰기 가능Read만 가능Read만 가능
백업자동백업(Standby기준)자동백업가능기본적으로 백업 x
엔진 업데이트Primary만 업데이트각 리전별로 다른 업데이트DB별로 다른 업데이트
FailOver자동으로 Standby로 Failover수동으로 Failover수동으로 Failover

Reference

https://www.youtube.com/watch?v=koDIV5QMw38&ab_channel=AWS%EA%B0%95%EC%9D%98%EC%8B%A4

0개의 댓글