AWS RDS + ElastiCache

김파란·2025년 2월 9일

AWS

목록 보기
5/12

RDS

  • 관계형 데이터베이스 서비스의 약자로 SQL을 쿼리 언어로 사용하는 데이터베이스 서비스를 의미한다
  • SQL: 데이터베이스르 쿼리하는 구조화된 언어로 적응력이 좋아 많은 엔진에서 작동하고 있다
  • AWS에서는 Postgrs, MySQL, MariaDB, Oracle, Miscrosfot SQL SERVER, DB2, Aurora를 지원한다
  • RDS는 관리형 서비스이기 때문에 많은 기능을 제공한다
    • 프로비저닝와 운영 체제 패치가 자동화되어있다
    • 지속적인 백업과 특정 시점으로 복원을 할 수 있다 (특정 시점 복원)
    • 모니터링 대시보드를 사용하여 성능을 볼 수 있다
    • 읽기 복제본을 가질 수 있다
    • 다중 가용 영역을 설정할 수 있다
    • 수직적, 수평적 확장이 가능하다
    • EBS의 지원을 받는다

    1. 스토리지 오토 스케일링

  • 이 기능을 사용하면 RDS 스토리지가 자동으로 스케일링 된다
    • 스토리지를 늘리기 위해 데이터베이스 를 중단하는 작업을 할 필요 없다
  • 스토리지 최대 한도를 정하고, 특정 조건에서 자동 스케일링을 진행하도록 할 수 있다

2. 읽기 전용 복제본

  • 읽기전용 복제본을 스케일링한다
  • 최대 15개까지 생성할 수 있으며 동일한 가용영역, 다른 가용영역, 다른 리전에 걸쳐서 생성할 수 있다
  • 비동기로 복제가 이뤄지고 데이터베이스로도 승격할 수 있다
  • 읽기 전용 복제본은 동일한 리전 내에 있을 때는 비용이 발생하지 않는다
    • 리전이 다른 경우 네트워크 비용을 내야한다

3. 다중 AZ

  • 주로 재해 복구에 사용된다
  • 동기적으로 스탠바이 인스턴스로 복제한다
  • 하나의 DNS 이름으로 장애발생하면 자동으로 장애조치를 한다
  • 스케일링하지 않고 마스터 데이터베이스에 문제가 발생할 경우를 대비한 장애 조치이다
  • 읽기 전용 복제본을 다중 AZ로도 설정할 수 있다
  • 단일 AZ에서 다중 AZ로 수정할 때는 중지할 필요없고 바로 적용이 가능하다

작동원리

  1. Master의 DB를 스냅샷한다
  2. 스냅샷을 바탕으로 StandByDB가 복원된다 (생성)
  3. 스탠바이 데이터베이스가 복원되면 두 데이터베이스간 데이터가 동기적으로 동기화된다

4. RDS Custom

  • RDS에서는 운영 체제나 사용자 지정 기능에 액세스할 수 없다
  • 그러나 RDS Custom에서는 가능하다
    • RDS Custom은 Oracle, SQL Server만 다룬다
    • OS 및 데이터베이스 사용자 지정 기능에 액세스할 수 있다
  • 내부 설정 구성, 패치 적용, 네이티브 기능 적용, SSH, SSM으로 EC2액세스에 접근할 수 있다
  • 커스텀을 사용하면 자동화는 끄는 것이 좋다
    • 오류가 발생할 확률이 높아지기 때문에 데이터베이스 스냅샷을 만들어 두는 것이 좋다

5. Amazon Aurora

  • AWS 고유 기술로, Postgres 및 MySQL에 호환되도록 만들었다
  • 클라우드에 최적화되어 있고, 여러가지 최적화를 통해 MySQL보다 5배높은 성능을 보인다
    • 장애조치에 즉각적이기 때문에 다중 AZ나 MySQL RDS보다 훨씬 바르다
    • 기본적으로 클라우드 네이티브이므로 가용성이 높다
  • 스토리지를 자동으로 확장해주는데 10GB에서 시작하지만 자동으로 128TB까지 확장된다
  • 읽기 전용 복제본은 최대 15개까지 가능하다
  • RDS보다 20% 비싸지만 스케일링 측면에서 훨씬 더 효율적이다

1). 높은 가용성과 읽기 스케일링

  • Aurora는 총 6개의 인스턴스를 3군데 가용영역에 저장한다
    • 무언가를 기록할 때마다 6개의 인스턴스에 기록이 된다
    • 쓰기에는 6개 중 4개만 있으면 된다
    • 읽기에는 6개 사본 중 3개만 있으면 된다
    • 자가 복구 기능이 있어 일부 데이터가 손상이 되면 P2P 복제를 통한 자동 복구를 한다
  • 단일 볼륨에 의존하지 않고 수백개의 볼륨을 사용하여 리스크를 크게 감소시켜 준다
  • Writer Endpoint와 Reader Enpoint가 따로 있고, Reader Endpoint는 모든 읽기 전용 복제본과 자동으로 연결된다
  • 클라이언트가 리더 엔드포인트에 연결하면 그 중에 하나로 연결이 되면 로드 밸런싱이 이뤄진다
  • 로드 밸런싱이 Connection Level에서 일어난다

스토리지

  • 세 개의 AZ가 있고 공유 볼륨이 있다
    • 복제, 자가 복구, 자동 확장 기능을 수행한다
  • 데이터를 저장하면 각기 다른 세개 가용영역에 6개의 사본이 생긴다
  • 마스터는 한 개뿐이고 장애가 일어나면 평균 30초 이내로 조치가 시작된다
  • 마스터 외의 읽기 전용 인스턴스를 최대 15개까지 만들 수 있다

2). 커스텀 엔드포인트

  • 몇개의 인스턴스들은 더 좋은 인스턴스 타입을 사용해서 특정한 몇개만 custom Endpoint에 가도록 한다
  • 특정 복제본들이 분석적 쿼리를 담당하는 것이 나을 것이다
  • 커스텀 엔드포인트를 사용하면 리더 엔드포인트 자체는 사용되지 않게 된다
    • 사라지진 않지만 더이상 사용하진 않는다
    • 그래서 다양한 커스텀 엔드포인트를 만들어야 한다

3). 서버리스

  • 자동화된 데이터베이스 예시화와 실제 사용량에 따른 Auto Scaling을 제공한다
  • 예측 불가능한 것에 대응하는 것에 적합하고 Capacity planning을 할 필요가 없다
  • 활용하고 있는 Aurora 인스턴스마다 초당 비용을 지불하는 것이 훨씬 효율적이다
  • 클라이언트는 Aurora가 관리하는 Fleet에 요청을 한다
  • 여러 인스턴스가 생성되고 요청량에 기반해 서버리스 방식으로 생성된다

4). Global Aurora

  • 모든 읽기와 쓰기가 일어나는 하나의 기본 리전이 있고 최대 5개의 보조 읽기 전용 리전을 만들 수 있다
    • 응답 지연은 1초 이하이고, 보조 리전당 최대 16개의 읽기 전용 복제본을 사용할 수 있다
    • 한 리전에 데이터베이스 중단이 일어날 경우 1분 이내로 다른 리전을 진급시킨다

6. RDS 백업

  • 자동으로 매일 데이터베이스의 전체 백업을 수행한다
  • 5분마다 트랜잭션 로그가 백업된다
    • 가장 빠른 백업은 5분 전 백업이다
    • 자동 백업을 통해 언제라도 5분 전으로 복원할 수 있다
  • 자동 백업 보존 기간은 1~35일간 가능하다
  • 수동 데이터베이스 스냅샷도 가능하며, 수동으로 사용자가 트리거를 한다
    • 장점으로는 원하는 기간동안 백업을 유지할 수 있다
  • RDS를 중지하더라도 스토리지 비용을 내야한다
    • 스냅샷을 만든 후 원본 데이터베이스를 제거하면 훨씬 저렴하게 사용할 수 있다

1). 복구 옵션

  • 백업 또는 스냅샷으로 데이터베이스를 복구한다
  • S3에서 데이터베이스를 복구 할 수 있다
  • Aurora는 Percona XtraBackup을 S3로 보내 백업을 복원할 수 있다

2). 클론

  • 기존 데이터베이스 클러스터에서 새로운 Aurora 데이터베이스 클러스터를 생성할 수 있다
  • Copy-on-write를 이용하기 때문에 스냅샷을 찍고 복원하는 것보다 빠르다
    • 동일한 데이터 볼륨을 사용하기 때문에 데이터 복사를 하지 않아 빠르다
    • 새로운 데이터가 추가되면 추가 스토리지가 생성되고 그쪽에 데이터가 저장이 된다

7. Proxy

  • 프록시를 사용하면 애플리케이션이 데이터베이스 내에서 풀을 형성하고 공유할 수 있다
    • 일일이 연결하지 않고 하나의 풀에서 연결을 모아 RDS로 가는 연결을 줄여준다
    • CPU, RAM, 리소스의 부담을 줄여주고 시간초과를 최소화할 수 있다
  • 완전한 서버리스로 오토 스케일링 가능하고, 다중 AZ도 지원한다
  • 장애가 발생하면 기본 인스턴스가 아닌 대기 인스턴스로 실행되며 프록시 덕분에 장애 조치 시간을 66%까지 줄일 수 있다
  • RDS 프록시에만 연결하면 된다
  • IAM인증을 강제함으로써 IAM을 통해서만 연결할 수 있도록 한다
  • 퍼블릭 액세스가 불가능하고 private를 통해서만 연결할 수 있다

ElastiCache

  • Redis나 Memcached를 관리할 수 있도록 도와준다
  • 페치, 최적화, 설정, 구성 ,모니터링, 백업, 장애 복구를 도와준다

1. Redis vs Memcached

  • Redis
    • 다중 AZ와 자동 장애 조치
    • 읽기 복제본과 고가용성
    • AOF 지속성을 이용한 데이터 내구성
    • 백업 및 복원
    • Sets과 Sroted Sets를 지원한다
  • Memcached
    • 데이터 분할을 위해 멀티노드를 사용한다 (샤딩)
    • 고가용성이 없고 복제가 일어나지 않고 영구 캐시가 없고 복원 및 백업이 없다
    • 멀티스레드 아키텍처이다
    • 여러 인스턴스가 모두 샤딩을 통해 작동한다
    • 분산되어 있는 순수한 캐시이다 (손실 가능성)

2. 보안

  • Redis에서만 IAM 인증을 지원하며, 나머지 경우에는 사용자 이름과 비밀번호를 사용하면 된다
  • 클러스터를 만들 때 Redis AUTH라는 Redis 내 보안을 통해 비밀번호와 토큰을 설정할 수 있다
    • SSL 전송 중 암호화도 가능하다
  • Memcached에서는 SASL기반 승인을 제공한다

0개의 댓글