분산 시스템을 위한 유일 ID 생성기 설계 (가상 면접 사례로 배우는 대규모 시스템 설계 기초 6편)
·
시스템 설계/가상면접 사례로 배우는 대규모 시스템 설계
유일한 ID를 만드는 일은 쉬워 보입니다. 데이터베이스에 auto_increment를 걸면 끝나는 문제 아닌가요? 서버가 한 대라면 맞습니다. 7장은 서버가 여러 대일 때를 다룹니다. 네 가지 접근을 비교하고 마지막 것을 고르는 구성인데요, 그 마지막 접근을 두고 재 본 것이 하나 있습니다. 생성기를 만들어 1초 동안 ID를 발급한 다음, 시계를 0.5초 뒤로 돌리고 다시 발급해 봤죠. 되돌아간 구간에서 발급한 15,000개가 한 개도 빠짐없이 전부 이전 ID와 중복이었습니다. 확률 문제가 아닙니다. 구조적으로 그렇게 됩니다. 그리고 가상의 상황도 아니죠. 시계를 맞추는 NTP 구현은 오차가 크면 시계를 점프시키는데, 그 점프가 뒤로도 갑니다. 이 글은 네 접근을 따라가면서 각각이 무엇을 내주고 무엇을 ..