7. 읽기 복제(replication), 복제 지연, 리더 선출, 읽기/쓰기 분리

난이도 상 해설 보기 →
문제

문제 7 — 읽기 복제(replication), 복제 지연, 리더 선출, 읽기/쓰기 분리

면접 질문

  1. DB 복제(replication)에서 단일 리더(single-leader, primary-replica) 구조가 무엇이고, "읽기/쓰기 분리(read-write splitting)"가 어떻게 읽기 부하를 분산하는지 설명해보세요. 동기 복제(synchronous)와 비동기 복제(asynchronous)의 차이와 트레이드오프도 말해보세요.

  2. "복제 지연(replication lag)"이 무엇이며, 이로 인해 발생하는 대표적 이상현상(자신의 쓰기를 자신이 못 읽음 = read-your-writes 위반, 시간 역행 등)을 설명해보세요. 이를 완화하는 방법(읽기 일관성 보장 기법)을 제시해보세요.

  3. 리더 장애 시 "리더 선출(leader election)/페일오버(failover)"가 어떻게 일어나는지 설명하고, 이때 발생할 수 있는 위험(split-brain, 미복제 쓰기 손실)과 합의(consensus) 알고리즘(Raft 등)이 푸는 문제를 설명해보세요.

응용 시나리오

서비스가 커지면서 단일 DB의 읽기 부하가 한계에 다다랐습니다. 그래서 primary 1대 + read replica 3대를 두고, 쓰기는 primary로, 조회는 replica로 보내기로 했습니다.

  • 플레이어가 상점에서 아이템을 구매하면(쓰기 = primary) 곧바로 인벤토리 화면(조회 = replica)으로 이동한다.
  • 비동기 복제라 replica는 보통 수십~수백 ms, 부하 시 수 초까지 primary보다 뒤처질 수 있다.

(a) 구매 직후 인벤토리 화면에서 "방금 산 아이템이 안 보이는" 현상이 왜 생기는지 복제 지연으로 설명하고, 이 플레이어 경험 문제를 막기 위한 방법을 한 가지 이상 설계해보세요.

(b) 어떤 조회는 replica로 보내도 되고, 어떤 조회는 반드시 primary로 보내야 하는지 기준을 세워보세요(예: 재화 잔액 확인, 결제 검증 vs 랭킹 조회).

(c) primary가 갑자기 죽었습니다. 자동 페일오버로 replica 하나를 새 primary로 승격할 때, "아직 복제되지 않은 마지막 쓰기"는 어떻게 되는지, 그리고 split-brain(두 노드가 동시에 primary라고 믿음)을 막기 위해 무엇이 필요한지 설명해보세요.

답안 작성
내 답안 · 자동 저장

직접 답을 작성한 뒤, 위 해설 보기에서 모범답안과 대조하세요.