(기초) AWS - RDS

AWS에 대해 알아봅니다.

정민호정민호

1. RDS

RDS(Relational DB Service) 관계형 데이터베이스(그 외 NoSQLDB)

  • 데이터베이스

  • 테이블

  • 필드(컬럼)

  • 데이터

1.1. Relational DB 종류

AWS RDS에서 사용가능

  • Microsoft SQL

  • Oracle

  • MySQL

  • Postgre

  • Aurora (AWS에서 제공하는 DB 형태이며, FreeTier 아님)

  • MariaDB

1.2. Data Warehousing

  • Business Intelligence

  • 리포트 작성, 데이터 분석시 사용(Production Database → DataWarehousing)

  • 매우 방대한 분량의 데이터 로드시 사용

1.3. OLTP vs OLAP

1.3.1. OLTP

Insert와 같이 종종 사용되어지는, 혹은 규모가 작은 데이터를 불러올 때 사용되는 SQL 쿼리가 필요할 때 유용

예) Order # 210 에만 해당되는 customer 이름, 주소, 시간 정보 Insert

1.3.2. OLAP

매우 큰 데이터를 불러올 때 사용. 주로 덩치가 큰 Select 쿼리가 사용됨

예) 특정 회사 부서의 Net Profit, Products

2. Database Back-ups

  • 자동백업 (Automated Backups)

  • DB 스냅샷 (DB Snapshots)

2.1. 자동백업 (Automated Backups; AB)

  • RDS 생성시 디폴트 셋팅으로 적용되어 있음.

  • Retention Period(1-35일) 안의 어떤 시간으로 돌아가게 할 수 있음 (Point In Time;PIT)

  • AB는 그 날 생성된 스냅샷과 Transaction Logs(TL)을 참고함

  • 디폴트로 AB기능이 설정되어 있으며 백업 정보는 S3에 저장 (특정 조건을 달성할 시 S3는 과금 주의)

  • AB동안(S3에 데이터를 저장할 때) 약간의 I/O suspension이 존재할 수 있음 → Latency (체감은 낮음)

2.2. DB 스냅샷 (DB Snapshots)

  • 주로 사용자에 의해 실행됨

  • 원본 RDS Instance를 삭제해도 스냅샷은 존재함(vs AB)

2.3. DB 백업

  • original.ap-northeast-2.rds.amazonaws.com → restored.ap-northeast-2.rds.amazonaws.com

  • RDS Instance → RDS Endpoint

3. Multi AZ 그리고 Read Replicas

3.1. Multi AZ(Availability Zones)

  • 원래 존재하는 RDS DB에 무언가 변화(Write 등)가 생길 때 다른 Availability Zone에 똑같은 복제본이 만들어짐 = Synchronize

  • AWS에 의해서 자동으로 관리가 이루어짐 (No admin intervention)

  • 원본 RDS DB에 문제가 생길 시 자동으로 다른 AZ의 복제본이 사용됨(Disaster Recovery)

  • Disaster Recovery Only! (성능개선을 위해서 사용되지 않음. 성능 개선을 위해선 Read Replica 사용)

3.2. Read Replica

  • Production DB의 읽기 전용 복제본이 생성됨

  • 주로 Read-Heavy DB 작업시 효율성의 극대화를 위해 사용됨(Scaling이 주목적)

  • Disaster Recovery 용도가 아님!

  • 하나의 RDS에 대해 최대 5개 Read Replica DB 허용

  • Read Replica의 Read Replica 생성 가능(단 Latency 발생)

  • 각각의 Read Replica는 자기만의 고유 Endpoint 존재(IP 주소가 아님)

4. ElasticCache

  • RDS의 개념이 아니라 Cache

  • 클라우드 내에서 In-Memory 캐시를 만들어줌

  • 데이터베이스에서 데이터를 읽어오는 것이 아니라 캐시에서 빠른 속도로 데이터를 읽어옴

  • Read-Heavy 어플리케이션에서 상당한 Latency 감소 효과 누림

  • 초반 APP 개발이나 테스트 용도에는 적합하지 않음

4.1. Memcached

  • Object 캐시 시스템으로 잘 알려져 있음

  • ElastiCache는 Memcached의 프로토콜을 디폴트로 따름

  • EC2 Auto Scaling 처럼 크기가 커졌다 작아졌다 가능함

  • 오픈소스

4.1.1. Memcached 사용처

  • 가장 단순한 캐싱 모델이 필요할 때

  • Object caching이 주된 목적일 때

  • 캐시 크기를 마음대로 scaling하기를 원할 때

4.2. Redis

  • Key-Value, Set, List 와 같은 형태의 데이터를 In-Memory에 저장 가능함

  • 오픈소스

  • Multi-AZ 지원

4.2.1. Redis 사용처

  • List, Set과 같은 데이터셋을 사용할 때

  • 리더보드처럼 데이터셋의 랭킹을 정렬하는 용도가 필요할 때

  • Multi AZ 기능이 사용되야할 때