트래픽 늘어나면 읽기 복제본(read replica)을 붙인다는 얘기를 많이 보는데, 정확히 언제 어떤 이유로 도입하는 건지 궁금해서 질문드려요. 그냥 원본 DB 하나로 계속 버티면 안 되는 건가요?
제가 이해하기론 쓰기는 마스터(primary)로 보내고 읽기는 복제본(replica) 여러 대로 분산해서 부하를 나눈다는 건데, 그럼 애플리케이션에서 이렇게 나눠서 보내야 하는 건가요?
write => primary DB
read => replica DB
그런데 여기서 제일 걱정되는 게 복제 지연(replication lag)이에요. 방금 글을 썼는데 바로 목록 새로고침하면 복제본에는 아직 반영이 안 돼서 내 글이 안 보이는 상황이 생길 수 있는 거잖아요. 실제로 이런 경우 어떻게 처리하시나요? 방금 쓴 사용자만 마스터에서 읽게 한다든가 하는 방법이 있나요.
읽기가 많은 서비스면 무조건 복제본 붙이는 게 이득인지, 아니면 지연 때문에 오히려 신경 쓸 게 늘어나는 건지 실무 경험 들려주시면 큰 도움 될 것 같습니다.