Logo

자바스크립트로 UUID 생성하기

클라이언트나 서버를 가라지 않고 웹 개발을 할 때 랜덤 문자열 기반의 식별자가 많이 사용되고 있습니다. 전통적인 숫자 시퀀스 기반의 식별자를 사용하면 애플리케이션을 수평적으로 확장하기가 어렵고 보안적으로도 불리한 측면이 있기 때문입니다.

이번 포스팅에서는 대표적인 랜덤 문자열 기반의 식별자인 UUID를 자바스크립트로 생성하는 방법에 대해서 알아보겠습니다.

UUID란?

UUID(Universally Unique IDentifier)는 가장 대표적인 랜덤 문자열 기반의 식별자입니다. UUID는 16진수로 구성되며 128 비트, 즉 36 바이트 길이의 문자열로 아래와 같은 형태(8-4-4-4-12)를 띄게 됩니다.

7571e92b-f38b-4878-959c-f76ab9290ed8
c66e189f-9c16-4511-91fa-f0d05d12c2c9
0b868908-1882-4f85-8c4e-ec2d796784c8
a8feea41-fe2e-42db-975f-4eecd5b03813
6bdcbc81-63d7-4d77-8f0c-4b8e02caf1fe

UUID는 5가지 버전이 있지만 보안성이 가장 높은 v4가 가장 널리 사용되고 있습니다.

npm 패키지 사용

자바스크립트에서 UUID를 생성하기 위해서 예전부터 npm 패키지가 많이 사용되었습니다. npm 저장소에서 검색해보면 uuid라는 패키지가 가장 다운로드 수가 많을 것입니다.

그럼, 터미널에서 npm 명령어로 uuid라는 패키지를 설치해볼까요?

$ npm install uuid

이제 uuid 패키지로 부터 v4()라는 함수를 불러온 후에 호출하면 UUID가 생성됩니다.

import { v4 as uuidv4 } from "uuid"; // ES Modules
// const { v4: uuidv4 } = require("uuid"); // CommonJS

const id = uuidv4();
console.log(id); // "69c52380-f123-4523-a0c8-4bc78319cf6b"

예제 코드는 아래에 올려두었니 필요하시다면 직접 실행해보시길 바랍니다.

웹 표준 API

Web 표준 API를 충실하게 구현하고 있는 모던 브라우저에서는 UUID 생성을 위해서 굳이 별도의 패키지를 설치하지 않아도 됩니다. 왜냐하면 Web Crypto API에서 UUID를 반환하는 randomUUID() 함수를 제공하고 있기 때문입니다.

const id = crypto.randomUUID();
console.log(id); // "cbfc904b-b898-4deb-b736-ba433489904c"

참고로 Web Crypto API의 randomUUID() 함수는 Node.js, Deno, Bun과 같은 서버 측 자바스크립트 런타임에서도 지원합니다.

마치면서

지금까지 자바스크립트에서 UUID를 생성하는 두 가지 방법에 대해서 살펴보았습니다. UUID를 잘 활용하셔서 더욱 안전하고 신뢰성 높은 고유 식별자를 생성하실 수 있으셨으면 좋겠습니다.

최근에는 랜덤 문자열 기반의 고유 식별자로서 UUID보다 짧고 빠른 NanoID도 많이 사용되고 있습니다. NanoID에 대해서는 별도 포스팅에서 자세히 다루고 있으니 참고 바랍니다.