개발/Spring
스프링에서 편리하게 Master / Slave 분기 처리하기
도입 실제 서비스를 운영하다 보면 데이터베이스가 여러 개의 노드로 분산되어 Master / Slave (또는 Multi Master) 구조로 이루어져 있는 경우가 많습니다. 이때 어플리케이션 레벨에서 어떻게 DataSource를 분기처리 할 지 고민이 많았습니다. 이 경우에 크게 두가지 방법으로 나뉘는데요 1. RW / RO 별로 데이터소스를 만들어 개발자가 이를 인지하며 개발을 하거나 2. 단일 데이터 소스에서 트랜잭션의 분기처리를 Lazy 하게 처리하는 방법 으로 두가지가 있습니다. 저는 스프링의 [ AbstractRoutingDataSource ] 를 사용하여 2번 방법으로 진행하였으며, 코드는 [깃허브]에 있습니다. 먼저 결과를 알려드리자면, 2번 방식으로 진행했을 경우 아래와 같이 동작하게됩니다..