-
DB Replication이란? 사용 이유Spring Boot/DB 2024. 3. 19. 19:44
1. 배경
- 사내 프로젝트는 단일 RDS를 Database로 사용중
- RDS 장애 발생시 모든 서비스가 멈춘다. (가용성이 낮다)
- 부하, 트래픽 증가로 DB의 자원이 부족할때 확장이 어렵다.
- 단일 RDS 사용시 수직확장
- 수직 확장은 가격 대비 성능 비율이 선형적이지 못하다.
- 수직 확장이나, DB 업데이트를 위해서는 서비스를 중단해야한다.
- DB의 쓰기와 읽기 요청은 비대칭 적이다. 대부분 읽기가 더 많다.
2. Replication 도입
- Replication이란? DB 백업이나, 성능 향상을 위해 DB를 여러대의 서버로 복제하는 행위
- Replication을 도입하면 확장하기 쉽고 고가용성의 DB 구조를 구성할 수 있다.
- 데이터 저장소의 읽기와 쓰기로 분리
- 부하 분산 → DB 성능 향상
- 쓰기 속도 향상, 읽기 속도 향상
- 확장 가능성 → 읽기 저장소 N로 수평적 확장
- 분석성 향상 → 읽기 전용 데이터베이스 분석
- 장애 회복성
- 여분의 DB가 있어서 장애가 나더라도 서비스 운영 유지가능
- 여분의 DB가 있기 때문에 DB 업데이트, 확장을 무중단으로 진행할 수 있다.
(서비스 진행중에 Replication 진행하면 데이터베이스 유실이나, 멈춤 있을 수 있음)
- 실무에서 단일/단독 데이터 베이스 금지
- 초기 부터 Replication 필수
3. 기대 효과
- 성능 향상
- 고가용성
- 확장성
- 웹서버 단에 CQRS 도입
참고
https://vladmihalcea.com/single-primary-database-replication/
https://vladmihalcea.com/read-write-read-only-transaction-routing-spring/
https://jsonobject.tistory.com/633
https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ReadRepl.html
반응형'Spring Boot > DB' 카테고리의 다른 글
MySQL - 외래키(Foreign Key)를 써야할까? (1) 2024.08.14 Kafka 기본개념 정리 (0) 2024.04.16 [DB] UUID를 고유 값이나 Key로 사용하면 안되는 이유 (0) 2023.06.30 [DB] ACID란? Transaction이란? (0) 2023.06.28 [M1 Mac] Mysql 명령어 정리 (+ docker로 설치) (0) 2023.06.27