RDS

이상훈·2023년 5월 14일
0

aws

목록 보기
3/7

RDS란?

RDS : Relational DB Service의 약자로 관계형 데이터베이스를 뜻함

AWS RDS에서 사용 가능한 DB : Microsoft SQL, Oracle, MySQL, Postgre, Aurora, Maria DB

Aurora는 AWS 자체에서 직접 운영하는 데이터베이스

Data Warehousing

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

OLTP VS OLAP

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

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

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

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

Database Backups

Automated Backups (자동 백업)

  • Retention Period(1-35일) 안의 어떤 시간으로 돌아가게 할 수
    있음
  • Automated Backups는 그날 생성된 스냅샷과 Transaction logs(TL)을 참고함
  • RDS를 만들 때 디폴트로 Automated Backups 기능이 설정되어 있으며 백업 정보는 S3에 저장
  • Automated Backups 동안 약간의 I/O suspension이 존재할 수 있음 -> Latency

DB Snapshots (데이터베이스 스냅샷)

  • 주로 사용자에 의해 실행됨
  • 원본 RDS Instance를 삭제해도 스냅샷은 존재함
    • Automated Backups은 같이 삭제됨

데이터베이스 백업시 일어나는 일

 원본 RDS 인스턴스를 가지고 새로운 데이터베이스를 복원 시 완전히 새로운 RDS Instance와 RDS Endpoint가 생성됨. 아래 그림을 보면 원본 endpoint와 백업 endpoint가 다름, 두개는 완전히 서로 다른 객체


Multi AZ, Read Replicas

Multi AZ

  • 원래 존재하는 RDS DB에 무언가 변화(e.x : Write) 가 생길 때 다른 Availability Zone에 똑같은 복제본이 만들어짐 = Synchronize
  • AWS에 의해서 자동으로 관리가 이루어짐 (No admin intervention)
  • 원본 RDS DB에 문제가 생길 시 자동으로 다른 AZ의 복제본이 사용됨
  • Multi AZ를 만든다고 성능이 좋아지진 않음, Disaster Recovery Only!

 그림과 같이 3개의 ec2 인스턴스가 하나의 RDS db에 연결되어 쓰기 기능이 실행되는 경우 복제본이 다른 AZ에 만들어진다. 만약 엔드포인트가 ap-northeast-2A인 RDS에 문제가 생기면 ap-northeast-2B인 RDS로 백업할 수 있다.

Read Replica

  • Production DB의 읽기 전용 복제본이 생성됨
  • 주로 Read-Heavy DB작업시 효율성의 극대화를 위해 사용됨 (Scaling)
  • 성능을 극대화하기 위해 존재, Disaster Recovery용도가 아님!
  • 하나의 RDS db에 최대 5개 Read Replica DB 허용
  • Read Replica의 Read Replica 생성 가능 (단 Latency 발생)
  • 각각의 Read Replica는 자기만의 고유 Endpoint 존재

    참고로 rds db는 ip주소가 아닌 Endpoint로 식별

  그림과 같이 3개의 EC2 인스턴스가 하나의 RDS에 연결되어 쓰기 기능이 실행되는 경우 Read Replica에 의해 똑같은 RDS 복제본이 생성되어 쓰기 작업도 똑같이 실행된다. 이렇게 함으로써 대부분의 트래픽이 read 트래픽일때 메인 production db에 모든 인스턴스를 연결하는 것이 아니라 하나의 EC2 인스턴스를 각각의 read replica로 연결시켜 메인 db의 workload를 현저히 낮춰 성능 개선을 할 수 있다. 뿐만 아니라 read replica의 read replica도 생성가능하다.


Elastic Cache

  • 클라우드 내에서 In-memory 캐시를 만들어줌
  • 데이터베이스에서 데이터를 읽어오는 것이 아니라 캐시에서 빠른 속도로 데이터를 읽어옴
  • Read-Heavy 애플리케이션에서 상당한 Latency 감소 효과 누림
  • Elastic Cache는 Memcached, Redis 2종류 존재

Memcached

  • Object 캐시 시스템으로 잘 알려져 있음
  • ElastiCache는 Memcached의 프로토콜을 디폴트로 따름
  • EC2 Auto Scaling처럼 크기가 커졌다 작아졌다 탄력적으로 사용 가능함
  • 무료로 사용 가능한 오픈소스
  • 사용 용도
    • 가장 단순한 캐싱 모델이 필요한 경우
    • key-Value, List, Set이 아닌 Object caching이 주된 목적일때
    • 캐시 크기를 마음대로 scaling하기를 원할때

Redis

  • Key-Value, Set, List와 같은 형태의 데이터를 In-Memory에 저장 가능함
  • 무료로 사용 가능한 오픈 소스
  • Multi-AZ 지원
    • disaster recovery
  • 사용용도
    • List, Set과 같은 데이터셋을 사용할 경우
    • 리더보드처럼 데이터셋의 랭킹을 정렬하는 용도가 필요할 때
    • Multi AZ기능이 필요할 경우
profile
Problem Solving과 기술적 의사결정을 중요시합니다.

0개의 댓글