UUID의 원리와 생성 방법
이 생성기가 하는 일
UUID(범용 고유 식별자)는 128비트 값으로, 8-4-4-4-12라는 익숙한 형식에 맞춰 32자리 16진수로 표기합니다. 예를 들면 550e8400-e29b-41d4-a716-446655440000 같은 형태입니다. 이 도구는 필요할 때마다 RFC 4122 규격의 식별자를 만들어 주며, 버전 4 또는 버전 1을 골라 한 번에 최대 100개까지 한꺼번에 생성할 수 있습니다.
하이픈을 넣거나 뺄 수 있고 소문자와 대문자 중에서 고를 수 있어서, 결과를 데이터베이스 컬럼이나 API 규격, 기존 코드가 기대하는 형식에 그대로 맞출 수 있습니다.
UUID가 필요한 순간
UUID는 순번을 나눠 주는 중앙 관리자 없이 식별자를 독립적으로 발급해야 할 때 유용합니다. 대표적으로 분산 데이터베이스의 기본 키, 여러 서비스를 거치는 요청을 추적하는 상관 ID, API 호출의 멱등성 키, 절대 겹치면 안 되는 파일 이름, 클라이언트에서 만들어 내는 객체나 세션 참조 등에 쓰입니다.
두 대의 장비가 서로 조율하지 않고도 같은 순간에 식별자를 만들 수 있기 때문에, UUID는 마이크로서비스나 오프라인 우선 앱, 이벤트 파이프라인에 특히 잘 어울립니다. 로그 한 줄에서는 상관 ID 옆에 Unix 타임스탬프가 함께 찍히는 경우가 많은데, 그 숫자는 타임스탬프 변환기로 읽을 수 있는 날짜로 되돌릴 수 있습니다. 같은 참조가 액세스 토큰 안에 실려 있다면 JWT 디코더로 어느 클레임이 담고 있는지 확인하면 됩니다.
버전 4와 버전 1의 차이
버전 4는 브라우저의 crypto.randomUUID와 Web Crypto API에서 얻은 암호학적으로 강한 난수로 거의 모든 비트를 채웁니다. 그래서 식별자를 예측할 수 없고, 언제 어디서 만들어졌는지도 전혀 드러나지 않습니다. 대부분의 작업에서 권장하는 기본값입니다.
반면 버전 1은 현재 타임스탬프에 노드 식별자와 클록 시퀀스를 조합해 값을 만듭니다. 생성 순서대로 대략 정렬할 수 있는 대신 그 시각이 노출됩니다. 예측 불가능성이 중요하면 v4를, 대략적인 시간 순서가 더 쓸모 있다면 v1을 고르세요.
형식과 충돌 확률
두 버전 모두 표준 8-4-4-4-12 배열을 유지하며, 버전을 나타내는 숫자는 세 번째 그룹의 맨 앞에 놓입니다(4 또는 1). v4의 강점은 122비트의 난수에서 나옵니다. 가능한 값이 5×10^36가지가 넘기 때문에, 수십억 개의 식별자를 만들어도 그중 둘이 일치할 확률은 사실상 무시할 수 있을 만큼 작게 유지됩니다.
하이픈을 빼면 32자짜리 간결한 문자열이 되어 URL이나 키에 쓰기 좋고, 대문자 출력은 식별자를 그렇게 저장하는 시스템과 잘 맞습니다.