데이터베이스 테이블의 기본 키로 1, 2, 3 같은 자동 증가 숫자를 쓰는 게 일반적이다. 하지만 요즘은 UUID(Universally Unique Identifier)를 쓰는 경우도 많아졌다. 왜 그런지, 언제 UUID를 쓰는 게 좋은지 알아봤다.
UUID의 특징
UUID는 550e8400-e29b-41d4-a716-446655440000 같은 형식의 128비트 고유 식별자다. 전 세계 어디서 만들어도 중복될 확률이 거의 없다. 분산 시스템에서 각 노드가 독립적으로 ID를 생성해도 충돌이 안 생긴다.
반면 자동 증가 숫자는 순차적이라서 예측이 가능하다. /users/1, /users/2 같은 URL을 보면 다음 ID가 뭔지 알 수 있고, 전체 레코드 수도 유추할 수 있다.
UUID 생성 방법
UUID 생성기에서 버튼 하나로 새 UUID를 만들 수 있다. 필요한 만큼 여러 개를 한번에 생성하는 것도 가능하다.
UUID 버전별 차이
- UUID v1: 시간 + MAC 주소 기반
- UUID v4: 완전 랜덤 (가장 많이 사용)
- UUID v5: 네임스페이스 + 이름의 SHA-1 해시
- UUID v7: 시간순 정렬 가능한 랜덤 (최신)
UUID의 장단점
장점: 분산 환경에서 ID 충돌 없음, URL에서 정보 유출 방지, 미리 ID 생성 가능. 단점: 숫자보다 길어서 저장 공간 더 사용, 인덱스 성능 저하 가능성, 사람이 읽기 불편.
간단한 프로젝트에서는 자동 증가 숫자가 편하다. 하지만 마이크로서비스나 여러 데이터베이스를 연동하는 시스템에서는 UUID 생성기로 만든 UUID가 유용하다.
URL에서 UUID 사용
API URL에 /orders/550e8400-e29b-41d4-a716-446655440000 같이 쓰면 순차적인 숫자보다 보안상 좋다. 공격자가 다른 사용자의 주문 정보를 조회하기 어려워진다. 물론 권한 체크는 별도로 해야 한다.