Meet-Coder-Study/book-system-design-interview

[01주차]_1장_사용자 수에 따른 규모 확장성_김광훈

Wave1994-Hoon opened this issue · 1 comments

질문

(1) 데이터베이스 다중화

  • Master / Slave 로 다중 데이터소스를 사용하셨을 때, 트랜잭션 관리는 어떤식으로 하나요??

(2)수평적 확장

  • 현업에서 데이터베이스를 샤딩하여 운영을 하는지 ??, 만약 한다면 운영을 어떻게 하는지 궁금합니다.
  • (샤딩 기준, 데이터 조회 및 업데이트 등)

(1) 데이터베이스 다중화

  • 한 로직에서 Write / Read 섞어서 사용하는 것 보다는 명령을 분리하여 사용하는 것이 좋음 --> 나중에 CQRS 를 도입할 때 도움이 될 수 있음
  • 만약에 로직을 섞어 사용하더라도 트랜잭션 전파 레벨(Ex. requires_new) 을 변경 하지 않는 것이 추후 트러블 슈팅할 때 좋다.

(2) 수평적 확장

  • 샤딩 기준: 데이터 수에 대한 정확한 기준이 있지는 않지만 운영 중에 DB 성능에 이슈가 있다면 샤딩을 고려해볼만함
  • 데이터 조회: 일반적으로 어플리케이션에서 모듈러 연산을 사용하여 조회를 할 수 있다.