ㅁ 풀어야 할 문제
데이터베이스의 액세스 빈도가 높아 DB 서버의 자원이 줄어들 때 서버의 사양을 높이는(즉, 스케일 업) 경우가 많다. 스케일 업이 힘들 때는 DB 서버를 수평 분산하는 스케일 아웃이 이루어지나, 일반적으로 어려워한다.
일반적으로 데이터베이스의 쓰기보다 읽기가 비교적 많기 때문에 읽기 처리를 분산하여 시스템 전체의 성능을 높이는 것이 요구된다.
ㅁ 해결/패턴
읽기 성능을 높이기 위해서는 몇 가지 처리 방법이 있다. 이 패턴에서는 읽기를 여러 대의 Read Replica(읽기전용 레플리카)에 분산하는 것으로 전체 성능을 높인다.
읽기 전용 레플리카는 마스터에 대해 쓰기에 따라 자기 자신의 데이터에 반영한다. 읽기는 주로 읽기 전용 레플리카를 이용하는 것으로 마스터의 부하를 줄일 수 있다.
AWS의 RDBMS 서비스인 RDS에는 Read Replica라는 읽기 전용 데이터베이스를 쉽게 만들 수 있는 기능이 있다.
또 EC2를 이용해 읽기 전용 데이터베이스를 만들 수 있다.
- 마스터 DB의 읽기전용 레플리카를 만든다. RDS가 대응하고 있는 데이터베이스의 경우는 Read Replica 기능으로 만든다.
- 애플리케이션에서 데이터를 읽는 경우는 읽기전용 레플리카를 액세스 위치로 설정한다.
- 복수의 읽기전용 레플리카를 이용할 수 있지만, 애플리케이션 쪽에서 배분할 필요가 있다. 그 때 HAProxy나 MySQL Proxy 등의 미들웨어를 이용해도 된다.
- 데이터베이스에서의 읽기 부하가 높은 경우 부하 분산이 가능
- 데이터 분석 용도 등으로 마스터에 부하는 주지 않고 처리를 해야할 경우 유용하다.
- 읽기 전용 레플리카는 이중화가 목적이 아니기 때문에 데이터베이스의 안전성을 높이기 위해서는 읽기전용 리플리카가 아닌 DB 레플리케이션 그 자체를 생각한다. 물론, 읽기 전용 레플리카와 DB레플리케이션을 같이 사용할 수 있다.
- 일반적으로 읽기전용 레플리카는 비동기 레플리케이션이기 때문에 마스터와 읽기전용 레플리카 사이에 약간의 지연이 있음에 주의한다.
'AWS Design Pattern > 관계 데이터베이스 패턴' 카테고리의 다른 글
Sharding Write - 쓰기 효율화 (0) | 2021.02.05 |
---|---|
Inmemory DB Cache - 자주 사용되는 데이터 캐시화 (0) | 2021.02.05 |
DB Replication - 온라인 DB 복제 (0) | 2021.02.05 |