분산 시스템 환경이나 데이터베이스를 다루다 보면, ‘충돌 없는 고유한 ID’의 필요성을 절감하게 됩니다. UUID는 바로 이 문제를 해결하기 위해 탄생한 표준 식별자입니다. 오늘은 UUID의 핵심 개념과 주요 활용처, 그리고 각 운영체제에서 UUID를 손쉽게 생성하는 방법을 명확하게 안내해 드리고자 합니다.
UUID란 무엇인가?#
UUID(Universally Unique Identifier) 는 전 세계적으로 거의 중복되지 않는 고유한 식별자를 생성하기 위한 표준 규약입니다.
핵심은 중앙 관리 시스템 없이도 누구나, 어디서든 ID를 생성할 수 있으면서도, 그 ID가 다른 사람이 만든 ID와 겹칠 확률이 사실상 ‘0’에 가깝다는 점입니다. 일반적으로 123e4567-e89b-12d3-a456-426614174000
와 같이 32개의 16진수 문자와 4개의 하이픈으로 구성된 128비트 값입니다.
UUID를 사용하는 이유#
고유성 보장: 여러 컴퓨터와 데이터베이스가 분산된 환경에서 각자 ID를 만들어도 서로 충돌할 걱정이 없습니다. 이는 데이터 병합이나 시스템 통합 시 발생할 수 있는 문제를 원천적으로 방지합니다.
보안성:
1, 2, 3...
처럼 순서대로 증가하는 ID는 다음 생성될 ID를 쉽게 예측할 수 있어 보안에 취약합니다. 반면 UUID는 무작위 문자열처럼 보여 예측이 불가능하므로, 외부에 노출되는 리소스 ID 등에 사용하기 안전합니다.독립적인 생성: ID를 생성하기 위해 중앙 서버에 “다음 번호를 주세요"라고 요청할 필요가 없습니다. 각 시스템이 네트워크 연결 없이도 자체적으로 고유한 ID를 생성할 수 있어 시스템의 독립성과 확장성을 높입니다.
UUID의 주요 활용처#
UUID는 데이터를 고유하게 식별해야 하는 거의 모든 곳에서 활용될 수 있습니다.
데이터베이스 기본 키 (Primary Key)#
여러 데이터베이스 서버를 사용하는 분산 시스템에서 각 서버가 고유한 ID를 가진 데이터를 생성할 때 사용합니다. 나중에 이 데이터들을 하나로 합쳐도 ID 충돌이 발생하지 않습니다.
트랜잭션 및 로그 ID#
수많은 요청과 이벤트가 발생하는 대규모 시스템에서 각 처리 과정을 추적하기 위한 고유한 ID로 사용되어, 문제 발생 시 원인 분석을 용이하게 합니다.
파일 및 리소스 식별자#
사용자가 업로드하는 파일의 이름을 UUID로 변경하여 저장하면, 같은 이름의 파일이 업로드되어도 겹치지 않고 안전하게 보관할 수 있습니다.
세션 및 인증 토큰#
웹사이트나 앱에서 각 사용자의 로그인 상태를 유지하기 위한 세션 ID나 API 인증 토큰으로 사용됩니다. 추측이 불가능하여 보안성을 높입니다.
운영체제별 UUID 생성 방법#
각 운영체제에 내장된 도구를 사용하여 터미널에서 매우 간단하게 UUID를 생성할 수 있습니다.
macOS#
Mac에서는 uuidgen
이라는 기본 내장 명령어를 사용합니다.
터미널 앱을 엽니다.
아래 명령어를 입력하고 Enter 키를 누릅니다.
uuidgen
E0B3B5E0-A5A1-4A59-99B3-1B5B3AD3F3B8
와 같은 UUID가 즉시 생성됩니다.
결과를 바로 클립보드에 복사하려면 pbcopy
와 함께 사용하십시오.
uuidgen | pbcopy
Ubuntu / Linux#
Ubuntu를 포함한 대부분의 Linux 배포판에서도 uuidgen
명령어를 사용합니다.
터미널을 엽니다.
아래 명령어를 입력합니다.
uuidgen
xclip
과 같은 도구가 설치되어 있다면, 아래 명령어로 결과를 클립보드에 복사할 수 있습니다.
# xclip이 설치되어 있어야 합니다.
uuidgen | xclip -selection clipboard
Windows#
윈도우에서는 PowerShell을 사용하는 것이 가장 편리합니다.
PowerShell을 엽니다. (시작 메뉴에서
PowerShell
검색)아래 명령어를 입력합니다.
[guid]::NewGuid()
이 명령어는 Guid 객체 형태로 결과를 출력합니다.
만약 순수한 UUID 문자열만 클립보드에 복사하고 싶다면, 아래의 명령어를 사용하세요.
[guid]::NewGuid().ToString() | Set-Clipboard
이 명령을 실행하면 화면에 아무런 출력이 없지만, UUID가 클립보드에 복사되어 바로 붙여넣기(Ctrl + V
)할 수 있습니다.
참조
- RFC 4122: A Universally Unique IDentifier (UUID) URN Namespace - https://www.rfc-editor.org/rfc/rfc4122