유틸리티

UUID란 무엇인가, 고유 ID를 만드는 가장 쉬운 방법

서버 두 대에서 동시에 데이터를 저장하면 auto-increment ID가 겹칠 수 있다. 서로 통신하지 않아도 각자 고유한 식별자를 만들 수 있는 방법이 UUID다. 128비트 랜덤 값이라 사실상 중복될 확률이 0에 가깝다.

UUID 구조

UUID(Universally Unique Identifier)는 32자리 16진수를 하이픈으로 구분한 형태다.

550e8400-e29b-41d4-a716-446655440000

총 36자(하이픈 포함)이고, 8-4-4-4-12 구조로 나뉜다. 가장 많이 쓰이는 UUID v4는 암호학적 난수 생성기로 완전히 랜덤하게 만든다. 초당 10억 개를 생성해도 중복이 발생하려면 수십 년이 걸린다.

UUID가 쓰이는 곳

  • 데이터베이스 기본키 — 분산 시스템에서 서버 간 ID 충돌 없이 레코드를 생성할 수 있다.
  • 파일명 생성 — 업로드된 파일에 UUID를 붙이면 이름이 겹칠 일이 없다.
  • 세션/토큰 ID — 로그인 세션이나 API 키에 UUID를 사용해 예측 불가능한 값을 부여한다.
  • 임시 링크 — 비밀번호 재설정 URL에 UUID를 넣으면 추측이 불가능하다.

생성하는 방법 3가지

코드로 직접 생성

JavaScript에서는 crypto.randomUUID() 한 줄이면 된다. Python은 import uuid; uuid.uuid4()로 만든다. 프로젝트 안에서 ID를 자동 부여할 때 적합하다.

CLI에서 생성

macOS/Linux 터미널에서 uuidgen 명령어를 치면 바로 나온다. Windows PowerShell에서는 [guid]::NewGuid()를 쓴다.

온라인에서 대량 생성

테스트 데이터를 만들거나 한꺼번에 여러 개가 필요할 때는 UUID 생성기에서 개수와 형식을 지정하고 바로 뽑는 게 빠르다. 하이픈 제거, 중괄호 감싸기, 대문자 변환까지 옵션으로 선택할 수 있고, 1,000개까지 한 번에 생성해서 텍스트 파일로 다운로드할 수 있다.

TIP UUID v4는 완전 랜덤이라 정렬 성능이 떨어질 수 있다. 데이터베이스 인덱스 효율이 중요한 경우 UUID v7(타임스탬프 기반)이나 ULID를 대안으로 고려해볼 만하다.

고유한 ID 하나 만드는 데 서버를 거칠 필요는 없다. 필요할 때 브라우저에서 바로 뽑아 쓰면 된다.