Guide

UUID v7 생성기 선택 기준

생성 시각을 반영하는 정렬 친화 UUID가 필요할 때 UUID v7 값을 빠르게 만들어 저장 키와 로그 상관관계에 활용합니다.

시간순 정렬에 유리

UUID v7은 앞부분에 시간 정보가 반영되어 로그, 이벤트, 데이터베이스 인덱스에서 생성 순서 확인이 쉽습니다.

테스트 데이터 생성

개발 중 샘플 ID, fixture, 문서 예시가 필요할 때 브라우저에서 바로 새 값을 만들 수 있습니다.

비밀값으로 쓰지 않기

UUID는 식별자이지 인증 토큰이 아닙니다. 접근 권한을 보호하는 값으로 단독 사용하면 안 됩니다.

Workflow

사용 순서

  1. 새 UUID v7을 생성합니다.
  2. 정렬이 필요한 테이블 키, 이벤트 ID, 로그 correlation ID에 적합한지 확인합니다.
  3. 외부 공개 ID라면 추측 가능성, 노출 범위, 권한 검사를 별도로 설계합니다.
  4. DB에 저장할 때는 문자열 저장과 binary 저장 중 운영 기준에 맞는 형식을 고릅니다.

Examples

실제 입력과 결과

연속 생성 시 정렬

입력

3회 연속 생성

결과

01923f8a-1c4d-7000-8a3b-9f2e1d4c5b6a
01923f8a-1c51-7000-8a3b-2c7d9e4f1a3b
01923f8a-1c55-7000-8a3b-6b1a8c2d7e9f

앞 12자리가 밀리초 타임스탬프라 문자열 정렬만으로도 생성 순서가 유지됩니다.

Troubleshooting

자주 만나는 오류

v4를 쓰던 인덱스가 느렸던 이유

v4는 완전 난수라 B-tree 인덱스에 무작위로 삽입되어 페이지 분할이 잦습니다. v7은 시간순이라 끝에 붙어 삽입 성능과 캐시 적중률이 낫습니다.

생성 시각이 노출됩니다

v7에는 밀리초 단위 생성 시각이 그대로 들어 있습니다. 가입 시점이나 주문 시각을 숨겨야 하는 공개 식별자에는 v4가 맞습니다.

Review

확인할 점

시간 정보 노출

UUID v7에는 생성 시각을 추정할 수 있는 정보가 포함됩니다. 생성 시각 노출이 민감한 도메인에서는 UUID v4가 더 적합할 수 있습니다.

정렬과 보안은 별개

정렬 가능한 ID는 조회 성능과 운영성에 도움이 되지만, 인증과 인가를 대신하지 않습니다.

Related

함께 쓰면 좋은 도구