-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
Description
문제 상황
서비스에 부하테스트를 진행하게 되면 병목 현상이 발생하는 곳은 데이터베이스로부터 발생하게 된다. 이는 데이터베이스(MySQL)이 성능이 낮은 단일 서버로 운영되어 발생하는 문제였다. 이를 해소하기 위해 앞서 Redis를 통한 캐시 서버를 구축하며 모임 조회 요청에 대해서 데이터베이스 요청 수를 줄이는 작업을 진행했다. 하지만 이는 부하를 줄이는 하나의 작업일뿐, Cache Miss가 발생하는 대량의 요청이 발생하면 데이터베이스로부터 다시 병목현상이 발생하여 실패 응답을 반환할 수 있다.
이를 위해 데이터베이스 이중화 작업을 진행하여 조회 요청에 대한 부하를 분산시키고 데이터베이스 레벨에서의 SPOF를 제거하고자 한다.
작업 내용
MySQL서버를 하나의 Master서버와 2개의 Slave서버의 형태로 구축하려 한다.

고려할 내용
- CUD 작업요청이 진행된 후, Master로부터 Slave로 반영되기까지의 데이터 불일치는 어떻게 해야할까?
- 서비스가 사용자에게 변동된 내용을 즉각적으로 보여줘야 하는지? 아니면 최종 일관성만을 보장하면 되는지 고민해봐야 한다.
데이터베이스 이중화에 대해서는 아직 학습한 정보가 없어 많은 학습과 발생할 수 있는 여러 상황을 고려하며 천천히 진행하려 한다