RDS & ElastiCache
AWS RDS
AWS Relational Database Service (관계형 데이터베이스 서비스) 를 의미한다.
SQL을 쿼리 언어로 사용하는 데이터베이스를 위한 관리형 서비스이다.
- Postgres
- MySQL
- MariaDB
- Oracle
- Microsoft SQL Server
- Aurora
EC2 DB에 대비한 장점
RDS는 관리형 서비스이므로, 여러 관리형 특징을 가진다.
- 데이터베이스 프로비저닝이 자동화되어있다.
- 최신 버전으로 패치가 관리된다.
- 지속적인 백업이 실행되며, 특정 타입스탬프로 복구할 수 있다.
- 모니터링 대시보드로 시각화가 가능하다.
- 읽기 성능 향상을 목적으로 하는 Read replica를 사용할 수 있다.
- 장애 대응을 위해 다중 AZ설정이 가능하다.
- 수직 및 수평 확장성을 증가시킬 수 있다.
RDS 백업
RDS에서 자동으로 관리되며 생성된다.
- 매일 데이터베이스 전체에 대한 백업이 수행된다.
- 일일 트랜잭션 로그가 5분마다 RDS에 백업된다.
이 두 가지를 사용하면 그 어떤 지정 시점으로든 복원이 가능해진다.
자동 백업은 기본적으로 7일간, 최대 35일간 저장된다.
DB Snapshot
사용자가 수동으로 발동시키는 백업으로서 백업 보관 기간을 사용자가 원하는 대로 정의할 수 있다.
RDS Storage Auto Scailing
RDS 데이터베이스를 생성할 때는 스토리지 용량을 지정해야 한다.
만약 저장공간이 거의 차 간다면, RDS가 자동으로 용량을 스케일링 할 수 있다.
데이터베이스 스토리지를 수동으로 조절하는것을 피하는 것이다.
Maximum Storage Threshold : 최대 스토리지 임계값 을 설정해야 한다.
- 남은 저장 공간이 10% 미만으로 떨어지거나
- 이러한 낮은 스토리지 상태가 5분 이상 지속되고,
- 6시간의 쿨다운 기간이 지난 후라면
자동으로 스케일링을 수행한다.
RDS 읽기 전용 복제본
읽기 전용 복제본은 최대 다섯 개 까지 생성할 수 있다.
동일-AZ, 크로스-AZ, 크로스-리전으로 분류될 수 있다.
읽기 전용 복제본은 주 RDS 데이터베이스 인스턴스와 비동기적 복제로 갱신된다.
읽기 전용 복제본은 주 데이터베이스로 승격시킬 수 있다.
읽기 전용 복제본에는 SELECT 명령문만 사용해야 한다.
Use-Case
평균적인 로드를 감당하고 있는 프로덕션 DB에서, DB 를 분석하는 어플리케이션에 읽기 전용 복제본을 생성하여 연결시킬 수 있을 것이다.
Network Cost
읽기 전용 복제본에 의해 하나의 AZ에서 다른 AZ로 DB 데이터를 전송할 때 관리형 서비스이므로 비용이 들지 않는다.
단, 하나의 리전에서 다른 리전으로 읽기 전용 복제본의 DB 데이터가 전송되는 경우 이는 비용이 청구된다.
RDS Multi-AZ
다중 AZ는 재해 복구에 사용된다.
동기적으로 복제된 스탠바이 인스턴스를 다른 가용 영역에 둘 수 있다.
RDS로의 연결은 하나의 DNS 이름을 사용하기에, 이는 만일 문제가 생겼을 경우 (failover) 스탠바이 인스턴스로 로드를 연결한다.
재해가 발생했을 때 승격과 연결 등 모든 작업은 자동으로 진행된다.
스케일링과는 전혀 관련 없으며, 마스터 DB에 문제가 발생했을 경우에만 대비하는 동기적 스탠바이 데이터베이스이다.
기존 RDS를 단일 AZ에서 멀티 AZ로 수정함에 있어서, 다운타임이 전혀 없다.
이는 DB snapshot을 이용하여 내부적으로 구현된다.
읽기 전용 복제본 또한 다중 AZ에 위치시킬 수 있지만, 스탠바이 인스턴스와는 다른 개념인 것을 주의.
RDS 보안
RDS 암호화
At rest encryption
마스터와 읽기 전용 복제본의 저장 중인 이동하지 않는 데이터는 AWS KMS 를 이용하여 AES-256 으로 암호화될 수 있다.
암호화는 RDS 생성 시에 정의되어야 하며, 마스터가 암호화되어있지 않으면 복제본도 암호화할 수 없다.
Transparent Data Encryption (TDE) 가 Oracle 과 Microsoft SQL Server 에 대해 가능하다.
In-flight encryption
전송 중인 데이터를 암호화하기 위해 SSL 인증서가 필요하다.
클라이언트에게 SSL 사용을 강제할 수 있다.
RDS 스냅샷 암호화
암호화되지 않은 RDS 데이터베이스에서 스냅샷을 생성하면 스냅샷 또한 암호화되지 않는다.
암호화되지 않은 스냅샷을 복제하면서, 암호화를 진행할 수 있다.
이렇게 암호화된 스냅샷을 이용하여 암호화되지 않은 RDS DB를 암호화된 RDS DB로 복원시킬 수 있다.
이 경우 기존 어플리케이션의 DB 주소를 변경하고, 기존 암호화되지 않은 RDS는 삭제한다.
Network
RDS 데이터베이스는 대개 퍼블릭 서브넷이 아닌 프라이빗 서브넷에서 배포된다.
RDS보안은 RDS 인스턴스에 연결되어 있는 보안 그룹에 의해 달성될 수 있다.
IAM
AWS RDS 를 관리할 수 있는 권한을 정의하는 정책 문서가 있다.
기존의 전통적인 DB 연결을 사용하려면 username 과 password 를 이용하면 된다.
IAM 기반의 인증 또한 특정 종류의 RDS 로그인에 사용될 수 있다.
IAM Authentication
MySQL 과 PostgreSQL 에서만 실행될 수 있다.
비밀번호 대신, authentication token 이 필요한데, 이는 RDS API 호출을 통해서 IAM으로 직접 얻을 수 있다.
인증 토큰은 15분의 수명을 가지고 있다.
적절한 IAM Role을 가진 EC2 인스턴스가 RDS Service API Call을 통해 Auth Token을 발급받는다.
이 토큰을 사용하면 RDS DB에 안전하게 연결될 수 있다.
Amazon Aurora
AWS의 독점 기술로서, MySQL 및 Postgres와 호환된다.
클라우드에 최적화되어있기에 다른 엔진보다 성능이 배로 뛰어나다.
Aurora의 저장공간은 10GB단위로, 128TB까지 자동으로 확장된다.
또한 15개의 읽기 전용 복제본을 가진다.
Aurora에서의 장애 조치는 즉각적으로 이루어진다.
고가용성 및 읽기 스케일링
- Aurora는 쓰기 요청을 할 때마다 6개의 데이터 복제본을 3개의 AZ에 걸쳐 저장한다.
- 쓰기에는 6개 중 4개의 복제본만 있으면 된다.
- 읽기에는 6개 중 3개의 복제본만 있으면 된다.
- 자가 복구 과정이 있기에 데이터가 손상되었을 경우에 자동으로 복구된다.
- 하나의 인스턴스만 (마스터에) 쓰기를 할 수 있다.
- 마스터에 장애 발생 시 평균적으로 30초 이내에 장애 조치가 이루어진다.
- 마스터를 제외하고 읽기를 할 수 있는 15개의 읽기 전용 복제본을 가질 수 있다.
- 크로스 리전 복제를 지원한다.
Aurora DB Cluster
Aurora에서는 하나의 인스턴스만 쓰기가 가능하고, 이에 따라 마스터 DB를 가리키는 Writer Endpoint 를 제공한다.
읽기 전용 복제본은 1개부터 15개까지 Auto Scaling을 적용할 수 있다.
이에 따라, 어플리케이션이 복제본의 위치와 URL을 추적 및 연결하기는 어렵다.
따라서 리더 엔드포인트 (Reader Endpoint) 라는 것이 제공되는데,
Writer Endpoint와 동일하게, 로드 밸런싱 연결을 도와주고 모든 읽기 전용 복제본에 자동으로 연결한다.
Features of Aurora
- 자동 장애조치
- 백업 및 복구
- 격리와 보안
- 산업 규정 준수
- 푸시 버튼 스케일링
- 다운타임 없는 자동 패치
- 확장 모니터링
- 정기 유지 보수
- 백트랙 : 어느 시기의 데이터로든 백업 없이 복구할 수 있다.
Aurora Security
Postgres 나 MySQL과 동일하게, KMS를 사용해 암호화한다.
SSL이나 IAM token 등, Aurora 보안은 RDS 보안과 동일하다.
Advanced Concepts
Custom Endpoints
오로라 인스턴스의 일부 그룹을 커스텀 엔드포인트로 정의할 수 있다.
이렇게 커스텀 엔드포인트가 생성되면 기존 리더 엔드포인트는 사용되지 않는다.
Serverless
자동화된 데이터베이스 인스턴스화와 실제 사용을 기반으로 한 오토 스케일링을 제공한다.
드물거나 간헐적이거나 예측할 수 없는 워크로드가 있을 때 유용하다.
Multi-Master
라이터 노드에 대한 즉각적인 장애 조치를 원하는 경우 (더 높은 쓰기 가용성) 사용한다.
이 경우 모든 Aurora 노드가 읽기와 쓰기 작업을 한다.
Global Aurora
Aurora가 리전 간 읽기 전용 복제본이 있다면,
- 재해 복구에 용이하다.
- 간단히 구현이 가능하다.
하지만 오늘날 권장되는 Aurora Global Database 를 사용할 수 있다.
- 1 primary region (read/write)
- up to 5 secondary (read only) regions
- up to 16 read replicas per secondary region
- 전 세계의 읽기 전용 복제본에 대한 지연 시간을 줄인다.
Aurora Machine Learning
SQL 인터페이스를 통해 어플리케이션에 ML 기반 예측을 추가할 수 있는 기능이다.
Aurora와 다양한 AWS ML 서비스 간의 간단하고 최적화된 안전한 통합이다.
ElastiCache
RDS와 동일한 방식으로 관계형 데이터베이스를 관리할 수 있다.
Redis 나 Memcached 와 같은 캐시 기술을 관리할 수 있게 한다.
읽기 집약적인 워크로드의 부하를 줄이는 데 도움이 된다.
어플리케이션의 사용자 정보를 캐시에 저장하여 어플리케이션을 stateless 로 만들 수 있게 한다.
쿼리가 이미 생성되어있는지 확인 (cache hit) 한다.
만일 cache-miss인 경우 RDS로부터 데이터를 쿼리하여 읽어오고, ElastiCache에 저장한다.
Redis
자동 장애 조치를 위해 다중 AZ를 수행한다.
읽기 전용 복제본을 읽기 스케일링에 사용하여 가용성이 높다.
AOF persistence 로 인해 데이터 내구성이 있다.
백업과 복원 기능 또한 존재한다.
- 게임 리더보드 생성 등에도 사용된다.
- 고유성과 요소 순서를 모두 보장하는 Redis Sorted set 을 제공하기 때문.
Memcached
데이터 분할에 다중 노드를 사용한다 (샤딩).
복제가 없으므로 가용성이 높지 않다.
persistent (지속적) 캐시가 아니다.
백업과 복원 기능이 없다.
멀티 스레드 아키텍쳐로서 몇몇 샤딩과 함께 캐시에서 함께 실행되는 여러 인스턴스가 있다.
Cache Security
- 모든 캐시는 IAM 인증을 지원하지 않는다.
- Redis AUTH
- 레디스 클러스터를 생성할 때 비밀번호나 토큰을 설정할 수 있다.
- SSL을 이용해 전송 중 암호화를 달성할 수 있다.
- Memcached
- SASL 기반 인증을 지원한다.
Pattern
- Lazy Loading : 모든 읽기 데이터가 캐시되고, 데이터가 캐시에서 부실해질 수 있다.
- Write Through : 데이터베이스에 기록될 때마다 캐시에 데이터를 추가하거나 업데이트한다.
- Session Store : 세션 저장소로 캐시를 사용한다.
'공부한 이야기 > 클라우드' 카테고리의 다른 글
AWS SAA - CloudFront & Global Accelerator (0) | 2022.08.02 |
---|---|
AWS SAA - Access (0) | 2022.08.02 |
AWS SAA - Scalability & Availability (0) | 2022.08.02 |
AWS SAA - EC2 Storages (0) | 2022.08.02 |
AWS SAA - EC2 (0) | 2022.08.02 |