[AWS]

[AWS] RDS

jjinyeok 2023. 8. 29. 16:51

RDS

  • Relational Database Service (관계형 데이터베이스 서비스)
  • 사용 가능한 DB 종류 Microsoft SQL, Oracle, MySQL, PostgreSQL, MariaDB 등이 있음

 

OLTP vs OLAP

  • OLTP(OnLine Transaction Processing): 데이터의 저장, 삭제, 수정 등 실질적인 데이터를 수정하는 작업을 의미하는 용어
  • OLAP(OnLine Analytical Processing): 이미 저장된 데이터를 바탕으로 고객이 원하는 정보를 어떤식으로 표현하고 제공하는지 의미하는 용어

 

Database Backups

  RDS에는 데이터베이스를 백업하는 기능이 있음

  • Automated Backups(자동 백업): Retention Period (1-35일) 안의 어떤 시간으로 돌아가게 할 수 있음. 이때 그날 생성된 스냅샷과 Transaction Logs를 참고함. RDS를 생성할 때 디폴트로 Automated Backups 기능이 설정되어 있으며 백업 정보는 S3에 저장됨
  • DB Snapshots(데이터베이스 스냅샷): 사용자가 직접 스냅샷을 생성하며 원본 RDS 인스턴스를 삭제해도 스냅샷은 존재함 (Automated Backups 경우 RDS 인스턴스 삭제 시 스냅샷 또한 삭제됨)

  RDS 인스턴스 복원 시 새로운 RDS 인스턴스와 RDS 엔드포인트가 생성됨

 

Multi AZ

  • 원래 존재하는 RDS DB에 무언가 변화가 (ex. write) 생길 때 다른 AZ (Availability Zone)에 동기적으로 똑같은 복제본이 만들어짐
  • AWS에 의해 자동으로 관리가 이루어짐
  • 원본 RDS DB에 문제가 생길 시 자동으로 다른 AZ 복제본이 사용됨
  • Disaster Recovery Only: 오직 데이터 복구를 위해서만 사용되고 성능 개선을 위해서 사용되지는 않음 (성능 개선을 기대하기 위해선 Read Replica를 사용해야 함)

 

Read Replica

  • Production DB의 쓰기가 불가능한 읽기 전용 복제본이 생성됨
  • Read Heavy DB 작업 시 효율성의 극대화를 위해 사용됨 (Scaling)
  • Disaster Recovery 용도가 아님
  • 최대 5개 Read Replica DB 허용
  • 각각의 Read Replica는 자기만의 고유 Endpoint 존재

 

ElasticCache

  • 클라우드 내에서 In-memory 캐시를 만들어줌
  • 데이터베이스에서 데이터를 읽어오는 것이 아니라 캐시에서 빠른 속도로 데이터를 읽어옴
  • Read-Heavy 어플리케이션에서 Latency 감소 효과
  • Memcached: Object 캐시 시스템으로 ElasticCache에서 주로 사용함. 캐시 크기가 가변적임. 오픈소스
  • Redis: Key-Value, Set, List와 같은 형태의 데이터를 In-Memory에 저장 가능함. 오픈소스. Multi AZ 지원

 

RDS 실습

1. Amazon RDS 접속 > "데이터베이스 생성" 시 RDS의 DB 인스턴스 생성 가능
2-1. 데이터베이스 생성 > 데이터베이스 생성 방식 선택 > "표준 생성" 시 다양한 DB 설정을 직접 할 수 있음
2-2. 데이터베이스 생성 > 엔진 옵션 > 다양한 DB 엔진을 선택할 수 있음 (디폴트는 PostgreSQL)
2-3. 데이터베이스 생성 > 템플릿 > "프리 티어" 선택 (Amazon Engine Aurora는 프리 티어를 사용할 수 없음)
2-4. 데이터베이스 생성 > 가용성 및 내구성 > 템플릿을 프리 티어로 선택했기 때문에 가용성 및 내구성 배포 옵션을 선택할 수 없음
2-5. 데이터베이스 생성 > 설정 > DB 인스턴스 식별자와 마스터 사용자 이름, 마스터 암호를 작성할 수 있음
2-6. 데이터베이스 생성 > 인스턴스 구성 > 프리티어를 선택했기 때문에 선택권 없이 "버스터블 클래스 (t클래스 포함)" 선택됨 (버스터블 클래스란 상황에 따라 CPU의 성능을 버스트 시킬 수 있다는 뜻)
2-7. 데이터베이스 생성 > 스토리지 > 값 변경을 통해 DB 스토리지를 변경할 수 있으며 경우에 따라 돈을 더 내고 스토리지를 높일 수 있음
2-8. 데이터베이스 생성 > 연결 > 컴퓨팅 리소스를 통해 직접 EC2 인스턴스를 만들어 연결시킬 수 있음. VPC 보안 그룹(방화벽)을 통해 VPC 데이터베이스에 액세스를 허용할 VPC 보안 그룹을 직접 만들 수 있음. 데이터베이스 포트가 MySQL의 3306인지 확인 +++ 외부 연결을 위해 "퍼블릭 액세스"를 "예"로 바꿔주어야 함 +++
2-9. 데이터베이스 생성 > 데이터베이스 인증 > "암호 인증" 시 설정 과정의 마스터 계정으로 데이터베이스 인증 가능함
2-10. 데이터베이스 생성 > 추가 구성 > 데이터베이스 옵션에서 초기 데이터베이스 이름만 설정 후 나머지는 디폴트 값으로 놔둠
2-11. 데이터베이스 생성 > 월별 추정 요금 > 프리티어 설정을 통해 다음과 같은 부분에서 무료로 사용할 수 있음을 확인
2-12. 데이터베이스 생성 확인
3-1. 생성된 데이터베이스 접속 > "연결 & 보안" 클릭 > 엔드포인트 (데이터베이스에 접근하기 위한 경로) 확인
3-2. 엔드포인트와 데이터베이스 생성 시 작성했던 정보를 바탕으로 연결
3-3. 연결 확인