๋ถ์ฐ ์์คํ ์์ ์ค์ํ ๊ณ ์ ์๋ณ์ ์์ฑ์ ์ํด ๊ธฐ๋ณธ์ ์ธ ๋ฒ์ ๋ถํฐ Ulid์ ๊ฐ์ ๊ณ ๊ธ ๊ธฐ์ ๊น์ง UUID ์์ฑ ์ ๋ต์ ์ดํด๋ณด์ธ์. ์ฅ๋จ์ ๋ฐ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์์๋ณด์ธ์.
UUID ์์ฑ: ๊ธ๋ก๋ฒ ์์คํ ์ ์ํ ๊ณ ์ ์๋ณ์ ์์ฑ ์ ๋ต ํ์ฉ
ํ๋ ์ปดํจํ ์ ๊ด๋ํ๊ณ ์ํธ ์ฐ๊ฒฐ๋ ํ๊ฒฝ์์ ๋ชจ๋ ๋ฐ์ดํฐ ์กฐ๊ฐ, ๋ชจ๋ ์ฌ์ฉ์ ๋ฐ ๋ชจ๋ ํธ๋์ญ์ ์๋ ๊ณ ์ ํ ID๊ฐ ํ์ํฉ๋๋ค. ์ด๋ฌํ ๊ณ ์ ์ฑ์ ๋ํ ์๊ตฌ๋ ํนํ ๋ค์ํ ์ง์ญ๊ณผ ๊ท๋ชจ์ ๊ฑธ์ณ ์๋ํ๋ ๋ถ์ฐ ์์คํ ์์ ๊ฐ์ฅ ์ค์ํฉ๋๋ค. ์ ์ฌ์ ์ผ๋ก ํผ๋์ค๋ฌ์ด ๋์งํธ ์ธ๊ณ์์ ์ง์๋ฅผ ๋ณด์ฅํ๋ ์จ๊ฒจ์ง ์์ ์ธ UUID(๊ณ ์ ๋ฒ์ฉ ์๋ณ์)๋ฅผ ์ ๋ ฅํ์ญ์์ค. ์ด ํฌ๊ด์ ์ธ ๊ฐ์ด๋๋ UUID ์์ฑ์ ๋ณต์ก์ฑ์ ์์ธํ ์ดํด๋ณด๊ณ ๋ค์ํ ์ ๋ต, ๊ธฐ๋ณธ ๋ฉ์ปค๋์ฆ ๋ฐ ๊ธ๋ก๋ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํ ์ต์ ์ ์ ๊ทผ ๋ฐฉ์์ ์ ํํ๋ ๋ฐฉ๋ฒ์ ์ดํด๋ด ๋๋ค.
ํต์ฌ ๊ฐ๋ : ๋ฒ์ฉ ๊ณ ์ ์๋ณ์(UUID)
GUID(Globally Unique Identifier)๋ผ๊ณ ๋ ํ๋ UUID๋ ์ปดํจํฐ ์์คํ ์์ ์ ๋ณด๋ฅผ ๊ณ ์ ํ๊ฒ ์๋ณํ๋ ๋ฐ ์ฌ์ฉ๋๋ 128๋นํธ ์ซ์์ ๋๋ค. ํน์ ํ์ค์ ๋ฐ๋ผ ์์ฑ๋ UUID๋ ์ฌ์ค์ ๋ชจ๋ ๊ณต๊ฐ๊ณผ ์๊ฐ์์ ๊ณ ์ ํฉ๋๋ค. ์ด๋ฌํ ๋๋ผ์ด ์์ฑ์ผ๋ก ์ธํด ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ธฐ๋ณธ ํค์์ ์ธ์ ํ ํฐ ๋ฐ ๋ถ์ฐ ์์คํ ๋ฉ์์ง์ ์ด๋ฅด๊ธฐ๊น์ง ๋ค์ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์์ ์ ๋๋ค.
UUID๊ฐ ํ์์ ์ธ ์ด์
- ๊ธ๋ก๋ฒ ๊ณ ์ ์ฑ: ์์ฐจ์ ์ ์์ ๋ฌ๋ฆฌ UUID๋ ๊ณ ์ ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด ์ค์ ์ง์ค์ ์กฐ์ ์ด ํ์ํ์ง ์์ต๋๋ค. ์ด๋ ์๋ก ๋ค๋ฅธ ๋ ธ๋๊ฐ ํต์ ์์ด ๋์์ ์๋ณ์๋ฅผ ์์ฑํ ์ ์๋ ๋ถ์ฐ ์์คํ ์ ๋งค์ฐ ์ค์ํฉ๋๋ค.
- ํ์ฅ์ฑ: ์ํ์ ํ์ฅ์ ์ฉ์ดํ๊ฒ ํฉ๋๋ค. ๊ฐ ์๋ฒ๊ฐ ๊ณ ์ ํ ์๋ณ์๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ์์ฑํ ์ ์์ผ๋ฏ๋ก ID ์ถฉ๋์ ๋ํ ๊ฑฑ์ ์์ด ๋ ๋ง์ ์๋ฒ๋ ์๋น์ค๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค.
- ๋ณด์ ๋ฐ ๋ชจํธ์ฑ: UUID๋ ์์ฐจ์ ์ผ๋ก ์ถ์ธกํ๊ธฐ ์ด๋ ต๊ธฐ ๋๋ฌธ์ ๋ฆฌ์์ค์ ๋ํ ์ด๊ฑฐ ๊ณต๊ฒฉ(์: ์ฌ์ฉ์ ID ๋๋ ๋ฌธ์ ID ์ถ์ธก)์ ๋ฐฉ์งํ์ฌ ๋ณด์์ ๊ฐํํ ์ ์๋ ๋ชจํธ์ฑ ๊ณ์ธต์ ์ถ๊ฐํฉ๋๋ค.
- ํด๋ผ์ด์ธํธ ์ธก ์์ฑ: ๋ฐ์ดํฐ๋ฅผ ์๋ฒ๋ก ๋ณด๋ด๊ธฐ ์ ์๋ ํด๋ผ์ด์ธํธ ์ธก(์น ๋ธ๋ผ์ฐ์ , ๋ชจ๋ฐ์ผ ์ฑ, IoT ์ฅ์น)์์ ์๋ณ์๋ฅผ ์์ฑํ ์ ์์ผ๋ฏ๋ก ์คํ๋ผ์ธ ๋ฐ์ดํฐ ๊ด๋ฆฌ๊ฐ ๊ฐ์ํ๋๊ณ ์๋ฒ ๋ถํ๊ฐ ์ค์ด๋ญ๋๋ค.
- ๋ณํฉ ์ถฉ๋: ์ถฉ๋์ด ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ๋งค์ฐ ๋ฎ์ผ๋ฏ๋ก ๋ถ๋ฆฌ๋ ์์ค์ ๋ฐ์ดํฐ๋ฅผ ๋ณํฉํ๋ ๋ฐ ํ์ํฉ๋๋ค.
UUID์ ๊ตฌ์กฐ
UUID๋ ์ผ๋ฐ์ ์ผ๋ก xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
์ ๊ฐ์ด ํ์ดํ์ผ๋ก ๊ตฌ๋ถ๋ 5๊ฐ์ ๊ทธ๋ฃน์ผ๋ก ๋๋ 32์ 16์ง์ ๋ฌธ์์ด๋ก ํ์๋ฉ๋๋ค. 'M'์ UUID ๋ฒ์ ์ ๋ํ๋ด๊ณ 'N'์ ๋ณํ์ ๋ํ๋
๋๋ค. ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ๋ณํ(RFC 4122)์ 'N' ๊ทธ๋ฃน์ ๊ฐ์ฅ ์ค์ํ ๋ ๋นํธ(102 ๋๋ 16์ง์๋ก 8, 9, A, B)์ ๋ํด ๊ณ ์ ๋ ํจํด์ ์ฌ์ฉํฉ๋๋ค.
UUID ๋ฒ์ : ๋ค์ํ ์ ๋ต
RFC 4122 ํ์ค์ UUID์ ์ฌ๋ฌ ๋ฒ์ ์ ์ ์ํ๋ฉฐ ๊ฐ ๋ฒ์ ์ ์๋ก ๋ค๋ฅธ ์์ฑ ์ ๋ต์ ์ฌ์ฉํฉ๋๋ค. ์ด๋ฌํ ์ฐจ์ด์ ์ ์ดํดํ๋ ๊ฒ์ ํน์ ์๊ตฌ ์ฌํญ์ ๋ง๋ ์ฌ๋ฐ๋ฅธ ์๋ณ์๋ฅผ ์ ํํ๋ ๋ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค.
UUIDv1: ์๊ฐ ๊ธฐ๋ฐ(๋ฐ MAC ์ฃผ์)
UUIDv1์ ํ์ฌ ํ์์คํฌํ์ UUID๋ฅผ ์์ฑํ๋ ํธ์คํธ์ MAC(Media Access Control) ์ฃผ์๋ฅผ ๊ฒฐํฉํฉ๋๋ค. ๋คํธ์ํฌ ์ธํฐํ์ด์ค ์นด๋์ ๊ณ ์ ํ MAC ์ฃผ์์ ๋จ์กฐ๋กญ๊ฒ ์ฆ๊ฐํ๋ ํ์์คํฌํ๋ฅผ ํ์ฉํ์ฌ ๊ณ ์ ์ฑ์ ๋ณด์ฅํฉ๋๋ค.
- ๊ตฌ์กฐ: 60๋นํธ ํ์์คํฌํ(๊ทธ๋ ๊ณ ๋ฆฌ๋ ฅ์ ์์์ธ 1582๋ 10์ 15์ผ ์ดํ 100๋๋ ธ์ด ๊ฐ๊ฒฉ์ ์), 14๋นํธ ํด๋ญ ์ํ์ค(ํด๋ญ์ด ๋ค๋ก ์ค์ ๋๊ฑฐ๋ ๋๋ฌด ๋๋ฆฌ๊ฒ ํฑ๋ ์ ์๋ ๊ฒฝ์ฐ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํจ) ๋ฐ 48๋นํธ MAC ์ฃผ์๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
- ์ฅ์ :
- ๊ณ ์ ํ MAC ์ฃผ์์ ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๋ ํด๋ญ์ ๊ฐ์ ํ ๋ ๊ณ ์ ์ฑ์ด ๋ณด์ฅ๋ฉ๋๋ค.
- ์๊ฐ๋ณ๋ก ์ ๋ ฌ ๊ฐ๋ฅ(๋ฐ์ดํธ ์์ ๋๋ฌธ์ ์๋ฒฝํ์ง๋ ์์).
- ์กฐ์ ์์ด ์คํ๋ผ์ธ์ผ๋ก ์์ฑํ ์ ์์ต๋๋ค.
- ๋จ์ :
- ๊ฐ์ธ ์ ๋ณด ๋ฌธ์ : ์์ฑ ์์คํ ์ MAC ์ฃผ์๋ฅผ ๋ ธ์ถํ์ฌ ํนํ ๊ณต๊ฐ์ ์ผ๋ก ๋ ธ์ถ๋ ์๋ณ์์ ๊ฒฝ์ฐ ๊ฐ์ธ ์ ๋ณด ์ํ์ด ๋ ์ ์์ต๋๋ค.
- ์์ธก ๊ฐ๋ฅ์ฑ: ์๊ฐ ๊ตฌ์ฑ ์์๋ก ์ธํด ๋ค์ ์์ธก ๊ฐ๋ฅํ์ฌ ์ ์์ ์ธ ์ฌ์ฉ์๊ฐ ํ์ ID๋ฅผ ์ถ์ธกํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค.
- ํด๋ญ ์คํ ๋ฌธ์ : ์์คํ ํด๋ญ ์กฐ์ ์ ์ทจ์ฝํจ(ํด๋ญ ์ํ์ค๋ก ์ํ๋์ง๋ง).
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ๋ฑ์ฑ: ์๊ฐ ๊ธฐ๋ฐ์์๋ ๋ถ๊ตฌํ๊ณ ๋ฐ์ดํธ ์์๋ก ์ธํด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ค์์ ์์ ์ฝ์ ์ด ๋ฐ์ํ ์ ์์ผ๋ฏ๋ก B-ํธ๋ฆฌ ์ธ๋ฑ์ค์ ๊ธฐ๋ณธ ํค๋ก๋ ์ ํฉํ์ง ์์ต๋๋ค.
- ์ฌ์ฉ ์ฌ๋ก: ๊ฐ์ธ ์ ๋ณด ๋ฌธ์ ๋ก ์ธํด ํ์ฌ๋ ๋ ์ผ๋ฐ์ ์ด์ง๋ง ์ญ์ฌ์ ์ผ๋ก ์ถ์ ๊ฐ๋ฅํ๊ณ ์๊ฐ ์์๊ฐ ์ง์ ๋ ์๋ณ์๊ฐ ๋ด๋ถ์ ์ผ๋ก ํ์ํ๊ณ MAC ์ฃผ์ ๋ ธ์ถ์ด ํ์ฉ๋๋ ๊ฒฝ์ฐ์ ์ฌ์ฉ๋์์ต๋๋ค.
UUIDv2: DCE ๋ณด์(๋ ์ผ๋ฐ์ )
UUIDv2 ๋๋ DCE ๋ณด์ UUID๋ DCE(Distributed Computing Environment) ๋ณด์์ฉ์ผ๋ก ์ค๊ณ๋ UUIDv1์ ํน์ ๋ณํ์ ๋๋ค. ํด๋ญ ์ํ์ค ๋นํธ ๋์ "๋ก์ปฌ ๋๋ฉ์ธ"๊ณผ "๋ก์ปฌ ์๋ณ์"(์: POSIX ์ฌ์ฉ์ ID ๋๋ ๊ทธ๋ฃน ID)๋ฅผ ํตํฉํฉ๋๋ค. ํน์ DCE ํ๊ฒฝ ์ธ๋ถ์์ ํ์ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ์ ํ๋ ๊ด๋ฒ์ํ ์ฑํ์ผ๋ก ์ธํด ์ผ๋ฐ์ ์ธ ๋ชฉ์ ์ ์๋ณ์ ์์ฑ์์๋ ๊ฑฐ์ ๋ฐ์ํ์ง ์์ต๋๋ค.
UUIDv3 ๋ฐ UUIDv5: ์ด๋ฆ ๊ธฐ๋ฐ(MD5 ๋ฐ SHA-1 ํด์ฑ)
์ด๋ฌํ ๋ฒ์ ์ ๋ค์์คํ์ด์ค ์๋ณ์์ ์ด๋ฆ์ ํด์ฑํ์ฌ UUID๋ฅผ ์์ฑํฉ๋๋ค. ๋ค์์คํ์ด์ค ์์ฒด๋ UUID์ด๊ณ ์ด๋ฆ์ ์์ ๋ฌธ์์ด์ ๋๋ค.
- UUIDv3: MD5 ํด์ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํฉ๋๋ค.
- UUIDv5: SHA-1 ํด์ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ฉฐ, ์ผ๋ฐ์ ์ผ๋ก MD5์ ์๋ ค์ง ์ํธํ ์ฝ์ ์ผ๋ก ์ธํด MD5๋ณด๋ค ์ ํธ๋ฉ๋๋ค.
- ๊ตฌ์กฐ: ์ด๋ฆ๊ณผ ๋ค์์คํ์ด์ค UUID๊ฐ ์ฐ๊ฒฐ๋ ๋ค์ ํด์ฑ๋ฉ๋๋ค. ํด์์ ํน์ ๋นํธ๋ UUID ๋ฒ์ ๊ณผ ๋ณํ์ ๋ํ๋ด๊ธฐ ์ํด ๋์ฒด๋ฉ๋๋ค.
- ์ฅ์ :
- ๊ฒฐ์ ์ : ๋์ผํ ๋ค์์คํ์ด์ค์ ์ด๋ฆ์ ๋ํ UUID๋ฅผ ์์ฑํ๋ฉด ํญ์ ๋์ผํ UUID๊ฐ ์์ฑ๋ฉ๋๋ค. ์ด๋ ๋ฉฑ๋ฑ ์ฐ์ฐ์ด๋ ์ธ๋ถ ๋ฆฌ์์ค์ ๋ํ ์์ ์ ์ธ ์๋ณ์๋ฅผ ๋ง๋๋ ๋ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค.
- ๋ฐ๋ณต ๊ฐ๋ฅ: ๊ณ ์ ํ ์ด๋ฆ(์: URL, ํ์ผ ๊ฒฝ๋ก, ์ด๋ฉ์ผ ์ฃผ์)์ ๊ธฐ๋ฐ์ผ๋ก ๋ฆฌ์์ค์ ๋ํ ID๋ฅผ ์์ฑํด์ผ ํ๋ ๊ฒฝ์ฐ ์ด๋ฌํ ๋ฒ์ ์ ์ ์ฅํ ํ์ ์์ด ๋งค๋ฒ ๋์ผํ ID๋ฅผ ๋ณด์ฅํฉ๋๋ค.
- ๋จ์ :
- ์ถฉ๋ ๊ฐ๋ฅ์ฑ: SHA-1์ ์ฌ์ฉํ๋ฉด ๊ฐ๋ฅ์ฑ์ด ๋งค์ฐ ๋ฎ์ง๋ง ํด์ ์ถฉ๋(๋ ๊ฐ์ ๋ค๋ฅธ ์ด๋ฆ์ด ๋์ผํ UUID๋ฅผ ์์ฑํจ)์ ์ด๋ก ์ ์ผ๋ก ๊ฐ๋ฅํ์ง๋ง ๋๋ถ๋ถ์ ์ ํ๋ฆฌ์ผ์ด์ ์์๋ ์ค์ ๋ก ๋ฌด์ํ ์ ์์ต๋๋ค.
- ๋ฌด์์๊ฐ ์๋: ๋ชจํธ์ฑ์ด ์ฃผ์ ๋ชฉํ์ธ ๊ฒฝ์ฐ ๋จ์ ์ด ๋ ์ ์๋ UUIDv4์ ๋ฌด์์์ฑ์ด ๋ถ์กฑํฉ๋๋ค.
- ์ฌ์ฉ ์ฌ๋ก: ์ด๋ฆ์ด ํน์ ์ปจํ ์คํธ ๋ด์์ ์๋ ค์ ธ ์๊ณ ๊ณ ์ ํ ๋ฆฌ์์ค์ ๋ํ ์์ ์ ์ธ ์๋ณ์๋ฅผ ๋ง๋๋ ๋ฐ ์ ํฉํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์ฐํฉ ์์คํ ์ ๋ฌธ์, URL ๋๋ ์คํค๋ง ์์์ ๋ํ ์ฝํ ์ธ ์๋ณ์๊ฐ ์์ต๋๋ค.
UUIDv4: ์์ํ ๋ฌด์์์ฑ
UUIDv4๋ ๊ฐ์ฅ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ ๋ฒ์ ์ ๋๋ค. ์ฃผ๋ก ์ฐธ(๋๋ ์์ฌ) ๋์์์ UUID๋ฅผ ์์ฑํฉ๋๋ค.
- ๊ตฌ์กฐ: 122๋นํธ๊ฐ ๋ฌด์์๋ก ์์ฑ๋ฉ๋๋ค. ๋๋จธ์ง 6๋นํธ๋ ๋ฒ์ (4) ๋ฐ ๋ณํ(RFC 4122)์ ๋ํ๋ด๊ธฐ ์ํด ๊ณ ์ ๋ฉ๋๋ค.
- ์ฅ์ :
- ํ์ํ ๊ณ ์ ์ฑ(ํ๋ฅ ์ ): ๊ฐ๋ฅํ UUIDv4 ๊ฐ์ ์๊ฐ (2122)์ด๋ฏ๋ก ๋จ์ผ ์ถฉ๋ ๊ฐ๋ฅ์ฑ์ด ๊ทนํ ๋ฎ์ต๋๋ค. ๋จ์ผ ์ถฉ๋์ ๋ฌด์ํ ์ ์๋ ๊ฐ๋ฅ์ฑ์ ๊ฐ์ง๋ ค๋ฉด ์๋ ๋์ ์ด๋น ์์กฐ ๊ฐ์ UUID๋ฅผ ์์ฑํด์ผ ํฉ๋๋ค.
- ๊ฐ๋จํ ์์ฑ: ์ข์ ๋์ ์์ฑ๊ธฐ๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌํํ๊ธฐ๊ฐ ๋งค์ฐ ์ฝ์ต๋๋ค.
- ์ ๋ณด ์ ์ถ ์์: MAC ์ฃผ์ ๋๋ ํ์์คํฌํ์ ๊ฐ์ ์๋ณ ๊ฐ๋ฅํ ์ ๋ณด๊ฐ ํฌํจ๋์ด ์์ง ์์ ๊ฐ์ธ ์ ๋ณด ๋ณดํธ ๋ฐ ๋ณด์์ ์ข์ต๋๋ค.
- ๋งค์ฐ ๋ชจํธํจ: ํ์ ID๋ฅผ ์ถ์ธกํ๋ ๊ฒ์ด ๋ถ๊ฐ๋ฅํฉ๋๋ค.
- ๋จ์ :
- ์ ๋ ฌ ๋ถ๊ฐ๋ฅ: ์์ ํ ๋ฌด์์์ด๊ธฐ ๋๋ฌธ์ UUIDv4์๋ ๊ณ ์ ํ ์์๊ฐ ์์ผ๋ฏ๋ก B-ํธ๋ฆฌ ์ธ๋ฑ์ค์ ๊ธฐ๋ณธ ํค๋ก ์ฌ์ฉ๋ ๋ ๋ถ๋ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ๋ฑ์ฑ ์ฑ๋ฅ(ํ์ด์ง ๋ถํ , ์บ์ ๋๋ฝ)์ด ๋ฐ์ํ ์ ์์ต๋๋ค. ์ด๋ ๋๋ ์ฐ๊ธฐ ์์ ์ ๋ํ ์ค์ํ ๋ฌธ์ ์ ๋๋ค.
- ๊ณต๊ฐ ๋นํจ์จ์ฑ(์๋ ์ฆ๊ฐ ์ ์์ ๋น๊ต): ์์ง๋ง 128๋นํธ๋ 64๋นํธ ์ ์๋ณด๋ค ํฌ๋ฉฐ ๋ฌด์์ ํน์ฑ์ผ๋ก ์ธํด ์ธ๋ฑ์ค ํฌ๊ธฐ๊ฐ ๋ ์ปค์ง ์ ์์ต๋๋ค.
- ์ฌ์ฉ ์ฌ๋ก: ๊ธ๋ก๋ฒ ๊ณ ์ ์ฑ๊ณผ ๋ชจํธ์ฑ์ด ๊ฐ์ฅ ์ค์ํ๊ณ ์ ๋ ฌ ๊ฐ๋ฅ์ฑ ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฑ๋ฅ์ด ๋ ์ค์ํ๊ฑฐ๋ ๋ค๋ฅธ ์๋จ์ผ๋ก ๊ด๋ฆฌ๋๋ ๊ฑฐ์ ๋ชจ๋ ์๋๋ฆฌ์ค์ ๋๋ฆฌ ์ฌ์ฉ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด ์ธ์ ID, API ํค, ๋ถ์ฐ ๊ฐ์ฒด ์์คํ ์ ๊ฐ์ฒด์ ๋ํ ๊ณ ์ ์๋ณ์ ๋ฐ ๋๋ถ๋ถ์ ๋ฒ์ฉ ID ์๊ตฌ ์ฌํญ์ด ์์ต๋๋ค.
UUIDv6, UUIDv7, UUIDv8: ์ฐจ์ธ๋(์๋ก์ด ํ์ค)
RFC 4122๋ ๋ฒ์ 1-5๋ฅผ ๋ค๋ฃจ์ง๋ง, ์๋ก์ด ์ด์(4122๋ฅผ ๋์ฒดํ๋ RFC 9562์ ๊ฐ์)์ ๊ตฌํ ๋ฒ์ ์ ๋จ์ , ํนํ UUIDv4์ ๋ถ๋ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ๋ฑ์ฑ ์ฑ๋ฅ๊ณผ UUIDv1์ ๊ฐ์ธ ์ ๋ณด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋์์ ์ ๋ ฌ ๊ฐ๋ฅ์ฑ๊ณผ ๋ฌด์์์ฑ์ ์ ์งํ๋๋ก ์ค๊ณ๋ ์๋ก์ด ๋ฒ์ ์ ๋์ ํฉ๋๋ค.
- UUIDv6(์ฌ์ ๋ ฌ๋ ์๊ฐ ๊ธฐ๋ฐ UUID):
- ๊ฐ๋ : ๋ฐ์ดํธ ์ ๋ ฌ ๊ฐ๋ฅํ ์์๋ก ํ์์คํฌํ๋ฅผ ์์ ๋ถ๋ถ์ ๋ฐฐ์นํ๊ธฐ ์ํด UUIDv1 ํ๋๋ฅผ ์ฌ์ ๋ ฌํฉ๋๋ค. ์ฌ์ ํ MAC ์ฃผ์ ๋๋ ์์ฌ ๋์ ๋ ธ๋ ID๋ฅผ ํตํฉํฉ๋๋ค.
- ์ด์ : UUIDv1์ ์๊ฐ ๊ธฐ๋ฐ ์ ๋ ฌ ๊ฐ๋ฅ์ฑ์ ์ ๊ณตํ์ง๋ง ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ธ๋ฑ์ค ๋ก์ปฌ๋ฆฌํฐ๊ฐ ๋ ์ข์ต๋๋ค.
- ๋จ์ : ๋ฌด์์๋ก ์์ฑ๋ ๋ ธ๋ ID๋ฅผ ์ฌ์ฉํ ์ ์์ง๋ง ๋ ธ๋ ์๋ณ์๋ฅผ ๋ ธ์ถํ ์ ์๋ ์ ์ฌ์ ์ธ ๊ฐ์ธ ์ ๋ณด ๋ฌธ์ ๋ฅผ ์ ์งํฉ๋๋ค.
- UUIDv7(Unix ์ํฌํฌ ์๊ฐ ๊ธฐ๋ฐ UUID):
- ๊ฐ๋ : 1970-01-01 ์ดํ์ Unix ์ํฌํฌ ํ์์คํฌํ(๋ฐ๋ฆฌ์ด ๋๋ ๋ง์ดํฌ๋ก์ด)๋ฅผ ๋์ ๋๋ ๋จ์กฐ๋กญ๊ฒ ์ฆ๊ฐํ๋ ์นด์ดํฐ์ ๊ฒฐํฉํฉ๋๋ค.
- ๊ตฌ์กฐ: ์ฒ์ 48๋นํธ๋ ํ์์คํฌํ์ด๊ณ ๊ทธ ๋ค์ ๋ฒ์ ๋ฐ ๋ณํ ๋นํธ, ๊ทธ ๋ค์์๋ ๋์ ๋๋ ์ํ์ค ๋ฒํธ ํ์ด๋ก๋๊ฐ ์์ต๋๋ค.
- ์ฅ์ :
- ์๋ฒฝํ ์ ๋ ฌ ๊ฐ๋ฅ์ฑ: ํ์์คํฌํ๊ฐ ๊ฐ์ฅ ์ค์ํ ์์น์ ์๊ธฐ ๋๋ฌธ์ ์ฐ๋์์ผ๋ก ์์ฐ์ค๋ฝ๊ฒ ์ ๋ ฌ๋ฉ๋๋ค.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ๋ฑ์ฑ์ ์ ํฉ: B-ํธ๋ฆฌ ์ธ๋ฑ์ค์์ ํจ์จ์ ์ธ ์ฝ์ ๋ฐ ๋ฒ์ ์ฟผ๋ฆฌ๋ฅผ ์ง์ํฉ๋๋ค.
- MAC ์ฃผ์ ๋ ธ์ถ ์์: ๋์ ๋๋ ์นด์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ UUIDv1/v6์ ๊ฐ์ธ ์ ๋ณด ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํฉ๋๋ค.
- ์ฌ๋์ด ์ฝ์ ์ ์๋ ์๊ฐ ๊ตฌ์ฑ ์์: ์ ํ ํ์์คํฌํ ๋ถ๋ถ์ ์ฌ๋์ด ์ฝ์ ์ ์๋ ๋ ์ง/์๊ฐ์ผ๋ก ์ฝ๊ฒ ๋ณํํ ์ ์์ต๋๋ค.
- ์ฌ์ฉ ์ฌ๋ก: ์ ๋ ฌ ๊ฐ๋ฅ์ฑ, ์ฐ์ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฑ๋ฅ ๋ฐ ๊ณ ์ ์ฑ์ด ๋ชจ๋ ์ค์ํ ์๋ก์ด ์์คํ ์ ์ด์์ ์ ๋๋ค. ์ด๋ฒคํธ ๋ก๊ทธ, ๋ฉ์์ง ํ ๋ฐ ๋ณ๊ฒฝ ๊ฐ๋ฅํ ๋ฐ์ดํฐ์ ๊ธฐ๋ณธ ํค๋ฅผ ์๊ฐํด๋ณด์ธ์.
- UUIDv8(์ฌ์ฉ์ ์ง์ /์คํ์ UUID):
- ๊ฐ๋ : ์ฌ์ฉ์ ์ง์ ๋๋ ์คํ์ UUID ํ์์ ์์ฝ๋์ด ์์ต๋๋ค. ํ์ค UUID ํ์์ ์ค์ํ๋ฉด์๋ ๊ฐ๋ฐ์๊ฐ UUID์ ๋ํ ์์ฒด ๋ด๋ถ ๊ตฌ์กฐ๋ฅผ ์ ์ํ ์ ์๋ ์ ์ฐํ ํ ํ๋ฆฟ์ ์ ๊ณตํฉ๋๋ค.
- ์ฌ์ฉ ์ฌ๋ก: ๋ง์ถคํ ์๋ณ์ ๊ตฌ์กฐ๊ฐ ์ ์ฉํ ๊ณ ๋๋ก ํน์ํ๋ ์ ํ๋ฆฌ์ผ์ด์ , ๋ด๋ถ ๊ธฐ์ ํ์ค ๋๋ ์ฐ๊ตฌ ํ๋ก์ ํธ.
ํ์ค UUID ์ด์: ๊ธฐํ ๊ณ ์ ์๋ณ์ ์ ๋ต
UUID๋ ๊ฐ๋ ฅํ์ง๋ง ์ผ๋ถ ์์คํ ์์๋ UUID๊ฐ ์๋ฒฝํ๊ฒ ์ ๊ณตํ์ง ์๋ ํน์ ์์ฑ์ ๊ฐ์ง ์๋ณ์๊ฐ ํ์ํฉ๋๋ค. ์ด๋ก ์ธํด UUID์ ์ด์ ๊ณผ ๋ค๋ฅธ ๋ฐ๋์งํ ํน์ฑ์ ํผํฉํ๋ ๋์ฒด ์ ๋ต์ด ๊ฐ๋ฐ๋์์ต๋๋ค.
Ulid: ๋จ์กฐ, ์ ๋ ฌ ๊ฐ๋ฅ, ๋ฌด์์
ULID(Universally Unique Lexicographically Sortable Identifier)๋ ํ์์คํฌํ์ ์ ๋ ฌ ๊ฐ๋ฅ์ฑ๊ณผ UUIDv4์ ๋ฌด์์์ฑ์ ๊ฒฐํฉํ๋๋ก ์ค๊ณ๋ 128๋นํธ ์๋ณ์์ ๋๋ค.
- ๊ตฌ์กฐ: ULID๋ 48๋นํธ ํ์์คํฌํ(๋ฐ๋ฆฌ์ด ๋จ์์ Unix ์ํฌํฌ)์ ๊ทธ ๋ค์ 80๋นํธ์ ์ํธํ์ ์ผ๋ก ๊ฐ๋ ฅํ ๋ฌด์์์ฑ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
- UUIDv4์ ๋นํด ์ฅ์ :
- ์ฌ์ ์์ผ๋ก ์ ๋ ฌ ๊ฐ๋ฅ: ํ์์คํฌํ๊ฐ ๊ฐ์ฅ ์ค์ํ ๋ถ๋ถ์ด๋ฏ๋ก ULID๋ ๋ถํฌ๋ช ๋ฌธ์์ด๋ก ์ฒ๋ฆฌ๋ ๋ ์๊ฐ์ ๋ฐ๋ผ ์์ฐ์ค๋ฝ๊ฒ ์ ๋ ฌ๋ฉ๋๋ค. ๋ฐ๋ผ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ๋ฑ์ค์ ํ์ํฉ๋๋ค.
- ๋์ ์ถฉ๋ ์ ํญ: 80๋นํธ์ ๋ฌด์์์ฑ์ ์ถฉ๋ถํ ์ถฉ๋ ์ ํญ์ ์ ๊ณตํฉ๋๋ค.
- ํ์์คํฌํ ๊ตฌ์ฑ ์์: ์ ํ ํ์์คํฌํ๋ ์๊ฐ ๊ธฐ๋ฐ ํํฐ๋ง ๋ฐ ๋ฒ์ ์ฟผ๋ฆฌ๋ฅผ ์ฝ๊ฒ ์ํํ ์ ์์ต๋๋ค.
- MAC ์ฃผ์/๊ฐ์ธ ์ ๋ณด ๋ฌธ์ ์์: ํธ์คํธ ํน์ ์๋ณ์๊ฐ ์๋ ๋ฌด์์์ฑ์ ์์กดํฉ๋๋ค.
- Base32 ์ธ์ฝ๋ฉ: ์ข ์ข ํ์ค UUID 16์ง์ ๋ฌธ์์ด๋ณด๋ค ๋ ์ฝคํฉํธํ๊ณ URL ์์ ํ 26์ Base32 ๋ฌธ์์ด๋ก ํ์๋ฉ๋๋ค.
- ์ด์ : UUIDv4์ ์ฃผ์ ๋จ์ (์ ๋ ฌ ๋ถ๊ฐ๋ฅ์ฑ)์ ํด๊ฒฐํ๋ฉด์ ๊ฐ์ (๋ถ์ฐ ์์ฑ, ๊ณ ์ ์ฑ, ๋ชจํธ์ฑ)์ ์ ์งํฉ๋๋ค. ๊ณ ์ฑ๋ฅ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ธฐ๋ณธ ํค์ ๋ํ ๊ฐ๋ ฅํ ๊ฒฝ์์์ ๋๋ค.
- ์ฌ์ฉ ์ฌ๋ก: ์ด๋ฒคํธ ์คํธ๋ฆผ, ๋ก๊ทธ ํญ๋ชฉ, ๋ถ์ฐ ๊ธฐ๋ณธ ํค, ๊ณ ์ ํ๊ณ ์ ๋ ฌ ๊ฐ๋ฅํ๋ฉฐ ๋ฌด์์ ์๋ณ์๊ฐ ํ์ํ ๋ชจ๋ ๊ณณ.
Snowflake ID: ๋ถ์ฐ, ์ ๋ ฌ ๊ฐ๋ฅ, ๊ณ ์ฉ๋
์๋ Twitter์์ ๊ฐ๋ฐํ Snowflake ID๋ ๊ณ ์ ์ฑ๊ณผ ์ ๋ ฌ ๊ฐ๋ฅ์ฑ์ด ๋ชจ๋ ์ค์ํ๊ณ ๋ ์์ ID ํฌ๊ธฐ๊ฐ ์ ์ฉํ ๋งค์ฐ ๋์ ๋ณผ๋ฅจ์ ๋ถ์ฐ ํ๊ฒฝ์ ์ํด ์ค๊ณ๋ 64๋นํธ ๊ณ ์ ์๋ณ์์ ๋๋ค.
- ๊ตฌ์กฐ: ์ผ๋ฐ์ ์ธ Snowflake ID๋ ๋ค์์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
- ํ์์คํฌํ(41๋นํธ): ์ฌ์ฉ์ ์ง์ ์ํฌํฌ ์ดํ ๋ฐ๋ฆฌ์ด(์: Twitter์ ์ํฌํฌ๋ 2010-11-04 01:42:54 UTC์). ์ด๋ ์ฝ 69๋ ๋์ ID๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ์์ ์ ID(10๋นํธ): ID๋ฅผ ์์ฑํ๋ ์์คํ ๋๋ ํ๋ก์ธ์ค์ ๋ํ ๊ณ ์ ์๋ณ์. ์ด๋ฅผ ํตํด ์ต๋ 1024๊ฐ์ ๊ณ ์ ํ ์์ ์๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ์ํ์ค ๋ฒํธ(12๋นํธ): ๋์ผํ ์์ ์๊ฐ ๋์ผํ ๋ฐ๋ฆฌ์ด ๋ด์ ์์ฑํ ID์ ๋ํด ์ฆ๊ฐํ๋ ์นด์ดํฐ. ์ด๋ฅผ ํตํด ์์ ์๋น ๋ฐ๋ฆฌ์ด๋น 4096๊ฐ์ ๊ณ ์ ํ ID๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ์ฅ์ :
- ํ์ฅ์ฑ์ด ๋์: ๋๊ท๋ชจ ๋ถ์ฐ ์์คํ ์ ์ํด ์ค๊ณ๋์์ต๋๋ค.
- ์๊ฐ์์ผ๋ก ์ ๋ ฌ ๊ฐ๋ฅ: ํ์์คํฌํ ์ ๋์ฌ๋ ์๊ฐ์ ๋ฐ๋ฅธ ์์ฐ์ค๋ฌ์ด ์ ๋ ฌ์ ๋ณด์ฅํฉ๋๋ค.
- ์ฝคํฉํธํจ: 64๋นํธ๋ 128๋นํธ UUID๋ณด๋ค ์์ ์คํ ๋ฆฌ์ง๋ฅผ ์ ์ฝํ๊ณ ์ฑ๋ฅ์ ํฅ์์ํต๋๋ค.
- ์ฌ๋์ด ์ฝ์ ์ ์์(์๋ ์๊ฐ): ํ์์คํฌํ ๊ตฌ์ฑ ์์๋ฅผ ์ฝ๊ฒ ์ถ์ถํ ์ ์์ต๋๋ค.
- ๋จ์ :
- ์์ ์ ID์ ๋ํ ์ค์ ์ง์ค์ ์กฐ์ : ๊ฐ ์์ฑ๊ธฐ์ ๊ณ ์ ํ ์์ ์ ID๋ฅผ ํ ๋นํ๋ ๋ฉ์ปค๋์ฆ์ด ํ์ํ๋ฏ๋ก ์ด์ ๋ณต์ก์ฑ์ด ์ถ๊ฐ๋ ์ ์์ต๋๋ค.
- ํด๋ญ ๋๊ธฐํ: ๋ชจ๋ ์์ ์ ๋ ธ๋์์ ์ ํํ ํด๋ญ ๋๊ธฐํ์ ์์กดํฉ๋๋ค.
- ์ถฉ๋ ๊ฐ๋ฅ์ฑ(์์ ์ ID ์ฌ์ฌ์ฉ): ์์ ์ ID๊ฐ ์ ์คํ๊ฒ ๊ด๋ฆฌ๋์ง ์๊ฑฐ๋ ์์ ์๊ฐ ๋จ์ผ ๋ฐ๋ฆฌ์ด ๋ด์ 4096๊ฐ ์ด์์ ID๋ฅผ ์์ฑํ๋ ๊ฒฝ์ฐ ์ถฉ๋์ด ๋ฐ์ํ ์ ์์ต๋๋ค.
- ์ฌ์ฉ ์ฌ๋ก: ๋๊ท๋ชจ ๋ถ์ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค, ๋ฉ์์ง ํ, ์์ ๋ฏธ๋์ด ํ๋ซํผ, ๋ง์ ์๋ฒ์์ ๊ณ ์ ํ๊ณ ์ ๋ ฌ ๊ฐ๋ฅํ๋ฉฐ ๋น๊ต์ ์ฝคํฉํธํ ID๊ฐ ํ์ํ ๋ชจ๋ ์์คํ .
KSUID: K-์ ๋ ฌ ๊ฐ๋ฅ ๊ณ ์ ID
KSUID๋ ULID์ ์ ์ฌํ์ง๋ง ๊ตฌ์กฐ๊ฐ ๋ค๋ฅด๊ณ ํฌ๊ธฐ๊ฐ ์ฝ๊ฐ ๋ ํฐ(20๋ฐ์ดํธ ๋๋ 160๋นํธ) ๋ ๋ค๋ฅธ ์ธ๊ธฐ ์๋ ๋์์ ๋๋ค. ์ ๋ ฌ ๊ฐ๋ฅ์ฑ์ ์ฐ์ ์ํ๊ณ ํ์์คํฌํ์ ๋ฌด์์์ฑ์ ํฌํจํฉ๋๋ค.
- ๊ตฌ์กฐ: 32๋นํธ ํ์์คํฌํ(Unix ์ํฌํฌ, ์ด)์ ๊ทธ ๋ค์ 128๋นํธ์ ์ํธํ์ ์ผ๋ก ๊ฐ๋ ฅํ ๋ฌด์์์ฑ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
- ์ด์ :
- ์ฌ์ ์์ผ๋ก ์ ๋ ฌ ๊ฐ๋ฅ: ULID์ ์ ์ฌํ๊ฒ ์๊ฐ์ ๋ฐ๋ผ ์์ฐ์ค๋ฝ๊ฒ ์ ๋ ฌ๋ฉ๋๋ค.
- ๋์ ์ถฉ๋ ์ ํญ: 128๋นํธ์ ๋ฌด์์์ฑ์ ๊ทนํ ๋ฎ์ ์ถฉ๋ ํ๋ฅ ์ ์ ๊ณตํฉ๋๋ค.
- ์ฝคํฉํธํ ํํ: ์ข ์ข Base62๋ก ์ธ์ฝ๋ฉ๋์ด 27์ ๋ฌธ์์ด์ด ๋ฉ๋๋ค.
- ์ค์ ์กฐ์ ์์: ๋ ๋ฆฝ์ ์ผ๋ก ์์ฑํ ์ ์์ต๋๋ค.
- ULID์์ ์ฐจ์ด์ : KSUID์ ํ์์คํฌํ๋ ์ด ๋จ์๋ก, ULID์ ๋ฐ๋ฆฌ์ด๋ณด๋ค ์ธ๋ถ์ฑ์ด ๋ฎ์ง๋ง ๋ฌด์์ ๊ตฌ์ฑ ์์๋ ๋ ํฝ๋๋ค(128๋นํธ ๋ 80๋นํธ).
- ์ฌ์ฉ ์ฌ๋ก: ULID์ ์ ์ฌํจ - ๋ถ์ฐ ๊ธฐ๋ณธ ํค, ์ด๋ฒคํธ ๋ก๊น , ์์ฐ์ค๋ฌ์ด ์ ๋ ฌ ์์์ ๋์ ๋ฌด์์์ฑ์ด ์ค์์๋๋ ์์คํ .
์๋ณ์ ์ ๋ต ์ ํ์ ๋ํ ์ค์ง์ ์ธ ๊ณ ๋ ค ์ฌํญ
์ฌ๋ฐ๋ฅธ ๊ณ ์ ์๋ณ์ ์ ๋ต์ ์ ํํ๋ ๊ฒ์ ๋ชจ๋ ๊ฒฝ์ฐ์ ์ ์ฉ๋๋ ๋จ์ผ ๊ฒฐ์ ์ด ์๋๋๋ค. ํนํ ๊ธ๋ก๋ฒ ์ปจํ ์คํธ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ํน์ ์๊ตฌ ์ฌํญ์ ๋ง๋ ์ฌ๋ฌ ์์๋ฅผ ๊ท ํ ์๊ฒ ์กฐ์ ํด์ผ ํฉ๋๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ๋ฑ์ฑ ๋ฐ ์ฑ๋ฅ
์ด๊ฒ์ ์ข ์ข ๊ฐ์ฅ ์ค์ํ ์ค์ง์ ์ธ ๊ณ ๋ ค ์ฌํญ์ ๋๋ค.
- ๋ฌด์์์ฑ ๋ ์ ๋ ฌ ๊ฐ๋ฅ์ฑ: UUIDv4์ ์์ํ ๋ฌด์์์ฑ์ผ๋ก ์ธํด B-ํธ๋ฆฌ ์ธ๋ฑ์ค์ ์ฑ๋ฅ์ด ์ ํ๋ ์ ์์ต๋๋ค. ๋ฌด์์ UUID๊ฐ ์ฝ์ ๋๋ฉด ํนํ ๋์ ์ฐ๊ธฐ ๋ถํ ์ค์ ๋น๋ฒํ ํ์ด์ง ๋ถํ ๋ฐ ์บ์ ๋ฌดํจํ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ์ด๋ ์ฐ๊ธฐ ์์ ์ ํฌ๊ฒ ๋ฆ์ถ๊ณ ์ธ๋ฑ์ค๊ฐ ์กฐ๊ฐํ๋จ์ ๋ฐ๋ผ ์ฝ๊ธฐ ์ฑ๋ฅ์๋ ์ํฅ์ ์ค ์ ์์ต๋๋ค.
- ์์ฐจ์ /์ ๋ ฌ ๊ฐ๋ฅ ID: UUIDv1(๊ฐ๋ ์ ์ผ๋ก), UUIDv6, UUIDv7, ULID, Snowflake ID ๋ฐ KSUID์ ๊ฐ์ ์๋ณ์๋ ์๊ฐ ์์๋๋ก ์ ๋ ฌ๋๋๋ก ์ค๊ณ๋์์ต๋๋ค. ๊ธฐ๋ณธ ํค๋ก ์ฌ์ฉํ๋ฉด ์ ID๊ฐ ์ผ๋ฐ์ ์ผ๋ก ์ธ๋ฑ์ค์ "๋"์ ์ถ๊ฐ๋์ด ์ฐ์์ ์ธ ์ฐ๊ธฐ, ๋ ์ ์ ํ์ด์ง ๋ถํ , ๋ ๋์ ์บ์ ํ์ฉ๋ฅ ๋ฐ ํฌ๊ฒ ํฅ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฑ๋ฅ์ผ๋ก ์ด์ด์ง๋๋ค. ์ด๋ ๋์ฉ๋ ํธ๋์ญ์ ์์คํ ์ ํนํ ์ค์ํฉ๋๋ค.
- ์ ์ ๋ UUID ํฌ๊ธฐ: UUID๋ 128๋นํธ(16๋ฐ์ดํธ)์ธ ๋ฐ๋ฉด ์๋ ์ฆ๊ฐ ์ ์๋ ์ผ๋ฐ์ ์ผ๋ก 64๋นํธ(8๋ฐ์ดํธ)์ ๋๋ค. ์ด๋ฌํ ์ฐจ์ด๋ ์คํ ๋ฆฌ์ง, ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ ๋ฐ ๋คํธ์ํฌ ์ ์ก์ ์ํฅ์ ์ฃผ์ง๋ง ์ต์ ์์คํ ์์๋ ์ข ์ข ์ด๋ ์ ๋ ์ํ๋ฉ๋๋ค. ๋งค์ฐ ๋์ ์ฑ๋ฅ ์๋๋ฆฌ์ค์ ๊ฒฝ์ฐ Snowflake์ ๊ฐ์ 64๋นํธ ID๊ฐ ์ด์ ์ ์ ๊ณตํ ์ ์์ต๋๋ค.
์ถฉ๋ ํ๋ฅ ๋ ์ค์ฉ์ฑ
UUIDv4์ ์ด๋ก ์ ์ธ ์ถฉ๋ ํ๋ฅ ์ ๋งค์ฐ ๋ฎ์ง๋ง ๊ฒฐ์ฝ 0์ด ์๋๋๋ค. ๋๋ถ๋ถ์ ๋น์ฆ๋์ค ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ด ํ๋ฅ ์ ์ค์ ๋ก ๋ฌด์ํ ์ ์์ ์ ๋๋ก ๋ฎ์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด๋น ์์ญ์ต ๊ฐ์ ์ํฐํฐ๋ฅผ ์ฒ๋ฆฌํ๊ฑฐ๋ ๋จ์ผ ์ถฉ๋๋ก ์ธํด ์น๋ช ์ ์ธ ๋ฐ์ดํฐ ์์ ๋๋ ๋ณด์ ์๋ฐ์ด ๋ฐ์ํ ์ ์๋ ์์คํ ์์๋ ๋ ๊ฒฐ์ ์ ์ด๊ฑฐ๋ ์ํ์ค ๋ฒํธ ๊ธฐ๋ฐ ์ ๊ทผ ๋ฐฉ์์ด ๊ณ ๋ ค๋ ์ ์์ต๋๋ค.
๋ณด์ ๋ฐ ์ ๋ณด ๊ณต๊ฐ
- ๊ฐ์ธ ์ ๋ณด ๋ณดํธ: UUIDv1์ MAC ์ฃผ์์ ๋ํ ์์กด์ฑ์ผ๋ก ์ธํด ํนํ ์ด๋ฌํ ID๊ฐ ์ธ๋ถ์ ์ผ๋ก ๋ ธ์ถ๋๋ ๊ฒฝ์ฐ ๊ฐ์ธ ์ ๋ณด ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค. ๊ณต๊ฐ์ ์ผ๋ก ๋ ธ์ถ๋ ์๋ณ์์๋ ์ผ๋ฐ์ ์ผ๋ก UUIDv1์ ํผํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
- ๋ชจํธ์ฑ: UUIDv4, ULID ๋ฐ KSUID๋ ์๋นํ ๋ฌด์์ ๊ตฌ์ฑ ์์๋ก ์ธํด ํ์ํ ๋ชจํธ์ฑ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๊ณต๊ฒฉ์๊ฐ ๋ฆฌ์์ค๋ฅผ ์ฝ๊ฒ ์ถ์ธกํ๊ฑฐ๋ ์ด๊ฑฐํ๋ ๊ฒ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค(์:
/users/1
,/users/2
์ ์ก์ธ์คํ๋ ค๊ณ ์๋). ๊ฒฐ์ ์ ID(UUIDv3/v5 ๋๋ ์์ฐจ์ ์ ์์ ๊ฐ์)๋ ๋ชจํธ์ฑ์ด ๋ํฉ๋๋ค.
๋ถ์ฐ ํ๊ฒฝ์์์ ํ์ฅ์ฑ
- ๋ถ์ฐ ์์ฑ: ๋ชจ๋ UUID ๋ฒ์ (์์ ์ ID ์กฐ์ ์ด ํ์ํ Snowflake ID ์ ์ธ)์ ํต์ ์์ด ๋ชจ๋ ๋ ธ๋ ๋๋ ์๋น์ค์์ ๋ ๋ฆฝ์ ์ผ๋ก ์์ฑํ ์ ์์ต๋๋ค. ์ด๋ ๋ง์ดํฌ๋ก ์๋น์ค ์ํคํ ์ฒ ๋ฐ ์ง๋ฆฌ์ ์ผ๋ก ๋ถ์ฐ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ํฐ ์ด์ ์ ๋๋ค.
- ์์ ์ ID ๊ด๋ฆฌ: Snowflake์ ์ ์ฌํ ID์ ๊ฒฝ์ฐ ๊ธ๋ก๋ฒ ์๋ฒ ํ๋ฆฟ์์ ๊ณ ์ ํ ์์ ์ ID๋ฅผ ๊ด๋ฆฌํ๊ณ ํ ๋นํ๋ ๊ฒ์ด ์ด์์์ ๋ฌธ์ ๊ฐ ๋ ์ ์์ต๋๋ค. ์ด์ ๋ํ ์ ๋ต์ด ๊ฐ๋ ฅํ๊ณ ๋ด๊ฒฐํจ์ฑ์ด ์๋์ง ํ์ธํ์ญ์์ค.
- ํด๋ญ ๋๊ธฐํ: ์๊ฐ ๊ธฐ๋ฐ ID(UUIDv1, UUIDv6, UUIDv7, ULID, Snowflake, KSUID)๋ ์ ํํ ์์คํ ํด๋ญ์ ์์กดํฉ๋๋ค. ์ ์ญ์ ์ผ๋ก ๋ถ์ฐ๋ ์์คํ ์์๋ ID ์์ ์ง์ ๋๋ ํด๋ญ ์คํ๋ก ์ธํ ์ถฉ๋ ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด NTP(Network Time Protocol) ๋๋ PTP(Precision Time Protocol)๊ฐ ํด๋ญ ๋๊ธฐํ๋ฅผ ๋ณด์ฅํ๋ ๋ฐ ํ์์ ์ ๋๋ค.
๊ตฌํ ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
๋๋ถ๋ถ์ ์ต์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ํ๋ ์์ํฌ๋ UUID ์์ฑ์ ์ํ ๊ฐ๋ ฅํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด๋ฌํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ผ๋ฐ์ ์ผ๋ก RFC ํ์ค ์ค์๋ฅผ ๋ณด์ฅํ๊ณ ์ข ์ข ULID ๋๋ KSUID์ ๊ฐ์ ๋์์ ๋ํ ๋์ฐ๋ฏธ๋ฅผ ์ ๊ณตํ๋ฉด์ ๋ค์ํ ๋ฒ์ ์ ๋ณต์ก์ฑ์ ์ฒ๋ฆฌํฉ๋๋ค. ์ ํํ ๋ ๋ค์์ ๊ณ ๋ คํ์ญ์์ค.
- ์ธ์ด ์ํ๊ณ: Python์
uuid
๋ชจ๋, Java์java.util.UUID
, JavaScript์crypto.randomUUID()
, Go์github.com/google/uuid
๋ฑ. - ํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ: ULID, KSUID ๋ฐ Snowflake ID์ ๊ฒฝ์ฐ ํจ์จ์ ์ด๊ณ ์์ ์ ์ธ ๊ตฌํ์ ์ ๊ณตํ๋ ํ๋ฅญํ ์ปค๋ฎค๋ํฐ ์ค์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.
- ๋ฌด์์์ฑ ํ์ง: ๋ฌด์์์ฑ์ ์์กดํ๋ ๋ฒ์ (v4, v7, ULID, KSUID)์ ๊ฒฝ์ฐ ์ ํํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ฌ์ฉํ๋ ๊ธฐ๋ณธ ๋์ ์์ฑ๊ธฐ๊ฐ ์ํธํ์ ์ผ๋ก ๊ฐ๋ ฅํ์ง ํ์ธํ์ญ์์ค.
๊ธ๋ก๋ฒ ๊ตฌํ์ ์ํ ๋ชจ๋ฒ ์ฌ๋ก
๊ธ๋ก๋ฒ ์ธํ๋ผ ์ ์ฒด์ ๊ณ ์ ์๋ณ์ ์ ๋ต์ ๋ฐฐํฌํ ๋๋ ๋ค์ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๊ณ ๋ คํ์ญ์์ค.
- ์๋น์ค ์ ๋ฐ์ ๊ฑธ์น ์ผ๊ด๋ ์ ๋ต: ์กฐ์ง ์ ์ฒด์์ ๋จ์ผ ๋๋ ์ ์ ์๋ ๋ช ๊ฐ์ง ์๋ณ์ ์์ฑ ์ ๋ต์ ํ์คํํ์ญ์์ค. ์ด๋ ๊ฒ ํ๋ฉด ๋ณต์ก์ฑ์ด ์ค์ด๋ค๊ณ ์ ์ง ๊ด๋ฆฌ ๊ฐ๋ฅ์ฑ์ด ํฅ์๋๋ฉฐ ๋ค์ํ ์๋น์ค ๊ฐ์ ์ํธ ์ด์ฉ์ฑ์ด ๋ณด์ฅ๋ฉ๋๋ค.
- ์๊ฐ ๋๊ธฐํ ์ฒ๋ฆฌ: ๋ชจ๋ ์๊ฐ ๊ธฐ๋ฐ ์๋ณ์(UUIDv1, v6, v7, ULID, Snowflake, KSUID)์ ๊ฒฝ์ฐ ๋ชจ๋ ์์ฑ ๋ ธ๋์์ ์๊ฒฉํ ํด๋ญ ๋๊ธฐํ๋ ํํํ ์ ์์ต๋๋ค. ๊ฐ๋ ฅํ NTP/PTP ๊ตฌ์ฑ ๋ฐ ๋ชจ๋ํฐ๋ง์ ๊ตฌํํ์ญ์์ค.
- ๋ฐ์ดํฐ ๊ฐ์ธ ์ ๋ณด ๋ณดํธ ๋ฐ ์ต๋ช ํ: ์ ํํ ์๋ณ์ ์ ํ์ด ์ค์ํ ์ ๋ณด๋ฅผ ์ ์ถํ๋์ง ํญ์ ํ๊ฐํ์ญ์์ค. ๊ณต๊ฐ ๋ ธ์ถ์ด ๊ฐ๋ฅํ ๊ฒฝ์ฐ ํธ์คํธ ํน์ ์ธ๋ถ ์ ๋ณด(์: UUIDv4, UUIDv7, ULID, KSUID)๋ฅผ ํฌํจํ์ง ์๋ ๋ฒ์ ์ ์ฐ์ ์ํ์ญ์์ค. ๋งค์ฐ ์ค์ํ ๋ฐ์ดํฐ์ ๊ฒฝ์ฐ ํ ํฐํ ๋๋ ์ํธํ๋ฅผ ๊ณ ๋ คํ์ญ์์ค.
- ํ์ ํธํ์ฑ: ๊ธฐ์กด ์๋ณ์ ์ ๋ต์์ ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ๊ฒฝ์ฐ ํ์ ํธํ์ฑ์ ๊ณํํ์ญ์์ค. ์ฌ๊ธฐ์๋ ์ ํ ๊ธฐ๊ฐ ๋์ ์ด์ ๋ฐ ์ ID ์ ํ์ ๋ชจ๋ ์ง์ํ๊ฑฐ๋ ๊ธฐ์กด ๋ฐ์ดํฐ์ ๋ํ ๋ง์ด๊ทธ๋ ์ด์ ์ ๋ต์ ๊ณ ์ํ๋ ๊ฒ์ด ํฌํจ๋ ์ ์์ต๋๋ค.
- ๋ฌธ์ํ: ๋ฒ์ , ๊ทผ๊ฑฐ ๋ฐ ์์ ์ ID ํ ๋น ๋๋ ํด๋ญ ๋๊ธฐํ์ ๊ฐ์ ๋ชจ๋ ์ด์ ์๊ตฌ ์ฌํญ์ ํฌํจํ์ฌ ์ ํํ ID ์์ฑ ์ ๋ต์ ๋ช ํํ๊ฒ ๋ฌธ์ํํ์ฌ ์ ์ธ๊ณ์ ๋ชจ๋ ๊ฐ๋ฐ ๋ฐ ์ด์ ํ์์ ์ก์ธ์คํ ์ ์๋๋ก ํฉ๋๋ค.
- ์์ง ์ผ์ด์ค ํ ์คํธ: ๋์์ฑ์ด ๋์ ํ๊ฒฝ, ํด๋ญ ์กฐ์ ๋ฐ ๋ค์ํ ๋คํธ์ํฌ ์กฐ๊ฑด์์ ID ์์ฑ์ ์๊ฒฉํ๊ฒ ํ ์คํธํ์ฌ ๊ฒฌ๊ณ ์ฑ๊ณผ ์ถฉ๋ ์ ํญ์ ๋ณด์ฅํฉ๋๋ค.
๊ฒฐ๋ก : ๊ฐ๋ ฅํ ์๋ณ์๋ก ์์คํ ๊ฐํ
๊ณ ์ ์๋ณ์๋ ์ต์ ํ์ฅ ๊ฐ๋ฅํ๊ณ ๋ถ์ฐ๋ ์์คํ ์ ๊ธฐ๋ณธ ๊ตฌ์ฑ ์์์ ๋๋ค. UUIDv4์ ํด๋์ํ ๋ฌด์์์ฑ์์๋ถํฐ ์๋กญ๊ฒ ๋ ์ค๋ฅด๋ ์ ๋ ฌ ๊ฐ๋ฅํ๊ณ ์๊ฐ ๋ฏผ๊ฐํ UUIDv7, ULID, ๊ทธ๋ฆฌ๊ณ ์ฝคํฉํธํ Snowflake ID์ ์ด๋ฅด๊ธฐ๊น์ง ์ฌ์ฉํ ์ ์๋ ์ ๋ต์ ๋ค์ํ๊ณ ๊ฐ๋ ฅํฉ๋๋ค. ์ ํ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฑ๋ฅ, ๊ฐ์ธ ์ ๋ณด ๋ณดํธ, ํ์ฅ์ฑ ๋ฐ ์ด์ ๋ณต์ก์ฑ์ ๋ํ ํน์ ์๊ตฌ ์ฌํญ์ ์ ์คํ๊ฒ ๋ถ์ํ๋ ๋ฐ ๋ฌ๋ ค ์์ต๋๋ค. ์ด๋ฌํ ์ ๋ต์ ๊น์ด ์ดํดํ๊ณ ๊ธ๋ก๋ฒ ๊ตฌํ์ ์ํ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ ์ฉํจ์ผ๋ก์จ ๊ณ ์ ํ ๋ฟ๋ง ์๋๋ผ ์์คํ ์ ์ํคํ ์ฒ ๋ชฉํ์ ์๋ฒฝํ๊ฒ ์ผ์นํ๋ ์๋ณ์๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐํํ์ฌ ์ ์ธ๊ณ์์ ์ํํ๊ณ ์์ ์ ์ธ ์ด์์ ๋ณด์ฅํ ์ ์์ต๋๋ค.