woowacourse-teams / 2022-f12

개발자의 모든 도구, F12 💻
https://f12.app
81 stars 6 forks source link

[Feature/BE] replica db 서버를 1대 추가한다 #884

Closed yh20studio closed 1 year ago

yh20studio commented 1 year ago

issue: #882

작업 내용

기존에 1대였던 replica를 1대 추가하여 2대로 구성한다. 사용한 쿼리는 제품을 키워드를 포함하여 페이지네이션으로 조회하는 요청이다.

개선 전(Replica 1대)

스크린샷 2022-11-22 오후 5 11 50 스크린샷 2022-11-22 오후 5 12 54

개선 후(Replica 2대)

스크린샷 2022-11-22 오후 4 57 22 스크린샷 2022-11-22 오후 4 58 34

Pinpoint 그래프 비교(y축은 응답 속도, x축은 시간)

스크린샷 2022-11-23 오후 4 29 03

결론

DB Replication의 replica 개수를 1대에서 2대로 scale out으로 성능이 좋아짐

주의사항

일반적으로 Connetor/J 를 사용해서 로드밸런싱을 구현할 수 있었지만, 기존에 있는 spirng boot 코드와 AtomicInteger를 사용해서 구현했다. 이유는 Connetor/J 의 장점이라고 할 수 있었던 failover에 대한 것이 실제로 상황을 구현했을 때 제대로 작동하지 않았다. (MariaDB Connector/J 를 활용해야만 가능하다고 하는 글이 있다. 그리고 mysql을 사용한다면, AWS aurora를 사용해야하는 것 같다.) 또한 Connector/J에서도 replicationProxy를 사용해서 로드밸런싱을 사용하는 것을 확인할 수 있었으나, 실제 내부적인 구현에 대한 파악이 어려웠으므로 직접 구현하는 방식을 선택했습니다. 직접 구현했을 때 단점은, 헬스 체크를 통한 failover 기능을 구현하기 어렵다는 것입니다.