개발을 하다 보면 거의 모든 데이터에는 id가 붙는다.
constuser= {
id:1,
name:"kim",
};
처음에는 이런 숫자 ID만으로도 충분해 보인다.
DB에 데이터가 하나씩 쌓이면 1, 2, 3, 4처럼 증가하면 되니까.
그런데 서비스를 만들다 보면 단순한 숫자 ID만으로는 애매한 순간이 온다.
예를 들어 이런 상황이다.
- 여러 서버에서 동시에 데이터를 생성해야 한다.
- DB에 저장하기 전에 먼저 ID가 필요하다.
- 외부에 노출되는 URL에 순차 ID를 그대로 보여주기 싫다.
- 다른 시스템과 데이터를 합쳐도 ID가 충돌하지 않아야 한다.
- 로그, 메시지, 파일, 주문 같은 데이터를 유일하게 구분해야 한다.
이때 등장하는 것이 UUID, ULID 같은 식별자다.
식별자의 목적은 단순하다.
어떤 데이터를 다른 데이터와 구분하기 위해서다. (역추적하기 어렵게 하는 것이 아니다)
게시글을 예로 들어보자.
constpost= {
id:1,
title:"첫 번째 게시글",
};
여기서 id는 게시글을 찾기 위한 기준이다.
// id가 1인 게시글을 조회한다.
GET/posts/1
이런 구조에서는 id가 곧 데이터의 주소처럼 사용된다.
문제는 서비스가 커질수록 id가 단순한 번호 이상의 의미를 갖게 된다는 점이다.
작은 서비스에서는 id = 번호
커지는 서비스에서는 id = 시스템 전체에서 데이터를 구분하는 식별자