Skip to content

MySQL Architecture

Hwangwonuk edited this page Dec 14, 2021 · 15 revisions

💾 MySQL Architecture

  1. 원인 : cucumber-market의 Service Layer에 속해있는 거의 모든 메소드가 데이터베이스에 쿼리 요청을 보냅니다.

  2. 문제 : 많은 사람들이 서비스를 사용하고 있다면 현재 사용하고 있는 MySQL 서버가 Scale UP되어 있더라도
    서버 한대가 모든 트래픽을 견디기에는 한계가 있습니다.

  3. 결과 : 그로 인해 데이터베이스에 장애가 발생한다면 운영 중인 서비스가 바로 타격 을 입게됩니다.

  • 따라서, Replication을 사용 하여 MySQL의 Master - Slave 환경을 구축 했습니다.

🎮 How to Manage

  • 서비스용으로 가장 자주 사용되는 Replication 형태 인 1:M 복제는
    하나의 Master MySQL 서버에 2개 이상의 Slave MySQL 서버를 연결시키는 형태입니다.

  • cucumber-market에서는 1:M 복제를 사용하지만 좀 더 간소화한 형태인 1:1로 적용 되어 있습니다.

  • Master 서버 는 INSERT , UPDATE의 쓰기, 변경등의 Create 작업을
    Slave 서버 는 SELECT 의 Read 작업을 담당합니다.

🎥 Result

Transactional 애노테이션에서 readOnly가 적용된 메서드를 호출한 경우

  • 🙉 MySQL slave key에 맞는 DataSource를 찾는 Routing클래스

👍 slave에 대한 Connection 객체를 얻어옴

👍 Create 작업인 카테고리 등록 작업을 실행한 경우

  • Master - create 새대분류
  • Slave - replication 새대분류

📓 관련글