AWS Certified Solutions Architect Associate [6] RDS, Aurora, ElasticCache

CHAN LIM·2022년 7월 20일
1

RDS Overview

RDS

  • 관계형 데이터베이스 서비스를 나타내며 이는 SQL을 쿼리 언어로 사용하는 데이터베이스를 위한 관리형 데이터베이스를 뜻합니다.
  • 이 언어를 이용해서 클라우드에 데이터베이스를 생성할 수 있고 이와 같은 데이터베이스는 AWS 상에서 관리되므로 그 이점이 아주 큽니다.
    • Postgres
    • MySQL
    • MariaDB
    • Oracle
    • Microsoft SQL Server
    • Aurora

  • EC2 인스턴스 상에 자체 데이터베이스 서비스를 배포하지 않고 RDS를 사용하는 이유
    • RDS관리형 서비스로 AWS가 데이터베이스뿐만 아니라 여러 기타 서비스 또한 제공하고 있습니다.
      • 프로비저닝 자동화, 기본 운영 체제 패치 자동화
      • 지속적인 백업이 수행되며 특정 타임스탬프도 복구할 수 있습니다.
        (PITR) (Point in Time Restore)
      • 모니터링 대시보드
      • 읽기 전용 복제본에 대한 강의도 따로 존재
      • 다중 AZ를 설정
      • 업그레이드를 위한 유지 보수도 존재
      • 읽기 전용 복제본을 추가함으로써 수직 및 수평 확장성을 증가\
      • 스토리지가 EBS를 기반
  • 단, RDS 인스턴스에는 SSH를 따로 가질 수 없습니다.
    • AWS에서 제공되므로
      기본 EC2 인스턴스에 대해서는 사용자가 따로 접근 권한을 갖지 않기 때문입니다.

RDS Backups

  • 백업은 RDS에서 자동으로 활성화되며 자동으로 생성됩니다.
  • 매일 수행되는 데이터베이스 전체에 대한 백업과 트랜잭션 로그, 즉 일일 트랜잭션 로그가 매 오 분마다 RDS에 백업됩니다.
  • 이 두 가지를 함께 이용해서 그 어떤 지정 시점으로든 데이터베이스를 복원할 수 있습니다.
    • 오래된 백업에서부터 단 오 분 전 백업으로까지 자유롭게 돌아갈 수 있습니다.
  • 자동 백업은 기본적으로는 7일간 보관되지만 최대 35일까지로 보관 기간을 설정할 수 있습니다.

DB Snapshots

  • 스냅샷은 사용자가 수동으로 발동시키는 백업으로 백업 보관 기간을 사용자 임의로 설정할 수 있습니다.

RDS - Storage Auto Scaling

  • RDS 데이터베이스를 생성할 때는 원하는 스토리지 용량을 지정해야 합니다.
  • RDS 스토리지 오토 스케일링이 활성화되어 있으면 RDS가 자동으로 스토리지에 대한 스케일링을 수행합니다.
  • 데이터베이스 스토리지를 수동으로 확장하는 작업을 피하는 것이 골자입니다.
  • 최대 스토리지 임계값을 설정해야 합니다.
  • 이러한 상황일 때 자동으로 스토리지를 수정합니다.
    • 사용 가능한 스토리지가 할당된 스토리지의 10% 미만일 경우.
    • 낮은 스토리지 상태가 오 분 이상 지속되는 경우.
    • 지난 수정이 여섯 시간 이상 지났을 경우.
  • 이는 워크로드를 예측할 수 없는 애플리케이션에 아주 유용합니다.

RDS 읽기 전용 복제본과 다중 AZ

RDS 읽기 전용 복제본 (Read Replicas)

  • 읽기를 스케일링합니다
  • 최대 다섯 개까지 생성할 수 있습니다.
  • 동일한 가용 영역 또는 가용 영역이나 리전을 걸쳐서 생성될 수 있습니다.
  • 읽기 전용 복제본 사이에 비동기식 복제가 발생합니다.
    • 비동기식이란 결국 읽기가 일관적으로 유지된다는 것을 뜻합니다.
  • 복제본 중 하나를 데이터베이스로 사용하고자 하며
    그에 대한 권한을 획득하면 이를 데이터베이스로 승격시킬 수 있습니다.
  • 주요 애플리케이션에 있는 모든 연결을 업데이트해야 합니다.
    • RDS 클러스터 상의 읽기 전용 복제본 전체 목록을 활용할 수 있습니다.
  • 읽기 전용 복제본이 있는 경우에는 SELECT 명령문에만 사용하는 점을 명심해야 합니다.

네트워크 비용 (Cost)

  • AWS에서는 하나의 가용 영역에서 다른 가용 영역으로 데이터가 이동할 때에 비용이 발생합니다.
    • 예외가 존재하며 이 예외는 보통 관리형 서비스에서 나타납니다. 그리고 읽기 전용 복제본은 관리형 서비스입니다.
  • 읽기 전용 복제본이 다른 AZ 상이지만 동일한 리전 내에 있을 때는 비용이 발생하지 않습니다.
  • 서로 다른 리전에 복제본이 존재하는 경우,
    RDS DB 인스턴스와 읽기 전용 복제본이 여러 리전을 넘나들어야 하기 때문에 네트워크에 대한 복제 비용이 발생합니다.

다중 AZ

  • 다중 AZ는 주로 재해 복구에 사용됩니다.
  • 동기식으로 이를 AZ B에 스탠바이 인스턴스로 복제합니다.
  • 하나의 DNS 이름을 갖고 애플리케이션 또한 하나의 DNS 이름으로 통신하며 마스터에 문제가 생길 때에도 스탠바이 데이터베이스에 자동으로 장애 조치가 수행됩니다.
  • 가용성을 높일 수 있습니다.
  • 전체 AZ 또는 네트워크가 손실될 때에 대비한 장애 조치이자 마스터 데이터베이스의 인스턴스 또는 스토리지에 장애가 발생할 때 스탠바이 데이터베이스가 새로운 마스터가 될 수 있도록 하는 겁니다.
  • 따로 앱에 수동으로 조치를 취할 필요가 없습니다.
  • 스케일링에 이용되지도 않습니다.

  • 재해 복구를 대비해서 읽기 전용 복제본을 다중 AZ로 설정할 수 있습니다.

단일 AZ에서 다중 AZ로 RDS 데이터베이스 전환이 가능할지?

  • 단일 AZ에서 다중 AZ로 전환할 때에 데이터베이스를 중지할 필요가 없다는 가정하에,
  • 데이터베이스 수정을 클릭하고 다중 AZ 기능을 활성화시키기만 하면 됩니다.
  • 다음이 내부적으로 발생하는 일입니다.
    • 기본 데이터베이스의 RDS가 자동으로 스냅샷을 생성합니다.
    • 이 스냅샷은 새로운 스탠바이 데이터베이스에 복원됩니다.
    • 스탠바이 데이터베이스가 복원되면 두 데이터베이스 간 동기화가 설정되므로
      스탠바이 데이터베이스가 메인 RDS 데이터베이스 내용을 모두 수용하여 다중 AZ 설정 상태가 됩니다.

RDS 암호화 + 보안

암호화

  • 미사용 데이터 암호화는 AES 256비트 암호화를 사용하는 AWS의 키 매니지먼트 서비스인 AWS KMS마스터 데이터베이스읽기 전용 복제본암호화할 수 있습니다.
    • 암호화 실행 시 실행 시간을 정의해야 합니다.
      • 마스터 데이터베이스를 암호화하지 않으면 복제본도 암호화할 수 없습니다.
    • Oracle과 SQL 서버에서 TDE라고 하는 투명한 데이터 암호화활성화할 수 있고 이는 데이터베이스 암호화의 대안을 제공합니다.

  • 전송 중 암호화는 늘 SSL 인증서가 필요합니다.
    • 클라이언트에서 데이터베이스로 전송 중인 것을 말합니다.
    • 데이터베이스에 연결 시 신뢰할 수 있는 인증서로 SSL 옵션을 제공하면 SSL을 연결할 수 있습니다.
    • 모든 클라이언트가 SSL을 사용하도록 하려면,
      • PostgreSQL에서는 rds.force_ssl=I인 콘솔 매개변수 그룹을 설정.
      • MySQL에서는 GRANT USAGE ON *.* TO 'mysqluser'@%'REQUIRE SSL이라는 명령문을 데이터베이스 내부에서 실행.

암호화 작업

  • 암호화 RDS 백업
    • 암호화 되지 않은 RDS 데이터베이스에서 스냅샷을 생성하면
      스냅샷 자체는 암호화되지 않는 것입니다.
    • 암호화된 RDS 데이터베이스에서 스냅샷을 생성하면
      모든 스냅샷이 기본으로 암호화되는데 이는 항상 기본 값은 아닙니다.
    • 그래서 암호화되지 않은 스냅샷암호화된 스냅샷으로 복제해야 합니다.

  • 암호화되지 않은 RDS 데이터베이스의 암호화 방법
    • 암호화 되지 않은 RDS 데이터베이스의 스냅샷을 생성해야 하고 이는 암호화되지 않습니다.
    • 복제한 스냅샷의 암호화를 활성화합니다.
    • 이 암호화된 스냅샷으로 데이터베이스를 복원할 수 있으며
      이는 암호화된 RDS 데이터베이스를 제공합니다.
    • 새 암호화된 RDS 데이터베이스로 옮기고 이전 데이터 베이스를 삭제합니다.

RDS 보안 - 네트워크와 IAM

  • 네트워크 보안
    • 네트워크 보안의 RDS 데이터베이스는 대게 퍼블릭 서브넷이 아닌 프라이빗 서브넷에서 배포됩니다.
    • RDS 보안은 RDS 인스턴스에 연결되어 있는 보안 그룹을 활용해 실행됩니다.
      EC2 인스턴스와 동일한 개념입니다.
      RDS와 통신할 수 있는 IP 또는 보안 그룹을 제어합니다.

  • 액세스 관리
    • IAM 정책AWS RDS를 관리하는 사람만 제어할 수 있습니다.
    • 기존의 방식으로 데이터베이스를 연결하려면,
      데이터 베이스에 로그인하기 위해 기존 사용자 이름암호를 사용해야 합니다.
    • 또는 RDS MySQLPostgreSQL과 같은 IAM 기반의 인증을 사용할 수 있습니다.

결국 데이터베이스 보안은 주로 데이터베이스 안에서 이루어지는 것.

IAM 인증

  • MySQLPostgreSQL에서만 실행되며 암호는 필요하지 않고,
    인증 토큰이라는 것이 필요한데
    RDS API 호출을 사용해서 IAM으로 직접 얻을 수 있습니다.
  • 인증 토큰은 수명이 짧은데 수명은 15분입니다.
  • 장점
    • 네트워크 내외로 SSL로 암호화됩니다.
    • IAM은 데이터베이스 내부에서의 사용자 관리 대신 중앙에서의 사용자 관리에 사용합니다.
    • IAM 역할EC2 인스턴스 프로파일을 쉽게 통합할 수 있습니다.

정리
미사용 데이터 암호화데이터베이스 인스턴스를 처음 생성할 때만 실행되며 암호화되지 않았으면 스냅샷을 생성해야 합니다.
그리고 스냅샷을 복제해 암호화 한 다음에 암호화된 스냅샷에서 새 데이터베이스를 생성하면 데이터베이스를 암호화합니다.

사용자의 책임

  • 모든 포트와 IP 보안 그룹, 인바운드 규칙 사용 가능한 데이터베이스의 보안 그룹을 확인합니다.
  • 내부 데이터베이스의 모든 사용자 생성 및 권한을 관리합니다.
  • MySQL과 PostgreSQL 용 IAM으로 관리해야 합니다.
  • 퍼블릭 액세스가 있고 없는 데이터베이스를 생성해 프라이빗 서브넷이나 퍼블릭 서브넷으로 가게 합니다.
  • 파라미터 그룹과 데이터베이스가 SSL 연결만 허용하도록 구성되어 암호화되는지 확인해야 합니다.

AWS의 책임

  • SSH 액세스가 발생하지 않도록 합니다.
  • 데이터베이스 패치나 OS 패치를 할 필요가 없습니다.
  • 기본 인스턴스도 확인하지 않아도 됩니다.

Amazon Aurora

Amazon Aurora

  • Aurora는 AWS의 독점 기술입니다.
  • 오픈 소스는 아니지만 MySQL 및 Postgres와 호환됩니다.
  • 클라우드에 최적화
    • RDS의 mySQL보다 성능이 5배나 향상
    • RDS의 Postgres보다는 3배 향상
  • Aurora 스토리지는 자동으로 커집니다.
    • 10GB ~ 128TB
    • DB 또는 SysOps가 여러분이 디스크를 모니터링하지 않아도 시간에 따라 자동으로 커진다는 점입니다.
  • 15개의 읽기 전용 복제본을 가지고 복제 속도도 훨씬 더 빠릅니다. MySQL은 5개예요.
  • Aurora에서는 장애 조치가 즉각적으로 이루어집니다.
  • 비용은 RDS보다 20% 정도 더 높지만, 훨씬 더 효율적이어서 규모가 클 경우, 비용 절감이 가능합니다.

Aurora의 고가용성 및 읽기 스케일링

  • Aurora쓰기 요청을 할 때 마다 6개의 데이터 복제본3개의 AZ에 걸쳐 저장합니다.
  • 그리고 읽기 요청에는 6개 중 3개의 복제만 필요합니다.
  • 자가 복구 과정이 있어서 어떤 데이터가 손상되거나 잘못되었을 경우에 백엔드에서 P2P 복제를 통해 자가 복구를 할 수 있어 좋습니다.
  • 수백 개의 볼륨이 있습니다.

  • Aurora는 RDS를 위한 다중 AZ라고 할 수 있습니다.
    • Aurora마스터가 있고 거기에 쓰기를 합니다.
    • 마스터가 작동하지 않으면 평균적으로 30초 안에 장애 조치가 이루어집니다.
    • 마스터 외에도 읽기를 할 수 있는 15개의 읽기 전용 복제본을 가질 수 있습니다.
      • 모든 읽기 전용 복제는 마스터에 장애 발생 시 마스터를 대체할 수 있습니다.
    • 읽기 전용 복제의 좋은 점리전 간 복제를 지원합니다.

Aurora DB 클러스터

  • Writer 엔드포인트

    • 마스터를 가리킵니다.
  • Reader 엔드포인트

    • 리더 엔드포인트의 기능은 라이터 엔드포인트와 동일합니다.
    • 로드 밸런싱 연결을 도와주고 모든 읽기 전용 복제본에 자동으로 연결합니다.
    • 클라이언트가 리더 엔드포인트에 연결할 때마다
      읽기 전용 복제본 중 하나에 연결되고 로드 밸런싱 할 수 있게 됩니다.
    • 로드 밸런싱이 이루어지는 곳이 문장 수준이 아니라 연결 수준이라는 사실입니다.

Aurora 특징

  • 자동 장애 조치
  • 백업 및 복구 격리와 보안
  • 산업 규정 준수
  • 푸시 버튼 스케일링
  • 다운타임 없는 자동 패치
  • 확장 모니터링
  • 정기 유지 보수
  • 백트랙
    • 언제든 데이터를 복원할 수 있습니다

Aurora 보안

  • 보안의 경우 RDS와 유사합니다.
  • KMS를 사용해 암호화합니다.
  • 자동 백업스냅샷 그리고 복제본암호화합니다.
  • SSL을 통해 전송 중 암호화가 이루어집니다.
  • IAM 토큰을 사용하는 인증도 있습니다.
  • 보안 그룹을 사용한 인스턴스 보호는 여전히 여러분의 몫이며 인스턴스에 SSH 할 수 없습니다.
  • Aurora 보안은 전부 RDS 보안과 동일합니다.

Amazon Aurora Advanced

Aurora 복제본, 오토 스케일링

Amazon 오로라 데이터베이스의 CPU 사용량이 증가했다고 합시다.
이 경우 오토 스케일링 복제본을 설정할 수 있습니다.
그렇게 하면 Amazon 오로라 복제본이 추가되고 그러면 자동으로 리더 앤드 포인트가 이 새 복제본을 포함할 수 있도록 확장될 겁니다.
이 새 복제본은 트래픽을 수신하기 시작하고 전체 CPU 사용량을 낮추기 위해 좀 더 분산된 방식으로 읽기를 수행합니다.

Aurora - 커스텀 엔드포인트

Aurora 인스턴스에서 사용자 지정 엔드 포인트를 정의한다고 하겠습니다.
그렇게 하는 이유는
이 인스턴스가 더 강력하기 때문에
특정 복제본에 대한 분석 쿼리를 실행하는 것이 더 낫기 때문입니다.

  • 실무에서는 다양한 워크로드에 대한 많은 사용자 지정 앤드 포인트를 설정하여 오로라 복제본의 하위 집합만을 쿼리할 수 있습니다.

Aurora 서버리스

  • 자동화된 데이터베이스 인스턴스화실제 사용을 기반으로 한 오토 스케일링을 제공합니다.
  • 드물거나 간헐적이거나 예측할 수 없는 워크로드가 있을 때 유용합니다.
  • 용량 계획을 수행할 필요가 없습니다.
  • 훨씬 더 비용면에 효율적입니다.

Aurora 다중 마스터

  • 라이터 노드에 대한 높은 가용성을 원하는 경우에 씁니다.
    • 라이터 노드에 대한 즉각적인 장애 조치를 원하는 경우
  • 모든 노드가 읽기와 쓰기 작업을 합니다.
    • 이 때 쓰기 노드가 하나만 있고 다운돼서 실패하게 되면 읽기 복제본을 새로운 마스터로 승격시킵니다.

Global Aurora

  • Aurora 리전 간 읽기 전용 복제본이 있다면 재해 복구에도 유용하고 아주 간단하게 구현할 수 있습니다.
  • Aurora 글로벌 데이터베이스를 설정할 수도 있습니다.
  • 이 경우 모든 읽기 및 쓰기가 발생하는 하나의 기본 리전이 있지만
    최대 다섯 개의 보조 읽기 전용 리전을 설정할 수도 있습니다.
  • 보조 리전복제본 랙이 1초 미만이어야 하고 최대 16개의 읽기 전용 복제본을 가질 수 있습니다.
    • 전 세계의 읽기 전용 복제본에 대한 지연 시간을 줄일 수 있습니다.
  • RTO가 있으므로 복구 시간 목표는 1분 미만이 될 겁니다.

Aurora 머신러닝

  • SQL 인터페이스를 통해 애플리케이션에 ML 기반 예측을 추가할 수 있는 개념입니다.
  • 오로라와 다양한 AWS 머신 러닝 서비스 간의 간단하고 최적화된 안전한 통합입니다.
  • 지원되는 서비스
    • SageMaker : 모든 종류의 머신 러닝 모델을 사용
    • Amazon Comprehend : 감정 분석을 수행
  • 머신 러닝 경험은 필요 없습니다.
  • 사용 사례
    • 사기 탐지, 광고 타겟팅 감정 분석, 제품 추천

Amazon ElastiCache

ElastiCache

  • RDS와 동일한 방식으로 관계형 데이터베이스를 관리할 수 있습니다.
  • Redis 또는 Memcached 같은 캐시 기술을 관리할 수 있도록 합니다.
  • Cache?
    • 캐시는 높은 성능낮은 지연 시간을 가진 인 메모리 데이터베이스입니다.
  • ElasiCache를 사용하면 읽기 집약적인 워크로드의 부하를 줄이는데 도움이 됩니다.
  • 애플리케이션을 무상태(stateless)로 만들 수 있도록 합니다.
  • AWS운영 체제, 패치, 최적화설정, 구성, 모니터링, 장애 회복 그리고 백업RDS와 동일한 유지 보수를 수행합니다.
  • 애플리케이션에 관한 몇 가지 어려운 코드 변경을 요청할 수도 있습니다.

ElastiCache 솔루션 아키텍쳐 - DB Cache

  • RDS 데이터베이스에서 부하를 줄이는데 도움을 주는데 데이터를 캐시에 저장하기 때문에 캐시 무효화 전략이 있어야 하며 가장 최근 데이터만 사용하는지 확인해야 합니다.

ElastiCache 솔루션 아키텍쳐 - User Session Store

  • 사용자 세션을 저장해 애플리케이션을 무상태로 만드는 것입니다.

Redis vs Memcached

  • Redis
    • 자동 장애 조치다중 AZ를 수행하는 기술입니다.
    • 읽기 전용 복제본읽기 스케일링에 사용되며 가용성이 높습니다.
    • 지속성으로 인해 데이터 내구성도 있으며 백업과 기능 복원 기능도 있습니다.
  • Memcached
    • 데이터 분할다중 노드를 사용합니다. == 샤딩
    • 가용성이 높지 않습니다.
    • 복제가 발생하지 않습니다.
    • 지속적인 캐시가 아닙니다.
    • 백업과 복원 기능도 없습니다.
    • 다중 스레드 아키텍처로 몇몇 샤딩과 함께 캐시에서 함께 실행되는 여러 인스턴스가 있습니다.

Redis는 고가용성과 백업 읽기 전용 복제본 등이 있습니다.
Memcached는 데이터를 손실할 수 없는 단순한 분산 캐시입니다.
가용성이 높지 않고 백업과 복원 기능도 없습니다.

Cache Security

  • ElastiCacheRedis에서만 IAM 인증을 지원하며, 나머지 경우에는 사용자 이름과 비밀번호를 사용하면 됩니다.
    • ElastiCache에서 정의할 IAM 정책은 AWS API 수준 보안에만 사용됩니다.
      • 캐시 생성, 캐시 삭제 같은 종류의 작업을 의미합니다.
  • Redis AUTH
    • Redis 클러스터를 생성할 때 비밀번호나 토큰를 설정할 수 있고
      이렇게 하면 캐시에 들어갈 때 비밀번호를 사용할 수 있습니다.
    • 이는 캐시에 사용할 수 있는 보안 그룹에 대한 추가적인 수준의 보안입니다.
  • Memcached
    • SASL 기반 인증을 지원합니다.
      • 고급 인증
  • EC2 인스턴스
    • 자체 보안 그룹도 레디스에 액세스할 수 있는 자체 보안 그룹이 있습니다.
    • 그래서 ElastiCache를 사용하여 보안 그룹 수준의 보안을 수행할 수 있습니다.

ElastiCache에 데이터를 불러오는 패턴

  • Lazy Loading
    • 모든 읽기 데이터가 캐시되고 데이터가 캐시에서 부실해질 수 있습니다.
  • Write Through
    • 데이터를 오래된 데이터가 없는 데이터베이스에 기록될 때마다 캐시에 데이터를 추가하거나 업데이트하는 것입니다.
  • Session Store
    • Time To Live(TTL) 속성으로 세션을 만료시킬 수 있습니다.

Redis 사용 사례

  • 게임 리더보드 생성
    • Redis에는 고유성과 요소 순서를 모두 보장하는 정렬된 집합이라는 기능이 있습니다.
    • 요소가 추가될 때마다 실시간으로 순위가 매겨진 다음 올바른 순서로 추가됩니다.
    • 모든 레디스 캐시는 동일한 리더보드를 사용할 수 있습니다.

레디스로 Amazon ElastiCache와 통신할 때 클라이언트는 이 실시간 리더보드에 액세스할 수 있고 애플리케이션 측에서 이 기능을 프로그래밍할 필요가 없습니다.


From
AWS Certified Solutions Architect Associate 시험합격!

profile
클라우드, 데이터, DevOps 엔지니어 지향 || 글보단 사진 지향

0개의 댓글