IDUUID 생성기
랜덤 UUID v4 문자열 생성
1.835282ff-c816-46f7-843f-ce6f53f77c8a
UUID 완벽 가이드
UUID(Universally Unique Identifier)는 RFC 4122로 표준화된 128비트 고유 식별자 형식입니다. 550e8400-e29b-41d4-a716-446655440000 형태의 32자리 16진수 + 하이픈 구조로, 중앙 서버 없이 전 세계적으로 고유한 ID를 생성할 수 있어 분산 시스템, 마이크로서비스, 데이터베이스 기본키에 광범위하게 활용됩니다.
UUID 버전별 차이 (v1 / v4 / v7)
- UUID v1: MAC 주소 + 타임스탬프 기반. 시간 순 정렬 가능하지만 MAC 주소 노출로 프라이버시 문제가 있습니다.
- UUID v4: 완전 랜덤. 가장 널리 쓰이는 버전으로
crypto.randomUUID()가 표준입니다. 충돌 확률은 천문학적으로 낮습니다. - UUID v7 (2024 RFC 9562): 밀리초 타임스탬프 접두사 포함. 시간 순 정렬이 가능해 데이터베이스 B-Tree 인덱스 효율이 v4 대비 크게 향상됩니다.
UUID vs ULID vs Snowflake 비교
| 형식 | 길이 | 정렬 | 특징 |
|---|---|---|---|
| UUID v4 | 36자 | 불가 | 범용 표준, 광범위한 라이브러리 지원 |
| UUID v7 | 36자 | 가능 | DB 인덱스 최적화, RFC 9562 |
| ULID | 26자 | 가능 | Base32, URL 친화적, 짧음 |
| Snowflake | 64비트 정수 | 가능 | Twitter/Discord 사용, 중앙 노드 필요 |
데이터베이스에서 UUID PK 트레이드오프
- 장점: 서버 간 충돌 없음, 클라이언트 사전 생성 가능, 보안(순차 ID 노출 방지)
- 단점 (v4): 랜덤성으로 인한 B-Tree 페이지 분할 → 쓰기 성능 저하, 저장 공간 증가
- 해결책: UUID v7 또는 ULID 사용, MySQL에서는
UUID_TO_BIN(uuid, 1)로 바이너리 저장
실전 사용 — 분산 시스템 / 멀티 클라이언트
- REST API: 리소스 생성 시 클라이언트가 ID를 직접 생성해 PUT 요청 (멱등성 보장)
- 오프라인 우선 앱: 네트워크 없이 로컬에서 레코드 생성 후 나중에 동기화
- 이벤트 소싱: 이벤트 고유 식별, 중복 처리 방지
- 파일/에셋 관리: 파일명 충돌 없는 스토리지 업로드
자주 묻는 질문 (FAQ)
Q. UUID v4와 v7 중 어떤 걸 써야 하나요?
새 프로젝트에서 DB 기본키로 쓴다면 UUID v7을 권장합니다. 기존 시스템 호환이나 라이브러리 지원이 중요하다면 v4가 안전한 선택입니다.
Q. UUID를 URL에 그대로 사용해도 되나요?
하이픈이 포함되지만 URL-safe 문자만 사용하므로 인코딩 없이 사용 가능합니다. 더 짧게 쓰려면 No dashes 옵션이나 ULID를 고려하세요.
Q. 이 도구에서 생성한 UUID는 안전한가요?
브라우저의 crypto.randomUUID()를 사용하며 암호학적으로 안전한 난수입니다. 모든 처리는 로컬에서 이루어져 서버로 전송되지 않습니다.
Q. 대량 생성 시 성능은 어떤가요?
브라우저 내장 API를 사용하므로 50개 일괄 생성도 즉각적입니다. 더 많은 수량이 필요하다면 Node.js의 crypto.randomUUID()를 반복 호출하는 스크립트를 작성하세요.