ํ์ฅ ์ ๋ฐ์ดํฐ ์ด๋์ ์ต์ํํ๊ณ ๋ถ์ฐ ์์คํ ์ฑ๋ฅ์ ํฅ์์ํค๋ ๋ก๋ ๋ฐธ๋ฐ์ฑ ์๊ณ ๋ฆฌ์ฆ์ธ ์ปจ์์คํดํธ ํด์ฑ์ ์ดํด๋ณด์ธ์. ์๋ฆฌ, ์ฅ๋จ์ , ์ค์ ์ ์ฉ ์ฌ๋ก๋ฅผ ์์๋ด ๋๋ค.
์ปจ์์คํดํธ ํด์ฑ: ํ์ฅ ๊ฐ๋ฅํ ๋ก๋ ๋ฐธ๋ฐ์ฑ์ ์ํ ์ข ํฉ ๊ฐ์ด๋
๋ถ์ฐ ์์คํ ์ ์์ญ์์ ํจ์จ์ ์ธ ๋ก๋ ๋ฐธ๋ฐ์ฑ์ ์ฑ๋ฅ, ๊ฐ์ฉ์ฑ, ํ์ฅ์ฑ์ ์ ์งํ๋ ๋ฐ ๊ฐ์ฅ ์ค์ํฉ๋๋ค. ๋ค์ํ ๋ก๋ ๋ฐธ๋ฐ์ฑ ์๊ณ ๋ฆฌ์ฆ ์ค์์ ์ปจ์์คํดํธ ํด์ฑ์ ํด๋ฌ์คํฐ ๊ตฌ์ฑ์์ด ๋ณ๊ฒฝ๋ ๋ ๋ฐ์ดํฐ ์ด๋์ ์ต์ํํ๋ ๋ฅ๋ ฅ์ผ๋ก ๋๊ฐ์ ๋ํ๋ ๋๋ค. ์ด๋ก ์ธํด ๋ ธ๋์ ์ถ๊ฐ ๋๋ ์ ๊ฑฐ๊ฐ ๋น๋ฒํ๊ฒ ๋ฐ์ํ๋ ๋๊ท๋ชจ ์์คํ ์ ํนํ ์ ํฉํฉ๋๋ค. ์ด ๊ฐ์ด๋๋ ๊ฐ๋ฐ์์ ์์คํ ์ํคํ ํธ์ ์ ์ธ๊ณ์ ์ธ ์ฒญ์ค์ ๋์์ผ๋ก ์ปจ์์คํดํธ ํด์ฑ์ ์๋ฆฌ, ์ฅ๋จ์ ๋ฐ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ํ ์ฌ์ธต์ ์ธ ๋ถ์์ ์ ๊ณตํฉ๋๋ค.
์ปจ์์คํดํธ ํด์ฑ์ด๋ ๋ฌด์์ธ๊ฐ?
์ปจ์์คํดํธ ํด์ฑ์ ํด๋ฌ์คํฐ์ ๋ ธ๋์ ํค๋ฅผ ํ ๋นํ๋ ๋ถ์ฐ ํด์ฑ ๊ธฐ์ ๋ก, ๋ ธ๋๊ฐ ์ถ๊ฐ๋๊ฑฐ๋ ์ ๊ฑฐ๋ ๋ ์ฌ๋งคํํด์ผ ํ๋ ํค์ ์๋ฅผ ์ต์ํํ๋ ๋ฐฉ์์ผ๋ก ์๋ํฉ๋๋ค. ๋ ธ๋ ๋ณ๊ฒฝ ์ ๊ด๋ฒ์ํ ๋ฐ์ดํฐ ์ฌ๋ถ๋ฐฐ๋ฅผ ์ด๋ํ ์ ์๋ ๊ธฐ์กด ํด์ฑ๊ณผ ๋ฌ๋ฆฌ, ์ปจ์์คํดํธ ํด์ฑ์ ๊ธฐ์กด์ ํค-๋ ธ๋ ํ ๋น์ ์ต๋ํ ์ ์งํ๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค. ์ด๋ ์์คํ ์ฌ์กฐ์ ๊ณผ ๊ด๋ จ๋ ์ค๋ฒํค๋๋ฅผ ํฌ๊ฒ ์ค์ด๊ณ ์งํ ์ค์ธ ์์ ์ ๋ํ ์ค๋จ์ ์ต์ํํฉ๋๋ค.
ํต์ฌ ์์ด๋์ด
์ปจ์์คํดํธ ํด์ฑ์ ํต์ฌ ์์ด๋์ด๋ ํค์ ๋ ธ๋๋ฅผ ๋ชจ๋ "ํด์ ๋ง"์ด๋ผ๊ณ ๋ถ๋ฆฌ๋ ๋์ผํ ์ํ ๊ณต๊ฐ์ ๋งคํํ๋ ๊ฒ์ ๋๋ค. ๊ฐ ๋ ธ๋๋ ๋ง ์์ ํ๋ ์ด์์ ์์น๋ฅผ ํ ๋น๋ฐ๊ณ , ๊ฐ ํค๋ ๋ง์์ ์๊ณ ๋ฐฉํฅ์ผ๋ก ๋ค์ ๋ ธ๋์ ํ ๋น๋ฉ๋๋ค. ์ด๋ ํค๊ฐ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ ธ๋์ ๋น๊ต์ ๊ณ ๋ฅด๊ฒ ๋ถ์ฐ๋๋๋ก ๋ณด์ฅํฉ๋๋ค.
ํด์ ๋ง ์๊ฐํ: ๊ฐ ์ง์ ์ด ํด์ ๊ฐ์ ๋ํ๋ด๋ ์์ ์์ํด ๋ณด์ธ์. ๋ ธ๋์ ๋ฐ์ดํฐ ํญ๋ชฉ(ํค) ๋ชจ๋ ์ด ์์ ํด์ฑ๋ฉ๋๋ค. ๋ฐ์ดํฐ ํญ๋ชฉ์ ํด๋น ๋ฐ์ดํฐ ํญ๋ชฉ์ ํด์ ๊ฐ์์ ์๊ณ ๋ฐฉํฅ์ผ๋ก ์์ง์ฌ ์ฒ์ ๋ง๋๋ ๋ ธ๋์ ์ ์ฅ๋ฉ๋๋ค. ๋ ธ๋๊ฐ ์ถ๊ฐ๋๊ฑฐ๋ ์ ๊ฑฐ๋ ๋, ์ฆ๊ฐ์ ์ธ ํ์ ๋ ธ๋์ ์ ์ฅ๋์๋ ๋ฐ์ดํฐ ํญ๋ชฉ๋ง ์ฌ๋งคํํ๋ฉด ๋ฉ๋๋ค.
์ปจ์์คํดํธ ํด์ฑ์ ์๋ ๋ฐฉ์
์ปจ์์คํดํธ ํด์ฑ์ ์ผ๋ฐ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ์ฃผ์ ๋จ๊ณ๋ฅผ ํฌํจํฉ๋๋ค:
- ํด์ฑ: ํค์ ๋ ธ๋ ๋ชจ๋ ์ผ๊ด๋ ํด์ฑ ํจ์(์: SHA-1, MurmurHash)๋ฅผ ์ฌ์ฉํ์ฌ ํด์ฑ๋์ด ๋์ผํ ๊ฐ ๋ฒ์(์ผ๋ฐ์ ์ผ๋ก 32๋นํธ ๋๋ 128๋นํธ ๊ณต๊ฐ)์ ๋งคํ๋ฉ๋๋ค.
- ๋ง ๋งคํ: ํด์ ๊ฐ์ ์ํ ๊ณต๊ฐ(ํด์ ๋ง)์ ๋งคํ๋ฉ๋๋ค.
- ๋ ธ๋ ํ ๋น: ๊ฐ ๋ ธ๋์๋ ๋ง ์์ ํ๋ ์ด์์ ์์น๊ฐ ํ ๋น๋๋ฉฐ, ์ด๋ฅผ ์ข ์ข "๊ฐ์ ๋ ธ๋" ๋๋ "๋ณต์ ๋ณธ"์ด๋ผ๊ณ ํฉ๋๋ค. ์ด๋ ๋ถํ ๋ถ์ฐ๊ณผ ๋ด๊ฒฐํจ์ฑ์ ํฅ์์ํค๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
- ํค ํ ๋น: ๊ฐ ํค๋ ๋ง์์ ํด๋น ํค์ ํด์ ๊ฐ์ผ๋ก๋ถํฐ ์๊ณ ๋ฐฉํฅ์ผ๋ก ๋ค์ ๋ ธ๋์ ํ ๋น๋ฉ๋๋ค.
๊ฐ์ ๋ ธ๋ (๋ณต์ ๋ณธ)
๊ฐ์ ๋ ธ๋์ ์ฌ์ฉ์ ๋ ๋์ ๋ถํ ๋ถ์ฐ๊ณผ ๋ด๊ฒฐํจ์ฑ์ ๋ฌ์ฑํ๋ ๋ฐ ์ค์ํฉ๋๋ค. ๊ฐ ๋ฌผ๋ฆฌ์ ๋ ธ๋๋ ๋ง ์์ ๋จ์ผ ์์น ๋์ ์ฌ๋ฌ ๊ฐ์ ๋ ธ๋๋ก ํ์๋ฉ๋๋ค. ์ด๋ ํนํ ๋ฌผ๋ฆฌ์ ๋ ธ๋ ์๊ฐ ์ ๊ฑฐ๋ ๋ ธ๋์ ์ฉ๋์ด ๋ค๋ฅผ ๋ ํด๋ฌ์คํฐ ์ ์ฒด์ ๋ถํ๋ฅผ ๋ ๊ณ ๋ฅด๊ฒ ๋ถ์ฐ์ํต๋๋ค. ๋ํ ๊ฐ์ ๋ ธ๋๋ ํ๋์ ๋ฌผ๋ฆฌ์ ๋ ธ๋๊ฐ ์คํจํ ๊ฒฝ์ฐ ํด๋น ๊ฐ์ ๋ ธ๋๋ค์ด ๋ค๋ฅธ ๋ฌผ๋ฆฌ์ ๋ ธ๋์ ๋ถ์ฐ๋์ด ์์ด ์์คํ ์ ๋ฏธ์น๋ ์ํฅ์ ์ต์ํํ๋ฏ๋ก ๋ด๊ฒฐํจ์ฑ์ ํฅ์์ํต๋๋ค.
์์: ๋ฌผ๋ฆฌ์ ๋ ธ๋๊ฐ 3๊ฐ์ธ ์์คํ ์ ์๊ฐํด ๋ณด์ธ์. ๊ฐ์ ๋ ธ๋๊ฐ ์์ผ๋ฉด ๋ถํฌ๊ฐ ๊ณ ๋ฅด์ง ์์ ์ ์์ต๋๋ค. ๊ฐ ๋ฌผ๋ฆฌ์ ๋ ธ๋์ 10๊ฐ์ ๊ฐ์ ๋ ธ๋๋ฅผ ํ ๋นํจ์ผ๋ก์จ ๋ง ์์ ํจ๊ณผ์ ์ผ๋ก 30๊ฐ์ ๋ ธ๋๋ฅผ ๊ฐ๊ฒ ๋์ด ํค์ ๋ถํฌ๊ฐ ํจ์ฌ ๋ ๋ถ๋๋ฌ์์ง๋๋ค.
์ปจ์์คํดํธ ํด์ฑ์ ์ฅ์
์ปจ์์คํดํธ ํด์ฑ์ ๊ธฐ์กด ํด์ฑ ๋ฐฉ๋ฒ์ ๋นํด ๋ช ๊ฐ์ง ์ค์ํ ์ฅ์ ์ ์ ๊ณตํฉ๋๋ค:
- ์ต์ํ์ ํค ์ด๋: ๋ ธ๋๊ฐ ์ถ๊ฐ๋๊ฑฐ๋ ์ ๊ฑฐ๋ ๋, ํค์ ์ผ๋ถ๋ง ์ฌ๋งคํํ๋ฉด ๋ฉ๋๋ค. ์ด๋ ์์คํ ์ฌ์กฐ์ ๊ณผ ๊ด๋ จ๋ ์ค๋ฒํค๋๋ฅผ ์ค์ด๊ณ ์งํ ์ค์ธ ์์ ์ ๋ํ ์ค๋จ์ ์ต์ํํฉ๋๋ค.
- ํฅ์๋ ํ์ฅ์ฑ: ์ปจ์์คํดํธ ํด์ฑ์ ์ฌ์ฉํ๋ฉด ์ฑ๋ฅ์ ํฐ ์ํฅ์ ์ฃผ์ง ์๊ณ ๋ ธ๋๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ์ ๊ฑฐํ์ฌ ์์คํ ์ ์ฝ๊ฒ ํ์ฅํ ์ ์์ต๋๋ค.
- ๋ด๊ฒฐํจ์ฑ: ๊ฐ์ ๋ ธ๋๋ฅผ ์ฌ์ฉํ๋ฉด ์ฌ๋ฌ ๋ฌผ๋ฆฌ์ ๋ ธ๋์ ๋ถํ๋ฅผ ๋ถ์ฐ์์ผ ๋ด๊ฒฐํจ์ฑ์ ํฅ์์ํต๋๋ค. ํ ๋ ธ๋๊ฐ ์คํจํ๋ฉด ํด๋น ๊ฐ์ ๋ ธ๋๊ฐ ๋ค๋ฅธ ๋ฌผ๋ฆฌ์ ๋ ธ๋์ ๋ถ์ฐ๋์ด ์์คํ ์ ๋ฏธ์น๋ ์ํฅ์ ์ต์ํํฉ๋๋ค.
- ๊ท ๋ฑํ ๋ถํ ๋ถ์ฐ: ๊ฐ์ ๋ ธ๋๋ ๋ฌผ๋ฆฌ์ ๋ ธ๋ ์๊ฐ ์ ๊ฑฐ๋ ๋ ธ๋ ์ฉ๋์ด ๋ค๋ฅธ ๊ฒฝ์ฐ์๋ ํด๋ฌ์คํฐ ์ ์ฒด์ ํค๋ฅผ ๋ ๊ท ๋ฑํ๊ฒ ๋ถ์ฐ์ํค๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
์ปจ์์คํดํธ ํด์ฑ์ ๋จ์
์ฅ์ ์๋ ๋ถ๊ตฌํ๊ณ ์ปจ์์คํดํธ ํด์ฑ์๋ ๋ช ๊ฐ์ง ํ๊ณ์ ์ด ์์ต๋๋ค:
- ๋ณต์ก์ฑ: ์ปจ์์คํดํธ ํด์ฑ ๊ตฌํ์ ๊ธฐ์กด ํด์ฑ ๋ฐฉ๋ฒ๋ณด๋ค ๋ ๋ณต์กํ ์ ์์ต๋๋ค.
- ๋ถ๊ท ์ผํ ๋ถํฌ: ๊ฐ์ ๋ ธ๋๊ฐ ๋์์ด ๋๊ธฐ๋ ํ์ง๋ง, ํนํ ๋ ธ๋ ์๊ฐ ์ ๊ฑฐ๋ ํค ๋ถํฌ๊ฐ ๋ฌด์์๊ฐ ์๋ ๋ ์๋ฒฝํ๊ฒ ๊ท ์ผํ ํค ๋ถํฌ๋ฅผ ๋ฌ์ฑํ๊ธฐ๋ ์ด๋ ค์ธ ์ ์์ต๋๋ค.
- ์์ ์๊ฐ: ์ ๋ ธ๋๊ฐ ์ถ๊ฐ๋ ๋ ์์คํ ์ด ์ฌ์กฐ์ ๋๊ณ ์ ๋ ธ๋๊ฐ ์์ ํ ํ์ฉ๋๊ธฐ๊น์ง ์๊ฐ์ด ๊ฑธ๋ฆฝ๋๋ค.
- ๋ชจ๋ํฐ๋ง ํ์: ์ต์ ์ ์ฑ๋ฅ๊ณผ ๋ด๊ฒฐํจ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด ํค ๋ถํฌ ๋ฐ ๋ ธ๋ ์ํ์ ๋ํ ์ธ์ฌํ ๋ชจ๋ํฐ๋ง์ด ํ์ํฉ๋๋ค.
์ปจ์์คํดํธ ํด์ฑ์ ์ค์ ์ ์ฉ ์ฌ๋ก
์ปจ์์คํดํธ ํด์ฑ์ ๋ค์๊ณผ ๊ฐ์ ๋ค์ํ ๋ถ์ฐ ์์คํ ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋๋ฆฌ ์ฌ์ฉ๋ฉ๋๋ค:
- ์บ์ฑ ์์คํ : Memcached ๋ฐ Redis ํด๋ฌ์คํฐ๋ ์ปจ์์คํดํธ ํด์ฑ์ ์ฌ์ฉํ์ฌ ์ฌ๋ฌ ์๋ฒ์ ์บ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ถ์ฐ์์ผ ์๋ฒ๊ฐ ์ถ๊ฐ๋๊ฑฐ๋ ์ ๊ฑฐ๋ ๋ ์บ์ ๋ฏธ์ค๋ฅผ ์ต์ํํฉ๋๋ค.
- ์ฝํ ์ธ ์ ์ก ๋คํธ์ํฌ(CDN): CDN์ ์ปจ์์คํดํธ ํด์ฑ์ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์ ์์ฒญ์ ๊ฐ์ฅ ๊ฐ๊น์ด ์ฝํ ์ธ ์๋ฒ๋ก ๋ผ์ฐํ ํ์ฌ ๋ฎ์ ์ง์ฐ ์๊ฐ๊ณผ ๋์ ๊ฐ์ฉ์ฑ์ ๋ณด์ฅํฉ๋๋ค. ์๋ฅผ ๋ค์ด, CDN์ ์ปจ์์คํดํธ ํด์ฑ์ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์ IP ์ฃผ์๋ฅผ ํน์ ์ฃ์ง ์๋ฒ์ ๋งคํํ ์ ์์ต๋๋ค.
- ๋ถ์ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค: Cassandra ๋ฐ Riak๊ณผ ๊ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ปจ์์คํดํธ ํด์ฑ์ ์ฌ์ฉํ์ฌ ์ฌ๋ฌ ๋ ธ๋์ ๋ฐ์ดํฐ๋ฅผ ๋ถํ ํ์ฌ ์ํ์ ํ์ฅ์ฑ๊ณผ ๋ด๊ฒฐํจ์ฑ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
- ํค-๊ฐ ์ ์ฅ์: Amazon DynamoDB์ ๊ฐ์ ์์คํ ์ ์ปจ์์คํดํธ ํด์ฑ์ ์ฌ์ฉํ์ฌ ์ฌ๋ฌ ์คํ ๋ฆฌ์ง ๋ ธ๋์ ๋ฐ์ดํฐ๋ฅผ ๋ถ์ฐ์ํต๋๋ค. Amazon์ ์ค๋ฆฌ์ง๋ Dynamo ๋ ผ๋ฌธ์ ๋๊ท๋ชจ ์์คํ ์์ ์ปจ์์คํดํธ ํด์ฑ์ ์ค์ ์ ์ฉ์ ๋ํ ์ค์ํ ์ฐ๊ตฌ์ ๋๋ค.
- P2P(Peer-to-Peer) ๋คํธ์ํฌ: P2P ๋คํธ์ํฌ๋ ์ปจ์์คํดํธ ํด์ฑ(์ข ์ข Chord ๋ฐ Pastry์ ๊ฐ์ ๋ถ์ฐ ํด์ ํ ์ด๋ธ ๋๋ DHT ํํ)์ ์ฌ์ฉํ์ฌ ํ์ผ์ด๋ ๋ฆฌ์์ค๋ฅผ ์ฐพ๊ณ ๊ฒ์ํฉ๋๋ค.
- ๋ก๋ ๋ฐธ๋ฐ์: ์ผ๋ถ ๊ณ ๊ธ ๋ก๋ ๋ฐธ๋ฐ์๋ ์ปจ์์คํดํธ ํด์ฑ์ ์ฌ์ฉํ์ฌ ๋ฐฑ์๋ ์๋ฒ์ ํธ๋ํฝ์ ๋ถ์ฐ์์ผ ๋์ผํ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ด ์ผ๊ด๋๊ฒ ๋์ผํ ์๋ฒ๋ก ๋ผ์ฐํ ๋๋๋ก ๋ณด์ฅํ๋ฉฐ, ์ด๋ ์ธ์ ์ดํผ๋ํฐ๋ฅผ ์ ์งํ๋ ๋ฐ ์ ์ฉํ ์ ์์ต๋๋ค.
์ปจ์์คํดํธ ํด์ฑ vs. ์ ํต์ ์ธ ํด์ฑ
์ ํต์ ์ธ ํด์ฑ ์๊ณ ๋ฆฌ์ฆ(`hash(key) % N`, ์ฌ๊ธฐ์ N์ ์๋ฒ ์)์ ๊ฐ๋จํ์ง๋ง ์๋ฒ ์๊ฐ ๋ณ๊ฒฝ๋ ๋(N์ด ๋ณ๊ฒฝ๋ ๋) ๊ฑฐ์ ๋ชจ๋ ํค๊ฐ ๋ค๋ฅธ ์๋ฒ๋ก ์ฌ๋งคํ๋์ด์ผ ํ๋ ํฐ ๋จ์ ์ด ์์ต๋๋ค. ์ด๋ ์๋นํ ์ค๋จ๊ณผ ์ค๋ฒํค๋๋ฅผ ์ ๋ฐํฉ๋๋ค.
์ปจ์์คํดํธ ํด์ฑ์ ํค ์ด๋์ ์ต์ํํ์ฌ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค. ๋ค์ ํ๋ ์ฃผ์ ์ฐจ์ด์ ์ ์์ฝํ ๊ฒ์ ๋๋ค:
| ๊ธฐ๋ฅ | ์ ํต์ ์ธ ํด์ฑ | ์ปจ์์คํดํธ ํด์ฑ |
|---|---|---|
| ๋ ธ๋ ๋ณ๊ฒฝ ์ ํค ์ด๋ | ๋์ (๊ฑฐ์ ๋ชจ๋ ํค) | ๋ฎ์ (์์ฃผ ์์ ๋ถ๋ถ๋ง) |
| ํ์ฅ์ฑ | ๋์จ | ์ข์ |
| ๋ด๊ฒฐํจ์ฑ | ๋์จ | ์ข์ (๊ฐ์ ๋ ธ๋ ์ฌ์ฉ ์) |
| ๋ณต์ก์ฑ | ๋ฎ์ | ์ค๊ฐ |
์ปจ์์คํดํธ ํด์ฑ ๊ตฌํ ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
๋ค์ํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ์ปจ์์คํดํธ ํด์ฑ์ ์ํ ์ฌ๋ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ตฌํ์ด ์ ๊ณต๋ฉ๋๋ค:
- Java: Guava ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ปจ์์คํดํธ ํด์ฑ์ ์ฌ์ฉํ ์ ์๋ `Hashing` ํด๋์ค๋ฅผ ์ ๊ณตํฉ๋๋ค. ๋ํ Ketama์ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ธ๊ธฐ๊ฐ ์์ต๋๋ค.
- Python: `hashlib` ๋ชจ๋์ ์ปจ์์คํดํธ ํด์ฑ ์๊ณ ๋ฆฌ์ฆ ๊ตฌํ๊ณผ ํจ๊ป ์ฌ์ฉํ ์ ์์ต๋๋ค. `consistent`์ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ฐ๋ก ์ฌ์ฉํ ์ ์๋ ๊ตฌํ์ ์ ๊ณตํฉ๋๋ค.
- Go: `hashring` ๋ฐ `jump`์ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ปจ์์คํดํธ ํด์ฑ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
- C++: `libketama`์ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ ๋ง์ ์ฌ์ฉ์ ์ง์ ๊ตฌํ์ด ์กด์ฌํฉ๋๋ค.
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ํํ ๋๋ ์ฑ๋ฅ, ์ฌ์ฉ ์ฉ์ด์ฑ ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ํน์ ์๊ตฌ ์ฌํญ๊ณผ ๊ฐ์ ์์๋ฅผ ๊ณ ๋ คํ์ญ์์ค.
์ปจ์์คํดํธ ํด์ฑ์ ๋ณํ ๋ฐ ๊ฐ์ ์ฌํญ
ํน์ ํ๊ณ๋ฅผ ํด๊ฒฐํ๊ฑฐ๋ ์ฑ๋ฅ์ ํฅ์์ํค๊ธฐ ์ํด ์ปจ์์คํดํธ ํด์ฑ์ ๋ํ ๋ช ๊ฐ์ง ๋ณํ ๋ฐ ๊ฐ์ ์ฌํญ์ด ๊ฐ๋ฐ๋์์ต๋๋ค:
- Jump Consistent Hash: ๋๊ท๋ชจ ์์คํ ์ ํนํ ์ ํฉํ ๋น ๋ฅด๊ณ ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ ์ธ ์ปจ์์คํดํธ ํด์ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค. ํด์ ๋ง์ ์ฌ์ฉํ์ง ์์ผ๋ฉฐ ์ผ๋ถ ๋ค๋ฅธ ์ปจ์์คํดํธ ํด์ฑ ๊ตฌํ๋ณด๋ค ๋ ๋์ ๊ท ์ผ์ฑ์ ์ ๊ณตํฉ๋๋ค.
- Rendezvous Hashing (Highest Random Weight or HRW): ํด์ฑ ํจ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํค๋ฅผ ๋ ธ๋์ ๊ฒฐ์ ๋ก ์ ์ผ๋ก ํ ๋นํ๋ ๋ ๋ค๋ฅธ ์ปจ์์คํดํธ ํด์ฑ ๊ธฐ์ ์ ๋๋ค. ํด์ ๋ง์ด ํ์ํ์ง ์์ต๋๋ค.
- Maglev Hashing: Google์ ๋คํธ์ํฌ ๋ก๋ ๋ฐธ๋ฐ์์์ ์ฌ์ฉ๋๋ฉฐ, Maglev๋ ๋น ๋ฅด๊ณ ์ผ๊ด๋ ๋ผ์ฐํ ์ ์ํด ์กฐํ ํ ์ด๋ธ ๋ฐฉ์์ ์ฌ์ฉํฉ๋๋ค.
์ค์ฉ์ ์ธ ๊ณ ๋ ค ์ฌํญ ๋ฐ ๋ชจ๋ฒ ์ฌ๋ก
์ค์ ์์คํ ์ ์ปจ์์คํดํธ ํด์ฑ์ ๊ตฌํํ ๋๋ ๋ค์๊ณผ ๊ฐ์ ์ค์ฉ์ ์ธ ๊ณ ๋ ค ์ฌํญ ๋ฐ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๊ณ ๋ คํ์ญ์์ค:
- ์ ์ ํ ํด์ ํจ์ ์ ํ: ์ข์ ๋ถํฌ์ ์ฑ๋ฅ์ ์ ๊ณตํ๋ ํด์ ํจ์๋ฅผ ์ ํํ์ญ์์ค. SHA-1 ๋๋ MurmurHash์ ๊ฐ์ ํ๋ฆฝ๋ ํด์ ํจ์ ์ฌ์ฉ์ ๊ณ ๋ คํ์ญ์์ค.
- ๊ฐ์ ๋ ธ๋ ์ฌ์ฉ: ๋ถํ ๋ถ์ฐ ๋ฐ ๋ด๊ฒฐํจ์ฑ์ ํฅ์์ํค๊ธฐ ์ํด ๊ฐ์ ๋ ธ๋๋ฅผ ๊ตฌํํ์ญ์์ค. ๋ฌผ๋ฆฌ์ ๋ ธ๋๋น ๊ฐ์ ๋ ธ๋ ์๋ ํด๋ฌ์คํฐ์ ํฌ๊ธฐ์ ์์ ๋ถํ์ ๋ฐ๋ผ ์ ์คํ๊ฒ ์ ํํด์ผ ํฉ๋๋ค.
- ํค ๋ถํฌ ๋ชจ๋ํฐ๋ง: ํด๋ฌ์คํฐ ์ ์ฒด์ ํค ๋ถํฌ๋ฅผ ์ง์์ ์ผ๋ก ๋ชจ๋ํฐ๋งํ์ฌ ๋ถ๊ท ํ์ ์๋ณํ๊ณ ํด๊ฒฐํ์ญ์์ค. Prometheus ๋๋ Grafana์ ๊ฐ์ ๋ถ์ฐ ์์คํ ๋ชจ๋ํฐ๋ง ๋๊ตฌ๋ ์ฌ๊ธฐ์ ๋งค์ฐ ์ ์ฉํฉ๋๋ค.
- ๋ ธ๋ ์ฅ์ ์ ์ ์ฒ๋ฆฌ: ๋ ธ๋ ์ฅ์ ๋ฅผ ๊ฐ์งํ๊ณ ์ ์์ ์ผ๋ก ์ฒ๋ฆฌํ๋ ๋ฉ์ปค๋์ฆ์ ๊ตฌํํ์ฌ ๋ฐ์ดํฐ๊ฐ ๋ค๋ฅธ ๋ ธ๋์ ์๋์ผ๋ก ์ฌ๋งคํ๋๋๋ก ํ์ญ์์ค.
- ๋ฐ์ดํฐ ๋ณต์ ๊ณ ๋ ค: ๋ฐ์ดํฐ ๊ฐ์ฉ์ฑ๊ณผ ๋ด๊ฒฐํจ์ฑ์ ํฅ์์ํค๊ธฐ ์ํด ๋ฐ์ดํฐ ๋ณต์ ๋ฅผ ๊ตฌํํ์ญ์์ค. ๋ ธ๋ ์ฅ์ ์ ๋ฐ์ดํฐ ์์ค์ ๋ฐฉ์งํ๊ธฐ ์ํด ์ฌ๋ฌ ๋ ธ๋์ ๋ฐ์ดํฐ๋ฅผ ๋ณต์ ํ์ญ์์ค.
- ์ปจ์์คํดํธ ํด์ฑ API ๊ตฌํ: ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ ธ๋์ ๊ด๊ณ์์ด ๋ฐ์ดํฐ์ ์ก์ธ์คํ ์ ์๋ ์ผ๊ด๋ API๋ฅผ ์ ๊ณตํ์ญ์์ค. ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ ๋ฐ ์ ์ง ๊ด๋ฆฌ๋ฅผ ๋จ์ํํฉ๋๋ค.
- ๋์ฒด ์๊ณ ๋ฆฌ์ฆ ํ๊ฐ: ํนํ ๋๊ท๋ชจ ์๋ฒ ์์์ ๊ท ์ผ์ฑ๊ณผ ์๋๊ฐ ์ค์ํ ๊ฒฝ์ฐ Jump Consistent Hash์ ๊ฐ์ ๋์์ ๊ณ ๋ คํ์ญ์์ค.
๋ก๋ ๋ฐธ๋ฐ์ฑ์ ๋ฏธ๋ ๋ํฅ
๋ก๋ ๋ฐธ๋ฐ์ฑ ๋ถ์ผ๋ ํ๋ ๋ถ์ฐ ์์คํ ์ ์๊ตฌ์ ๋ถ์ํ๊ธฐ ์ํด ๋์์์ด ์งํํ๊ณ ์์ต๋๋ค. ์ผ๋ถ ๋ฏธ๋ ๋ํฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- AI ๊ธฐ๋ฐ ๋ก๋ ๋ฐธ๋ฐ์ฑ: ๋จธ์ ๋ฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ ํธ๋ํฝ ํจํด์ ์์ธกํ๊ณ ๋ก๋ ๋ฐธ๋ฐ์ฑ ์ ๋ต์ ๋์ ์ผ๋ก ์กฐ์ ํฉ๋๋ค.
- ์๋น์ค ๋ฉ์ ํตํฉ: ๋ก๋ ๋ฐธ๋ฐ์ฑ์ Istio ๋ฐ Envoy์ ๊ฐ์ ์๋น์ค ๋ฉ์ ๊ธฐ์ ๊ณผ ํตํฉํ์ฌ ํธ๋ํฝ ๋ผ์ฐํ ์ ๋ํ ๋ ์ธ๋ฐํ ์ ์ด๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ์ฃ์ง ์ปดํจํ ๋ก๋ ๋ฐธ๋ฐ์ฑ: ์ฃ์ง ์๋ฒ์ ๋ถํ๋ฅผ ๋ถ์ฐํ์ฌ ์ง๋ฆฌ์ ์ผ๋ก ๋ถ์ฐ๋ ์ฌ์ฉ์์ ์ง์ฐ ์๊ฐ์ ์ค์ด๊ณ ์ฑ๋ฅ์ ํฅ์์ํต๋๋ค.
๊ฒฐ๋ก
์ปจ์์คํดํธ ํด์ฑ์ ๋๊ท๋ชจ ๋ถ์ฐ ์์คํ ์ ๋งค์ฐ ์ ํฉํ ๊ฐ๋ ฅํ๊ณ ๋ค์ฌ๋ค๋ฅํ ๋ก๋ ๋ฐธ๋ฐ์ฑ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค. ํ์ฅ์ ํ๋ ๋์ ๋ฐ์ดํฐ ์ด๋์ ์ต์ํํ๊ณ ํฅ์๋ ๋ด๊ฒฐํจ์ฑ์ ์ ๊ณตํจ์ผ๋ก์จ, ์ปจ์์คํดํธ ํด์ฑ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ, ๊ฐ์ฉ์ฑ ๋ฐ ํ์ฅ์ฑ์ ํฅ์์ํค๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค. ๊ทธ ์๋ฆฌ, ์ฅ์ ๋ฐ ๋จ์ ์ ์ดํดํ๋ ๊ฒ์ ๋ถ์ฐ ์์คํ ์ ๋ค๋ฃจ๋ ๋ชจ๋ ๊ฐ๋ฐ์๋ ์์คํ ์ํคํ ํธ์๊ฒ ํ์์ ์ ๋๋ค. ์ด ๊ฐ์ด๋์ ์์ฝ๋ ์ค์ฉ์ ์ธ ๊ณ ๋ ค ์ฌํญ๊ณผ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ ์คํ๊ฒ ๊ณ ๋ คํจ์ผ๋ก์จ, ์์ ์ ์์คํ ์ ์ปจ์์คํดํธ ํด์ฑ์ ํจ๊ณผ์ ์ผ๋ก ๊ตฌํํ๊ณ ๊ทธ ๋ง์ ์ด์ ์ ๋๋ฆด ์ ์์ต๋๋ค.
๊ธฐ์ ์ด ๊ณ์ ๋ฐ์ ํจ์ ๋ฐ๋ผ ๋ก๋ ๋ฐธ๋ฐ์ฑ ๊ธฐ์ ์ ์ ์ ๋ ์ค์ํด์ง ๊ฒ์ ๋๋ค. ๋ก๋ ๋ฐธ๋ฐ์ฑ์ ์ต์ ๋ํฅ๊ณผ ๋ชจ๋ฒ ์ฌ๋ก์ ๋ํ ์ ๋ณด๋ฅผ ์ ์งํ๋ ๊ฒ์ ์์ผ๋ก ๋ช ๋ ๋์ ๊ณ ์ฑ๋ฅ ๋ฐ ํ์ฅ ๊ฐ๋ฅํ ๋ถ์ฐ ์์คํ ์ ๊ตฌ์ถํ๊ณ ์ ์งํ๋ ๋ฐ ์ค์ํ ๊ฒ์ ๋๋ค. ์ง์์ ์ผ๋ก ์์คํ ์ ๊ฐ์ ํ๊ธฐ ์ํด ์ด ๋ถ์ผ์ ์ฐ๊ตฌ ๋ ผ๋ฌธ ๋ฐ ์คํ ์์ค ํ๋ก์ ํธ๋ฅผ ๊ณ์ ์ฃผ์ํ์ญ์์ค.