AWS 에서 DB 를 사용하고 싶을 때, EC2 에 MySQL 과 같은 서비스를 직접 올릴 수도 있겠지만,
AWS 에서 관리하는 RDS(Relational Database Service) 나 DynamoDB 등을 이용할 수 있다.
그리고 RDS 를 위한 Cache 로 Elesticache 를 사용할 수 있다.
RDS
RDS 는 "managed" service 라서 provisioning, patching, backup 등을 AWS 에서 기본적으로 관리한다.
대신 SSH 연결은 할 수 없다.
PostgreSQL, MySQL, MSSQL, Oracle, Aurora 를 사용할 수 있다.
Storage Auto Scaling
- Maximum Storage Threshold 를 정해두고 자동으로 storage 를 늘리는 기능이다.
- 남은 용량이 10% 이하이고, 5분동안 그 상태가 변하지 않았고, 최근 6시간동안 Scaling 이 발생한 적 없으면 작동한다.
Read Replica
- 최대 5개의 Read Replica (Aurora 제외) 를 만들 수 있다.
- 3가지의 분산 형태가 있다.
- Within AZ
하나의 AZ 에 Replica 를 모아두는 형태이다. - Cross AZ
여러 AZ 에 Replica 를 분산시키는 형태이다.
Managed Service 의 경우 AZ 단위의 통신에 비용이 발생하지 않는다. - Cross Region
여러 Region 에 Replica 를 분산시키는 형태이다.
Replication Fee 가 발생하는 유일한 형태이다.
- Within AZ
Multi AZ
- Replica 를 다른 AZ 에 유지하다가 Failover 를 위해 사용한다.
- Availability 는 좋아지나 Scale 이 되지는 않는다.
- Snapshot 를 뜨고 Sync Replication 으로 데이터를 맞춘다.
- Read Replica 를 Failover 를 위해 사용할 수도 있다.
Aurora
Aurora 는 MySQL, PostgreSQL 과 호환 가능하도록 AWS 가 개발한 DB 이다.
- 10GB 단위로 128TB 까지 Storage 가 자동으로 늘어난다.
- 최대 15개의 Replica 를 만들 수 있다.
- Connection Level 의 LB 가 있다.
- DB 접근에 사용할 수 있는 Writer/Reader Endpoint 가 존재한다.
- 6개의 Copies 를 3 AZ 에 분산하여 HA(High Availability) 를 구성한다.
- Read 에 3 개의 Copies, Write 에 4 개의 Copies 만 있으면 된다.
- Self Healing 기능으로 copy 간 P2P 통신을 사용해 데이터 오염을 없앤다.
Security
- At-rest Encryption + KMS
- 처음 시작할 때 세팅하거나 나중에 Snapshot 으로 재생성해야한다.
- In-flight Encryption
- IAM Authentication
- DB 연결을 IAM Role 로 대체.
- SG 사용
- SSH 사용불가(RDS Custom 은 예외)
- Audit Log (query level) 설정.
- 더 오랜시간 보관하려면 CloudWatch Log 쓰면 된다.
Elasticache
AWS "Managed" Redis, Memcached 이다.
DB Cache 나 Session Store 를 위해 쓰인다.
Redis 와 Memcached 모두 In-memory data store 인데, Redis 는 HA, Backup 등의 기능이 있고 Memcached 는 multi-threaded 를 위한 단순 분산 캐시용이다.
요걸 쓰려면 Application code 를 쫌 많이 바꿔야한다.
응용
- DB Cache
- Session Store
- Application 에서 Session 을 관리하지 않고 Elasticache 에게 Session 을 관리하도록 하는 것.
Strategies
Elasticache 를 잘 쓰기 위한 일반적인 전략이 몇몇 있다.
- Lazy Loading / Cache-Aside / Lazy Population
- 컴퓨터의 메모리처럼 Elasticache 를 먼저 접근하고 Cache Miss 면 DB 에 접근하고 Cache 에 정보를 쓰는 방법이다. - Write Through
- Write 하는 행위를 DB 와 Elasticache 에 다 하는 방법이다. - Cache Eviction and TTL(Time To Live)
- 메모리가 다 차거나 TTL 이 지나면 Cache 의 데이터를 Eviction 한다.
Cluster Mode
- Disabled
- 1 Primary, 5 Read Only Replicas
- One Shard
- Enabled
- Total 500 Nodes
- Multi Shard
- Data Partitioned
'AWS' 카테고리의 다른 글
ELB 와 ASG (작성중) (0) | 2023.01.19 |
---|---|
EBS 와 EFS (0) | 2023.01.14 |
EC2 기초 (0) | 2023.01.12 |
Cloud 기본과 IAM (0) | 2023.01.11 |