RDS는 Relational Database Service의 줄임말이고, SQL을 query language로 이용하는 DB를 위한 managed DB service이다.
전체 DB에 대해 매일 백업이 진행되고, default는 7일간 유지한다(35일까지 증가가능)
Transaction log들은 매 5분마다 RDS에 의해 백업된다.
DB Snapshot은 유저에 의해 만들어지거나 백업으로 만들어진다.
RDS는 자동으로 Scale을 조정해준다. 이때, Maximum Storage Threshold는 반드시 설정해줘야 한다. 예측되지 않는 workload를 가진 application에 유용하다.
최대 5개까지 읽기 전용 복제본을 만들 수 있고, 총 3가지 옵션이 있다.
Replication은 ASYNC하여 결국 읽기는 일관성 있다. Replica는 본인만의 DB로 변경도 가능하다. Replica를 이용하면 application이 이를 이용하도록 설정해줘야 한다.
Read replica는 SELECT(=read)만 가능하고 INSERT, UPDATE, DELETE 등의 구문은 사용할 수 없다.
기본적으로 AWS에서 AZ간 네트워크 통신 비용이 든다. 하지만 RDS Resplica는 같은 Region의 AZ 사이에서는 네트워크 비용이 없다.
standby database는 평소에는 read/write가 하나도 일어나지 않고 failover만을 위해 존재한다. 평상시에 다른 AZ에서 master DB를 SYNC replicate한다.
Read Replica도 Disaster Recovery(DR)을 위해 Multi AZ로 설정가능하다.
Multi-AZ는 same connection string을 유지한다.
sigle AZ에서 Multi AZ로 변경하면 snaphot을 통해 다른 AZ에 standby DB를 만들고 main DB로부터의 SYNC Replication을 설정한다.
At rest encryption(움직이지 않는 데이터에 대한 encryption)은 launch time에 설정되어야 하고, master가 encrypted가 아니면 read replica는 encrypted일 수 없다.
In-flight encryption은 SSL에 의해 암호화된다. SSL을 강요하기 위한 설정들이 있다.
un-encrypted RDS를 encrypted로 만드려면 snaphost을 만들고 snapshot을 encrypt한 후 이 snapshot을 통해 복원하는 것이다.
IAM-based authentication은 RDS MySQL과 RDS PostgreSQL에서 가능하다.
aurora는 AWS에서 나온 독점 기술이다.(open source 아님) 일반 RDS보다 20%정도 비싸다.
read replica는 15개까지 가능하다.
Reader Endpoint 하나에 연결하면 알아서 여러 Read replicas에 로드밸런싱한다.
Custom Endpoint를 설정할 수도 있다. 워크로드에 따라 분배하기 위해.
Aurora를 Serverless로 설정할 수도 있고, write node에 대해 빠른 failover를 원하면 Multi-Master로도 운영가능하다.
SQL에 ML-based prediction을 추가할 수도 있다.
Aurora Global Databases는 여러 region에 replica를 가질 수 있게 한다.
ElastiCache는 managed Redis, Memcached 서비스다.
캐싱 흐름은 다음과 같다.
session data를 ElastiCache에 기록하여 다른 application들도 이용할 수 있게 할 수 있다.
Redis AUTH를 통해 password 설정이 가능하다.