๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ฑ… ๋ฆฌ๋ทฐ/๊ฐ€์ƒ ๋ฉด์ ‘ ์‚ฌ๋ก€๋กœ ๋ฐฐ์šฐ๋Š” ๋Œ€๊ทœ๋ชจ ์‹œ์Šคํ…œ ์„ค๊ณ„ ๊ธฐ์ดˆ

[๊ฐ€์ƒ ๋ฉด์ ‘ ์‚ฌ๋ก€๋กœ ๋ฐฐ์šฐ๋Š” ๋Œ€๊ทœ๋ชจ ์‹œ์Šคํ…œ ์„ค๊ณ„ ๊ธฐ์ดˆ] 5. ์•ˆ์ • ํ•ด์‹œ ์„ค๊ณ„

์ฝ์€ ๋‚ ์งœ : 2024.08.26
์ง€์€์ด : ์•Œ๋ ‰์Šค ์‰ฌ
์ถœํŒ์‚ฌ : ์ธ์‚ฌ์ดํŠธ

 

โœ”๏ธ ๊ธฐ์–ตํ•˜๊ณ  ์‹ถ์€ ๋‚ด์šฉ

ํ•ด์‹œ ํ‚ค ์žฌ๋ฐฐ์น˜(rehash) ๋ฌธ์ œ

  • N๊ฐœ์˜ ์บ์‹œ ์„œ๋ฒ„๊ฐ€ ์žˆ์„ ๋•Œ ์„œ๋ฒ„๋“ค์— ๋ถ€ํ•˜๋ฅผ ๊ท ๋“ฑํ•˜๊ฒŒ ๋‚˜๋ˆ„๋Š” ์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ•์€
    • serverIndex = hash(key) % N
    • ํŠน์ • ํ‚ค๊ฐ€ ๋ณด๊ด€๋œ ์„œ๋ฒ„์˜ ์ธ๋ฑ์Šค๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๋ฐฉ๋ฒ•
  • ์ด ๋ฐฉ๋ฒ•์€ ์„œ๋ฒ„ ํ’€์˜ ํฌ๊ธฐ๊ฐ€ ๊ณ ์ •๋˜์–ด ์žˆ์„ ๋•Œ์™€ ๋ฐ์ดํ„ฐ ๋ถ„ํฌ๊ฐ€ ๊ท ๋“ฑํ•  ๋•Œ๋Š” ์ž˜ ๋™์ž‘ํ•œ๋‹ค.
  • ๊ทธ๋Ÿฌ๋‚˜ ์„œ๋ฒ„๊ฐ€ ์ถ”๊ฐ€๋˜๊ฑฐ๋‚˜ ๊ธฐ์กด ์„œ๋ฒ„๊ฐ€ ์‚ญ์ œ๋˜๋Š” ๊ฒฝ์šฐ(์ฆ‰, N ๊ฐ’์ด ๋ฐ”๋€œ), ์„œ๋ฒ„ ์ธ๋ฑ์Šค ๊ฐ’์ด ๋ฐ”๋€Œ๋ฉด์„œ ๋Œ€๊ทœ๋ชจ ์บ์‹œ ๋ฏธ์Šค(cache miss)๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

 

์•ˆ์ • ํ•ด์‹œ(consistent hash)

  • ํ•ด์‹œ ํ…Œ์ด๋ธ” ํฌ๊ธฐ๊ฐ€ ์กฐ์ •๋  ๋•Œ ๊ฑฐ์˜ ๋Œ€๋ถ€๋ถ„์˜ ํ‚ค๋ฅผ ์žฌ๋ฐฐ์น˜ํ•˜๋Š” ์ „ํ†ต์ ์ธ ๋ฐฉ์‹๊ณผ ๋‹ฌ๋ฆฌ, ์•ˆ์ • ํ•ด์‹œ๋Š” ํ‰๊ท ์ ์œผ๋กœ k/n๊ฐœ์˜ ํ‚ค๋งŒ ์žฌ๋ฐฐ์น˜ํ•˜๋Š” ํ•ด์‹œ ๊ธฐ์ˆ ์ด๋‹ค. (k๋Š” ํ‚ค์˜ ๊ฐœ์ˆ˜, n์€ ์Šฌ๋กฏ์˜ ๊ฐœ์ˆ˜)

ํ•ด์‹œ ๊ณต๊ฐ„๊ณผ ํ•ด์‹œ ๋ง

  • x0 ~ xn ๋ฒ”์œ„(ํ•ด์‹œ ํ•จ์ˆ˜์˜ ์ถœ๋ ฅ ๋ฒ”์œ„)์˜ ํ•ด์‹œ ๊ณต๊ฐ„์˜ ์–‘์ชฝ์„ ๊ตฌ๋ถ€๋ ค ์ ‘์œผ๋ฉด ํ•ด์‹œ ๋ง(hash ring)์ด ๋œ๋‹ค.
  • ์„œ๋ฒ„์™€ ํ‚ค๋ฅผ ๊ท ๋“ฑ ๋ถ„ํฌ ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ•ด์‹œ ๋ง์— ๋ฐฐ์น˜ํ•œ๋‹ค.
  • ํ‚ค๊ฐ€ ์ €์žฅ๋  ์„œ๋ฒ„๋Š” ํ‚ค์˜ ์œ„์น˜์—์„œ ๋ง์„ ์‹œ๊ณ„ ๋ฐฉํ–ฅ์œผ๋กœ ํƒ์ƒ‰ํ•˜๋‹ค ๋งŒ๋‚˜๋Š” ์ตœ์ดˆ์˜ ์„œ๋ฒ„์ด๋‹ค.

์„œ๋ฒ„ ์กฐํšŒ/์ถ”๊ฐ€/์‚ญ์ œ

  • ํ•ด์‹œ ๋ง์—์„œ ์–ด๋–ค ํ‚ค๊ฐ€ ์ €์žฅ๋œ ์„œ๋ฒ„๋ฅผ ์ฐพ๋Š” ๋ฐฉ๋ฒ•์€, ํ•ด๋‹น ํ‚ค์˜ ์œ„์น˜๋กœ๋ถ€ํ„ฐ ์‹œ๊ณ„ ๋ฐฉํ–ฅ์œผ๋กœ ๋ง์„ ํƒ์ƒ‰ํ•ด์„œ ๋งŒ๋‚˜๋Š” ์ฒซ๋ฒˆ์งธ ์„œ๋ฒ„์ด๋‹ค.
  • ์„œ๋ฒ„๋ฅผ ์ถ”๊ฐ€ ๋˜๋Š” ์‚ญ์ œํ•˜๋”๋ผ๋„ ์ผ๋ถ€ ํ‚ค๋งŒ ์žฌ๋ฐฐ์น˜ ๋œ๋‹ค. ์ถ”๊ฐ€ ๋˜๋Š” ์‚ญ์ œ๋œ ์„œ๋ฒ„์˜ ๋ฐ˜์‹œ๊ณ„ ๋ฐฉํ–ฅ์— ์žˆ๋Š” ์ตœ์ดˆ ์„œ๋ฒ„๊นŒ์ง€์˜ ํ‚ค๊ฐ€ ์žฌ๋ฐฐ์น˜ ๋œ๋‹ค.

 ์•ˆ์ • ํ•ด์‹œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ์  ๋‘ ๊ฐ€์ง€

  • ์„œ๋ฒ„๋ฅผ ์ถ”๊ฐ€, ์‚ญ์ œํ•˜๊ฒŒ ๋˜๋ฉด ํŒŒํ‹ฐ์…˜(์ธ์ ‘ ์„œ๋ฒ„ ์‚ฌ์ด์˜ ํ•ด์‹œ ๊ณต๊ฐ„) ํฌ๊ธฐ๋ฅผ ๊ท ๋“ฑํ•˜๊ฒŒ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ํ‚ค์˜ ๊ท ๋“ฑ ๋ถ„ํฌ๋ฅผ ๋‹ฌ์„ฑํ•˜๊ธฐ ์–ด๋ ต๋‹ค.

๊ฐ€์ƒ ๋…ธ๋“œ(virtual node)

  • ์‹ค์ œ ๋…ธ๋“œ ๋˜๋Š” ์„œ๋ฒ„๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋…ธ๋“œ. ํ•˜๋‚˜์˜ ์„œ๋ฒ„๋Š” ๋ง ์œ„์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ฐ€์ƒ ๋…ธ๋“œ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.
  • ์ด๋กœ์จ ํ•˜๋‚˜์˜ ์„œ๋ฒ„๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํŒŒํ‹ฐ์…˜์„ ๊ด€๋ฆฌํ•˜๊ฒŒ ๋œ๋‹ค.
  • ํ‚ค์˜ ์œ„์น˜๋กœ๋ถ€ํ„ฐ ์‹œ๊ณ„ ๋ฐฉํ–ฅ์œผ๋กœ ๋ง์„ ํƒ์ƒ‰ํ•˜๋‹ค ๋งŒ๋‚˜๋Š” ์ตœ์ดˆ์˜ ๊ฐ€์ƒ ๋…ธ๋“œ๊ฐ€ ํ•ด๋‹น ํ‚ค๊ฐ€ ์ €์žฅ๋  ์„œ๋ฒ„๊ฐ€ ๋œ๋‹ค.
  • ๊ฐ€์ƒ ๋…ธ๋“œ์˜ ๊ฐœ์ˆ˜๋ฅผ ๋Š˜๋ฆฌ๋ฉด ํ‚ค์˜ ๋ถ„ํฌ๊ฐ€ ์ ์  ๋” ๊ท ๋“ฑํ•ด์ง„๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ฐ€์ƒ ๋…ธ๋“œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๊ณต๊ฐ„์— ๋Œ€ํ•œ tradeoff๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

 

์•ˆ์ • ํ•ด์‹œ์˜ ์ด์ 

  • ์„œ๋ฒ„ ์ถ”๊ฐ€/์‚ญ์ œ ์‹œ ์žฌ๋ฐฐ์น˜ ๋˜๋Š” ํ‚ค์˜ ์ˆ˜ ์ตœ์†Œํ™”
  • ๋ฐ์ดํ„ฐ์˜ ๊ท ๋“ฑ ๋ถ„ํฌ๋กœ ์ˆ˜ํ‰์  ๊ทœ๋ชจ ํ™•์žฅ ๋‹ฌ์„ฑํ•˜๊ธฐ ์‰ฌ์›€
  • ํ•ซ์ŠคํŒŸ(hotspot) ํ‚ค ๋ฌธ์ œ๋ฅผ ์ค„์ž„

 

โœ”๏ธ ์˜ค๋Š˜ ์ฝ์€ ์†Œ๊ฐ

1์žฅ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ทœ๋ชจ ํ™•์žฅ ๋ถ€๋ถ„์—์„œ ์–ธ๊ธ‰๋œ ๋ฐ์ดํ„ฐ ์žฌ ์ƒค๋”ฉ๊ณผ ์•ˆ์ • ํ•ด์‹œ ๊ธฐ๋ฒ•์„ ์—ฐ๊ด€์ง€์–ด ์ •๋ฆฌํ•ด๋ณด์ž๋ฉด, ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์ƒค๋“œ ์†Œ์ง„(shard exhaustion) ํ˜„์ƒ์ด ๋ฐœ์ƒํ•˜๋ฉด ์ƒค๋“œ ํ‚ค๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์žฌ๋ฐฐ์น˜ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์žฌ์ƒค๋”ฉ).
  • ์ด๋•Œ ์•ˆ์ • ํ•ด์‹œ ๊ธฐ๋ฒ•์„ ํ™œ์šฉํ•˜๋ฉด ๋ฐ์ดํ„ฐ ๋ถ„ํฌ์˜ ๊ท ํ˜•์„ ์œ ์ง€ํ•จ๊ณผ ๋™์‹œ์— ์žฌ๋ฐฐ์น˜ ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ตœ์†Œํ•˜๋ฉด์„œ ์žฌ์ƒค๋”ฉ์„ ํšจ์œจ์ ์œผ๋กœ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

โœ”๏ธ ๊ถ๊ธˆํ•œ ๋‚ด์šฉ & ์ž˜ ์ดํ•ด๋˜์ง€ ์•Š๋Š” ๋‚ด์šฉ

์บ์‹œ ๋ฏธ์Šค(cache miss)

  • ์š”์ฒญํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์บ์‹œ์—์„œ ๋ฐœ๊ฒฌ๋˜๋ฉด ์บ์‹œ ํžˆํŠธ(cache hit), ๋ฐœ๊ฒฌ๋˜์ง€ ์•Š์œผ๋ฉด ์บ์‹œ ๋ฏธ์Šค(cache miss)๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
  • ์บ์‹œ ๋ฏธ์Šค์˜ ์œ ํ˜•
    • Cold Miss : ๋ฐ์ดํ„ฐ์— ์ฒ˜์Œ ์•ก์„ธ์Šคํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์บ์‹œ ๋ฏธ์Šค
    • Capacity Miss : ์บ์‹œ์˜ ํฌ๊ธฐ๊ฐ€ ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์•„์„œ ๋ฐœ์ƒํ•˜๋Š” ์บ์‹œ ๋ฏธ์Šค
    • Conflict Miss : ์บ์‹œ๊ฐ€ ํŠน์ • ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์œ„์น˜๋ฅผ ๊ฒฐ์ •ํ•  ๋•Œ, ์„œ๋กœ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๊ฐ€ ๋™์ผํ•œ ์บ์‹œ ์œ„์น˜์— ๋งคํ•‘๋  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์บ์‹œ ๋ฏธ์Šค

 

โœ”๏ธ ์ฐธ๊ณ 

Cache Miss