UUID란 무엇인가? 버전 4를 쉽게 설명합니다
325Tools 팀 · 업데이트 2026-06-17
f47ac10b-58cc-4372-a567-0e02b2c3d479 같은 ID를 본 적 있으신가요? 그것이 바로 UUID — Universally Unique Identifier(범용 고유 식별자)입니다. 32자리 16진수를 하이픈으로 다섯 묶음으로 나눠 표기한 128비트 값으로, 표준 형태는 36자 문자열입니다. UUID의 존재 이유는 오직 하나, 여러 시스템이 서로 조율하지 않고도 각자 독립적으로 ID를 만들면서도 충돌하지 않게 하는 것입니다.
버전 4는 어떻게 작동하나
UUID에는 여러 버전이 있는데, 가장 흔히 마주치는 것은 버전 4입니다. v4 UUID는 본질적으로 무작위입니다: 128비트 중 122비트가 무작위이고, 나머지 비트는 "버전 4, 변형 1"을 표시하도록 고정되어 있습니다. UUID 생성기로 몇 개 만들어 보면 버전 숫자는 항상 4(13번째 16진수 문자)이고, 변형 숫자는 항상 8, 9, a, b 중 하나임을 볼 수 있습니다.
충돌이 사실상 일어나지 않는 이유
122비트의 무작위는 천문학적으로 거대한 공간입니다 — 대략 5.3 × 10^36개의 가능한 값입니다. 단 한 번의 충돌이 발생할 확률을 50%까지 끌어올리려면, 초당 약 10억 개의 UUID를 약 85년 동안 생성해야 합니다. 실제로 이는 독립적으로 생성된 두 v4 UUID가 결코 부딪히지 않는다는 뜻이며, 그렇기에 서비스는 오프라인에서, 병렬로, 수천 대의 기기에서 ID를 만든 뒤 나중에 안전하게 병합할 수 있습니다.
UUID vs 자동 증가 ID
전통적인 데이터베이스 자동 증가 ID(1, 2, 3…)는 간결하고 정렬이 쉽지만, 데이터베이스가 다음 번호를 발급해야 하고 정보를 노출합니다 — 누구나 "사용자 5001"을 보고 당신의 성장세를 추측할 수 있습니다. UUID는 중앙 카운터가 필요 없고, 개수나 순서를 드러내지 않으며, 행이 데이터베이스에 닿기도 전에 클라이언트에서 생성할 수 있습니다. 그 독립성이 UUID의 핵심 강점입니다.
UUID를 쓰지 말아야 할 때
- 큰 테이블의 클러스터형 기본 키로. 무작위 v4 UUID는 특정 순서 없이 도착하므로, 삽입 시 인덱스 전반에 쓰기가 흩어지고 페이지 단편화를 일으켜 삽입 성능을 떨어뜨리고 큰 테이블의 저장 공간을 부풀립니다. MySQL(InnoDB) 같은 데이터베이스가 특히 여기에 민감합니다. 데이터베이스 키가 필요하다면 순차/정렬형 ID나 시간순 UUID 변형을 고려하세요.
- 사람이 읽거나 입력해야 할 때. 36자는 전화로 불러 주기에 오류가 나기 쉽습니다. 짧고 사람 친화적인 코드가 필요하다면, 제한된 문자 집합을 쓰는 랜덤 문자열 생성기가 더 편합니다.
- 추측·위조가 불가능해야 하는 보안 토큰으로. v4 UUID는 무작위이긴 하지만 비밀 원시값(primitive)은 아닙니다; 서명이나 무결성이 필요하다면 해시 생성기로 제대로 된 hash를 쓰세요.
하지만 분산 환경에서 조율 없이 쓰는 식별자라면, UUID 생성기가 바로 딱 맞는 도구입니다.