정리하자면, 다음과 같습니다.
• 각 서버 프로세스는 데이터 원본이나 사본을 가집니다.
• 이 전제하에 어떤 연산을 할 때는 서버 프로세스 안의 원본(자기 서버에서 연산되는 데이터)과 사본(다른 서버에서 받은 데이터)을 가지고 연산을 수행합니다.
이렇게 분산 처리를 하면, 분산 처리에서 발생하는 병목 현상이 없을 뿐만 아니라 여러 머신에 걸쳐 연산하지도 않으므로 응답 속도도 분산하기 전과 같이 빠릅니다.
하지만 이 방식은 다른 문제가 있습니다. 사본 데이터는 원본 데이터와 간발(밀리초나 마이크로초)의 차이로 생기는 스테일 데이터 문제(stale data problem)가 있을 수 있습니다. 이때 서버가 가진 데이터를 모두 신뢰할 경우 데이터 불일치로 잘못된 연산이 발생할 수 있는데, 이를 하이젠버그(Heisenbug)3라고 합니다.
3 ‘찾아보려고 하면 바로 사라지는 버그’를 재치 있게 표현한 단어입니다.