Design Unique ID Generation For Distributed System

์œ ์ผ ID๋ฅผ ์œ„ํ•ด ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ auto_increment ๋ฒ ์ด์Šค๋ฅผ ๊ธฐ๋ณธ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์กด์žฌํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์ด ๋ฐฉ๋ฒ•์€ ํŠธ๋ž˜ํ”ฝ์ด ๋งค์šฐ ๋†’์œผ๋ฉด ๊ฐ’ ์ƒ์„ฑ ๋ถ€ํ•˜๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ๊ณ , ๋ถ„์‚ฐ ์‹œ์Šคํ…œ ํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์ ์ ˆํ•˜์ง€ ์•Š๋‹ค.

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ•œ ๋Œ€์ธ ๊ฒฝ์šฐ: ์œ ์ผํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋ฒ„์— ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๋‹จ์ผ ์ง€์  ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ID ํ• ๋‹น ์ž์ฒด๊ฐ€ ์ค‘๋‹จ๋  ์ˆ˜ ์žˆ๋‹ค.

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฌ๋Ÿฌ ๋Œ€์ธ ๊ฒฝ์šฐ: ๊ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ƒ์„ฑ๋œ ID๊ฐ€ ๊ฒน์น˜์ง€ ์•Š๋„๋ก ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ์ง€์—ฐ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ถ„์‚ฐ ํ™˜๊ฒฝ์—์„œ ์œ ์ผ ID ์ƒ์„ฑ ์‹œ์Šคํ…œ์„ ์„ค๊ณ„ํ•  ๋•Œ ๋‹ค์Œ์˜ ์š”๊ตฌ์‚ฌํ•ญ์— ๋งž์ถฐ ์„ค๊ณ„ํ•ด ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

  • ์œ ์ผ์„ฑ

  • ์ˆซ์ž๋กœ๋งŒ ๊ตฌ์„ฑ

  • 64๋น„ํŠธ๋กœ ํ‘œํ˜„ ๊ฐ€๋Šฅ

  • ๋ฐœ๊ธ‰ ๋‚ ์งœ์— ๋”ฐ๋ฅธ ์ •๋ ฌ ๊ฐ€๋Šฅ

  • ์ดˆ๋‹น 10,000๊ฐœ ๋ฐœ๊ธ‰ ๊ฐ€๋Šฅ

์œ ์ผ ID ์ƒ์„ฑ ๋ฐฉ๋ฒ•

์œ ์ผ ID ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์—ฌ๋Ÿฌ ๊ฐ€์ง€๊ฐ€ ์กด์žฌํ•œ๋‹ค.

  1. ๋‹ค์ค‘ ๋งˆ์Šคํ„ฐ ๋ณต์ œ(Multi-Master Replication)

    • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ auto_increment ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜์—ฌ 1๋งŒํผ ์ฆ๊ฐ€ ์‹œํ‚ค๋Š” ๊ฒƒ์ด ์•„๋‹Œ, k๋งŒํผ ์ฆ๊ฐ€ ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•(k=๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ์„œ๋ฒ„ ์ˆ˜)

    • ์œ ์ผ์„ฑ ๋ณด์žฅ

    • ์‹œ๊ฐ„์— ๋”ฐ๋ฅธ ์ •๋ ฌ ๋ถˆ๊ฐ€๋Šฅ / ๊ทœ๋ชจ ํ™•์žฅ ์–ด๋ ค์›€

  2. UUIDv4

    • ์„œ๋ฒ„์—์„œ ์ƒ์„ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ƒ์„ฑ ๋ถ€ํ•˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Œ

    • ์ •๋ ฌ๋œ ๊ฐ’์œผ๋กœ ์ƒ์„ฑ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€ ๋ฐ ์‚ญ์ œ ์‹œ ์„ฑ๋Šฅ ์ €ํ•˜(ํด๋Ÿฌ์Šคํ„ฐํ˜• ์ธ๋ฑ์Šค)

    • 36๊ธ€์ž ๋ฌธ์ž์—ด๋กœ ๊ตฌ์„ฑ๋˜์–ด(๋ฐ”์ด๋„ˆ๋ฆฌ ๋ณ€ํ™˜ ์‹œ 16๋ฐ”์ดํŠธ) ์ €์žฅ ๊ณต๊ฐ„์ด ํผ

    • ์œ ์ผ์„ฑ ๋ณด์žฅ / ์„œ๋ฒ„ ์‚ฌ์ด ์กฐ์œจ์ด ํ•„์š” ์—†์–ด ๋™๊ธฐํ™” ์ด์Šˆ X / ๊ทœ๋ชจ ํ™•์žฅ ์šฉ์ด

    • ๋ฌธ์ž๊ฐ€ ํฌํ•จ ๋จ / ๋ฐœ๊ธ‰ ๋‚ ์งœ์— ๋”ฐ๋ฅธ ์ •๋ ฌ์ด ๋ถˆ๊ฐ€๋Šฅ

  3. UUIDv7

    • ์•ž์ž๋ฆฌ์— ํƒ€์ž„์Šคํƒฌํ”„๊ฐ€ ๋“ค์–ด๊ฐ€ ์‹œ๊ฐ„ ๊ธฐ์ค€ ์ •๋ ฌ๋œ ์ˆœ์„œ๋กœ ์ƒ์„ฑ ๊ฐ€๋Šฅ

    • ์ •๋ ฌ๋œ ๊ฐ’์œผ๋กœ ์ƒ์„ฑ๋˜๊ธฐ ๋•Œ๋ฌธ์— ํด๋Ÿฌ์Šคํ„ฐํ˜• ์ธ๋ฑ์Šค์— ์ ํ•ฉ

    • ์—ฌ์ „ํžˆ 36๊ธ€์ž ๋ฌธ์ž์—ด๋กœ ๊ตฌ์„ฑ๋˜์–ด ์ €์žฅ ๊ณต๊ฐ„์ด ํผ(๊ทœ๋ชจ๊ฐ€ ์ž‘์€ ๊ณณ์—์„  ๋ฌธ์ œ ์—†์œผ๋‚˜, ํ•ด๋‹น ๊ฒฝ์šฐ์—” ์ž๋™ ์ฆ๊ฐ€ ๊ฐ’์„ ์‚ฌ์šฉํ•ด๋„ ๋ฌด๋ฐฉ)

  4. ํ‹ฐ์ผ“ ์„œ๋ฒ„

    • auto_increment ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋ฒ„๋ฅผ ์ค‘์•™ ์ง‘์ค‘ํ˜•์œผ๋กœ ๋ณ„๋„๋กœ ๋‘์–ด ID๋ฅผ ์ƒ์„ฑํ•˜๋„๋ก ํ•˜๋Š” ๋ฐฉ๋ฒ•

    • ์œ ์ผ์„ฑ ๋ณด์žฅ / ์‰ฌ์šด ๊ตฌํ˜„

    • SPOF(Single Point of Failure) ๋ฌธ์ œ ๋ฐœ์ƒ(์—ฌ๋Ÿฌ ํ‹ฐ์ผ“ ์„œ๋ฒ„ ๊ตฌ์ถ• ํ•„์š” -> ๋™๊ธฐํ™” ์ด์Šˆ ๋ฐœ์ƒ ๊ฐ€๋Šฅ)

  5. ์Šค๋…ธ์šฐํ”Œ๋ ˆ์ดํฌ ์ ‘๊ทผ๋ฒ•

    • ์—ฌ๋Ÿฌ ์„น์…˜์œผ๋กœ ๋ถ„ํ•  ๋œ 64๋น„ํŠธ ID๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•

      • 1๋น„ํŠธ: ์‚ฌ์ธ ๋น„ํŠธ / 41๋น„ํŠธ: ํƒ€์ž„์Šคํƒฌํ”„ / 10๋น„ํŠธ: ์žฅ๋น„ ๊ณ ์œ  ๋ฒˆํ˜ธ / 12๋น„ํŠธ: ์ผ๋ จ๋ฒˆํ˜ธ

    • ์œ ์ผ์„ฑ ๋ณด์žฅ / ๋ฐœ๊ธ‰ ๋‚ ์งœ์— ๋”ฐ๋ฅธ ์ •๋ ฌ ๊ฐ€๋Šฅ / ๊ทœ๋ชจ ํ™•์žฅ ์šฉ์ด

    • ๋…ธ๋“œ ID ์ถฉ๋Œ ๋ฌธ์ œ ๋ฐœ์ƒ ๊ฐ€๋Šฅ

์ƒ์„ธ ์„ค๊ณ„

์—ฌ๋Ÿฌ ๋ฐฉ๋ฒ• ์ค‘ ์š”๊ตฌ ์‚ฌํ•ญ์„ ๋งŒ์กฑํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์Šค๋…ธ์šฐํ”Œ๋ ˆ์ดํฌ ์ ‘๊ทผ๋ฒ•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ฐ ๋น„ํŠธ ๋ณ„๋กœ ์ƒ์„ธ ์„ค๋ช…์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • ํƒ€์ž„์Šคํƒฌํ”„: ๊ฐ€์žฅ ๋งŽ์€ ๋น„ํŠธ๋ฅผ ์ฐจ์ง€ํ•˜๋ฉฐ, ์‹œ๊ฐ„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ •๋ ฌ ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•˜๋Š” ์—ญํ• 

    • 41๋น„ํŠธ์˜ ๊ธธ์ด๋Š” ๋ฐ€๋ฆฌ์ดˆ๋กœ ํ™˜์‚ฐ ํ–ˆ์„ ๋•Œ 69๋…„๊ฐ„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

    • ์„œ๋น„์Šค ๊ธฐ์› ์‹œ๊ฐ์„ ๊ธฐ์ค€์œผ๋กœ ์‹œ์ž‘ํ•˜์—ฌ ์˜ค๋ฒ„ํ”Œ๋กœ ๋ฐœ์ƒ ์‹œ์ ์„ ๋Šฆ์ถœ ์ˆ˜ ์žˆ์Œ

    • 69๋…„ ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด ๊ธฐ์› ์‹œ๊ฐ์„ ๋ฐ”๊พธ๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ID ์ฒด๊ณ„๋กœ ๋ณ€๊ฒฝ ํ•„์š”

  • ์žฅ๋น„ ๊ณ ์œ  ๋ฒˆํ˜ธ: ์‹œ์Šคํ…œ ์‹œ์ž‘ ์‹œ ๊ฒฐ์ •

    • 5๋น„ํŠธ: ๋ฐ์ดํ„ฐ ์„ผํ„ฐ ID / 5๋น„ํŠธ: ์„œ๋ฒ„ ID ์‹์œผ๋กœ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ์Œ

    • ์ผ๋ฐ˜์ ์œผ๋กœ ์‹œ์Šคํ…œ ์šด์˜ ์ค‘์—๋Š” ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Œ(์ž˜๋ชป ๋ณ€๊ฒฝ ์‹œ ์ถฉ๋Œ ๋ฐœ์ƒ ๊ฐ€๋Šฅ)

  • ์ผ๋ จ๋ฒˆํ˜ธ: ๊ฐ™์€ ๋ฐ€๋ฆฌ์ดˆ ๋™์•ˆ ํ•˜๋‚˜ ์ด์ƒ์˜ ID๋ฅผ ๋งŒ๋“ค์–ด ๋‚ธ ๊ฒฝ์šฐ๋งŒ 0๋ณด๋‹ค ํฐ ๊ฐ’์œผ๋กœ ์ฆ๊ฐ€(์ตœ๋Œ€ 4096๊ฐœ)

์ถ”๊ฐ€ ๊ณ ๋ ค ์‚ฌํ•ญ

  • ์‹œ๊ณ„ ๋™๊ธฐํ™”(clock synchronization): ๊ฐ ์„œ๋ฒ„๊ฐ€ ์™„๋ฒฝํžˆ ๊ฐ™์€ ์‹œ๊ฐ„์„ ๋ฐ”๋ผ๋ณด์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„ ๊ฐ„ ์‹œ๊ณ„๊ฐ€ ๋™๊ธฐํ™” ๋ฐฉ๋ฒ• ํ•„์š”

  • ์„น์…˜ ๊ธธ์ด ์ตœ์ ํ™”: ๋™์‹œ์„ฑ์ด ๋‚ฎ๊ณ  ์ˆ˜๋ช…์ด ๊ธด ์„œ๋น„์Šค์ธ ๊ฒฝ์šฐ ํƒ€์ž„์Šคํƒฌํ”„ ์ ˆ์˜ ๊ธธ์ด๋ฅผ ๋Š˜๋ฆฌ๊ณ  ์ผ๋ จ๋ฒˆํ˜ธ ๊ธธ์ด๋ฅผ ์ค„์ด๋Š” ๋ฐฉ๋ฒ•์„ ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ์Œ

์ฐธ๊ณ ์ž๋ฃŒ

Last updated

Was this helpful?