본문 바로가기

UUID v4 생성 방법 완벽 가이드 - JavaScript, Python, 온라인 도구 정리

UUID v4가 왜 필요한지부터 JavaScript와 Python으로 생성하는 코드, 무료 온라인 도구 활용법까지 개발자가 알아야 할 핵심을 정리했습니다.


UUID v4 생성 방법 완벽 가이드 - JavaScript, Python, 온라인 도구 정리

웹 서비스를 개발하다 보면 데이터베이스의 기본키나 세션 ID, 파일 식별자처럼 고유한 값을 만들어야 하는 순간이 자주 옵니다. 단순한 숫자 증가 ID는 분산 환경과 보안 측면에서 문제가 많아 요즘은 대부분 UUID를 씁니다. 그중에서도 UUID v4는 가장 널리 쓰이는 버전입니다.

UUID v4를 어떻게 만드는지, 언어별로 어떻게 다른지, 온라인에서 빠르게 생성하는 방법까지 한번에 정리하겠습니다.

UUID v4란 무엇이고 왜 필요한가

UUID는 Universally Unique Identifier의 약자로, 128비트 길이의 고유 식별자입니다. 표기 형식은 xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx처럼 하이픈으로 나뉜 32자리 16진수입니다. 여기서 M 자리가 버전을 나타내는 숫자로, v4는 항상 4가 들어갑니다.

UUID v4는 완전히 랜덤한 값으로 만들어지는 버전입니다. 시간이나 MAC 주소를 사용하는 v1, v2와 달리 추측이 불가능합니다. 충돌 확률은 2의 122제곱 분의 1로, 사실상 0에 가깝습니다.

1초에 10억 개씩 UUID v4를 생성한다고 가정해도, 충돌이 발생할 확률이 50%가 되려면 약 85년이 걸린다는 계산이 있습니다. 일반적인 서비스 규모에서 중복을 걱정할 일은 거의 없습니다.

JavaScript에서 UUID v4 생성하는 3가지 방법

최신 브라우저와 Node.js 19 이상에서는 별도 라이브러리 없이 crypto.randomUUID()를 바로 쓸 수 있습니다. 가장 간단하고 보안상 안전한 방법입니다.

// 브라우저, Node.js 19+
const id = crypto.randomUUID();
console.log(id);
// "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"

구형 환경을 지원해야 한다면 uuid 라이브러리를 사용하는 방법이 있습니다. npm에서 주간 다운로드가 1억 회를 넘는 검증된 패키지입니다.

// npm install uuid
import { v4 as uuidv4 } from 'uuid';
const id = uuidv4();

외부 라이브러리 없이 직접 구현할 수도 있지만, 보안이 중요한 곳에서는 권장하지 않습니다. crypto API를 쓰지 않으면 예측 가능한 값이 나올 위험이 있습니다.

꼭 기억해야 할 점

  • HTTPS 환경에서만 작동: 브라우저의 crypto.randomUUID()는 보안 컨텍스트(HTTPS, localhost)에서만 사용할 수 있습니다
  • Math.random() 사용 금지: 직접 구현할 때 Math.random()으로 만든 UUID는 예측 가능해서 보안 식별자로 부적합합니다
  • Node.js 버전 확인: crypto.randomUUID()는 14.17 이상에서 지원하지만, 안정적으로 쓰려면 16 이상을 권장합니다

Python과 다른 언어에서 UUID v4 생성하기

거의 모든 주요 언어가 UUID v4 생성을 표준 라이브러리로 지원합니다. 별도 설치 없이 바로 쓸 수 있습니다.

언어코드비고
Pythonuuid.uuid4()표준 라이브러리 uuid 모듈
JavaUUID.randomUUID()java.util.UUID
C#Guid.NewGuid()UUID 대신 GUID로 표기
Gouuid.New()google/uuid 패키지 필요
PHPRamsey\Uuid\Uuid::uuid4()ramsey/uuid 라이브러리
RubySecureRandom.uuid표준 라이브러리

Python 예시를 조금 더 구체적으로 보겠습니다. 표준 라이브러리만으로 충분합니다.

import uuid

# UUID v4 생성
id = uuid.uuid4()
print(id)
# 9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d

# 하이픈 없는 형식
print(id.hex)
# 9b1deb4d3b7d4bad9bdd2b0d7b3dcb6d
참고: C#의 GUID(Globally Unique Identifier)는 마이크로소프트의 UUID 구현체로, 형식이 UUID와 완전히 동일합니다. 다른 언어 시스템과 호환되니 혼합해서 써도 문제없습니다.

무료 온라인 UUID 생성 도구 비교

코드 작성 없이 한두 개만 빠르게 필요한 경우, 온라인 도구가 가장 편합니다. 테스트 데이터를 만들거나 임시 식별자가 필요할 때 유용합니다.

온라인 UUID 생성기를 고를 때 확인할 부분은 다음과 같습니다.

  • 일괄 생성 지원: 한 번에 100개, 1000개씩 만들 수 있는지 여부
  • 대소문자 옵션: 시스템에 따라 대문자 또는 소문자를 요구하는 경우가 있습니다
  • 하이픈 제거 옵션: 데이터베이스에 저장할 때 하이픈 없이 32자리만 쓰는 경우도 많습니다
  • API 제공 여부: 자동화가 필요하다면 REST API를 제공하는 서비스가 편리합니다
팁: 보안이 중요한 식별자(인증 토큰, 세션 ID 등)는 절대 온라인 생성기로 만들지 마세요. 생성된 값이 서버 로그에 남아 있을 가능성이 있습니다. 보안 식별자는 반드시 본인 서버에서 crypto API로 생성해야 합니다.

참고로 UUID 외에도 개발자가 자주 쓰는 무료 웹 유틸리티가 많습니다. 반응형 디자인을 점검할 때 활용하는 화면 크기 확인 같은 도구나 간단한 수치 계산이 필요할 때 쓰는 BMI 계산기도 북마크해 두면 작업 흐름이 끊기지 않습니다.

UUID v4 사용 시 주의사항과 활용 팁

UUID v4가 만능은 아닙니다. 상황에 따라 다른 선택지가 더 나을 수 있습니다.

데이터베이스 성능을 고려하세요

UUID v4는 완전 랜덤이라 인덱스의 지역성이 떨어집니다. MySQL의 InnoDB처럼 클러스터드 인덱스를 쓰는 DB에서는 대량의 페이지 분할이 발생할 수 있습니다. 이런 경우 UUID v7(시간 정렬 가능)이나 ULID 같은 대안을 검토해 볼 만합니다.

URL에 노출할 때는 인코딩

UUID 36자리(하이픈 포함)는 URL에 그대로 노출하면 깁니다. Base64나 Base58로 인코딩하면 22자리로 줄어듭니다. 짧은 URL이 필요한 서비스라면 검토해 볼 만한 방법입니다.

저장 방식 최적화

문자열로 저장하면 36바이트지만, 바이너리(BINARY(16))로 저장하면 16바이트로 줄어듭니다. 수천만 건 이상 저장하는 서비스라면 차이가 누적되어 큽니다.

UUID v4는 가장 안전하고 보편적인 식별자 생성 방법입니다. 새 프로젝트를 시작한다면 본인이 쓰는 언어의 표준 라이브러리부터 확인하세요. 대부분 외부 라이브러리 없이도 충분합니다. 보안 토큰처럼 민감한 값이라면 반드시 crypto 모듈 기반 함수를 사용하시기 바랍니다.

3일 무료체험큰손탐지기, 지금 바로 시작하세요

설치 없이 웹에서 바로 사용 가능 · PC & 모바일 지원

무료체험 시작
카카오톡 상담