AWS - RDS란?

오송아·2021년 5월 4일
0
post-thumbnail

📌 RDS(Relational DB Service)란?

관계형 데이터베이스로 세상에 존재하는 많은 데이터베이스 서비스들을 제공

RDS 종류

Microsoft SQL, Oracle, MySQL, Postgre, Aurora, Maria DB
(참고로 오로라는 aws제공, 프리티어 제공x)

Data Warehousing

다양한 소스로부터 데이터가 합쳐지며 필요시 데이터를 불러오므로 트랜잭션 프로세싱에는 적합하지 않음

  • Business Intelligence
  • 리포트 작성, 데이터분석시 사용 (Production Database -> Data
    Warehousing)
  • 매우 방대한 분량의 데이터 로드시 사용

OLTP VS OLAP

  • OLTP
    INSERT와 같이 종종 사용되어지는, 혹은 규모가 작은 데이터를
    불러올때 사용되는 SQL쿼리가 필요할때 유용 -> xm
    ex) Order # 210에만 해당되는 이름, 주소, 시간 정보 INSERT

  • OLAP
    매우 큰 데이터를 불러올때 사용. 주로 덩치가 큰 SELECT 쿼리가 사용됨 -> 조인, select, 트랜잭션 프로세싱이 쓰이지 않음
    ex) 특정 회사 부서의 Net Profit, Products

RDS 2가지 데이터 백업 기능

  • Automated Backups (자동 백업)
    RDS 생성 시 디폴트 설정 기능, 백업 정보는 S3 버킷(특정 조건에 도달시 무료x)에 저장된다. RDS 스토리지만큼만 S3 스토리지를 갖게 된다.
    ① Retention Period(1-35일) 안의 어떤 시간으로 돌아가게 할 수 있음 //Retention Period은 Point In Time(PIT)기능이라고 할 수 있음,
    ② AB는 그날 생성된 스냅샷과 Transaction logs(TL)을 참고함
    ③ 디폴트로 AB기능이 설정되어 있으며 백업 정보는 S3에 저장
    ④ AB동안 약간의 I/O suspension이 존재할 수 있음 -> Latency

  • DB Snapshots (데이터베이스 스냅샷)
    ① 주로 사용자에 의해 실행됨
    ② 원본 RDS Instance를 삭제해도 스냅샷은 존재함 (vs AB) //가장 큰 장점, 스냅샷만으로도 RDS인스턴스 복원가능, AB는 인스턴스 삭제시 스냅샷 모두 삭제

즉, RDS 데이터베이스 백업시 새로운 RDS 인스턴스와 그에 해당하는 RDS Endpoint가 생기는 것이다.
original.ap-northeast-2.rds.amazonaws.com(원본 엔드포인트)
restored.ap-northeast-2.rds.amazonaws.com(백업 엔드포인트)
원본 엔드포인트과 백업 엔드포인트는 두개는 완전 다른 객체가 된다.

📌 Multi AZ

성능 개선을 위해서 사용되지는 않음. 따라서 성능 개선을 기대하기 위해선 Read Replica가 사용되어져야 함

  • 원래 존재하는 RDS DB에 무언가 변화(e.x : Write) 가 생길때 다른 Availability
    Zone에 똑같은 복제본이 만들어짐 = Synchronize -> 따라서 동시다발적으로 일어난다 즉 딜레이가 적음
  • AWS에 의해서 자동으로 관리가 이루어짐 (No admin intervention)
  • 원본 RDS DB에 문제가 생길 시 자동으로 다른 AZ의 복제본이 사용됨 -> 이를 disaster recovry 라고 부른다
  • Disaster Recovery Only!

즉 쓰기 기능이 실행된 후 복제본이지만 다른 AZ에 쓰여진다. 2A에 문제가 생기면 2B에 fail over를 보냄 재해복구 시 시간 감소된다.

📌 Read Replica

성능을 극대화시키기 위해 존재

  • Production DB의 읽기 전용 복제본이 생성됨 //쓰기 불가능
  • 주로 Read-Heavy DB작업시 효율성의 극대화를 위해 사용됨 (Scaling)
  • Disaster Recovery용도가 아님!
  • 최대 5개 Read Replica DB 허용//1개의 RDS에 대해
  • Read Replica의 Read Replica 생성 가능 (단 Latency 발생)//Read Replica의 Read Replica를 다른 AZ, 같은 AZ에 넣어도 가능하다
  • 각각의 Read Replica는 자기만의 고유 Endpoint 존재//RDS DB는 IP주소가 아니라 Endpoint로

즉, 쓰기 작업에 의해 Read Replica
메인 프로모션 DB에만 EC2 연결을 시키는게 아니라 하나의 EC2를 Read Replica로 각각 연결 가능
메인 DB워크로더를 낮툴 수 있으며 성능개선 효과

📌 ElastiCache

캐시를 의미, 초반 어플리케이션 개발 및 테스트 용도로는 적합 x

  • 클라우드 내에서 In-memory 캐시를 만들어줌
  • 데이터베이스에서 데이터를 읽어오는 것이 아니라 캐시에서 빠른 속도로
    데이터를 읽어옴//SNS, 트위치, 네이버,, 등등 많은 사람들에 의해서 캐시에 로딩해줘서 빠른 로딩을 해준다
  • Read-Heavy 어플리케이션에서 상당한 Latency 감소 효과 누림
    //2가지로 나뉨 - Memcached, Redis

Memcached

  • Object 캐시 시스템으로 잘 알려져 있음
  • ElastiCache는 Memcached의 프로토콜을 디폴트로 따름
  • EC2 Auto Scaling처럼 크기가 커졌다 작아졌다 가능함 //매우 중요, 데이터 처리 사용량에 따라 유동적이다
  • 오픈소스

Memcached - 이럴때 사용하세요
1. 가장 단순한 캐싱 모델이 필요한가요? o
2. Object caching이 주된 목적인가요? o
3. 캐시 크기를 마음대로 scaling하기를 원하나요? o

Redis

  • Key-Value, Set, List와 같은 형태의 데이터를 In-Memory에 저장 가능함
  • 오픈 소스
  • Multi-AZ 지원 //Multi-AZ 재해복구 기능이 있음

Redis - 이럴때 사용하세요
1. List, Set과 같은 데이터셋을 사용하나요? o
2. 리더보드처럼 데이터셋의 랭킹을 정렬하는 용도가 필요한가요? o
3. Multi AZ기능이 사용되어져야 하나요? o

느낀점

EC2, RDS의 대략적인 역할만 알고 있었는데, 이렇게 세부적인 이론을 배울 수 있어 좋았고, EC2와 RDS 사이의 연결도 배울 수 있어 좋았다. 그치만 3강의 실습 1이 잘 되지 않아 다시 시도해봐야겠다 ㅠㅠ 혼자 하면 소홀해졌을텐데 소학회를 통해서 같이 공부할 수 있어서 기쁘다!!

profile
백엔드 개발자

0개의 댓글