λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
개발/μ‹œμŠ€ν…œ λ””μžμΈ

μ•ˆμ • ν•΄μ‹œ 섀계

by Jaeguk 2024. 8. 29.

μ–Έμ œ?


μ–Έμ œ μš°λ¦¬λŠ” μ•ˆμ • ν•΄μ‹œλ₯Ό ν•„μš”λ‘œ ν• κΉŒ

  • λŒ€μš©λŸ‰ νŠΈλž˜ν”½μ— 버티기 μœ„ν•΄μ„œ DBλ₯Ό λΆ„ν• ν•˜μ—¬ μ—¬λŸ¬ λŒ€μ˜ μƒ€λ“œλ₯Ό κ΅¬μΆ•ν–ˆλ‹€κ³  ν•˜μž
  • μˆ˜ν‰μ  규λͺ¨ ν™•μž₯성을 λ‹¬μ„±ν•˜κΈ° μœ„ν•΄μ„œλŠ” 데이터λ₯Ό μ—¬λŸ¬ μƒ€λ“œμ— κ· λ“±ν•˜κ²Œ λ‚˜λˆ„λŠ” 것이 μ€‘μš”ν•˜λ‹€.
    • API μš”μ²­μ— λŒ€ν•΄μ„œλ„ λ™μΌν•˜λ‹€. μš”μ²­μ΄ μ—¬λŸ¬ μ„œλ²„μ— κ· λ“±ν•˜κ²Œ λ‚˜λˆ μ§€λŠ” 것이 μ€‘μš”ν•˜λ‹€.
  • μ•ˆμ • ν•΄μ‹œλŠ” 이 λͺ©ν‘œλ₯Ό λ‹¬μ„±ν•˜κΈ° μœ„ν•΄ 보편적으둜 μ‚¬μš©ν•˜λŠ” 기술

 

ν•΄μ‹œ ν‚€ 재배치 문제


μ—¬λŸ¬ λŒ€μ˜ μ„œλ²„λ₯Ό λ’€λŠ”λ°, κ·Έ 쀑에 ν•˜λ‚˜κ°€ κ³ μž₯λ‚œλ‹€λ©΄?

N개의 μΊμ‹œ μ„œλ²„κ°€ μžˆλ‹€κ³  ν•΄λ³΄μž.
이 μ„œλ²„λ“€μ— λΆ€ν•˜λ₯Ό κ· λ“±ν•˜κ²Œ λ‚˜λˆ„λŠ” 보편적인 방법은 μ•„λž˜μ˜ ν•΄μ‹œ ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λŠ” 것이닀.

serverIndex = hash(key) % N

[μ˜ˆμ‹œ]

ν‚€ ν•΄μ‹œ ν•΄μ‹œ % 4 (μ„œλ²„ 인덱슀)
key0 18358617 1
key1 26143584 0
key2 18131146 2
key3 35863496 0
key4 34085809 1
key5 27581703 3
key6 38164978 2
key7 22530351 3

νŠΉμ • ν‚€κ°€ λ³΄κ΄€λœ μ„œλ²„λ₯Ό μ•Œμ•„λ‚΄κΈ° μœ„ν•΄μ„œ λ‚˜λ¨Έμ§€(Moudlar)연산을 μ μš©ν•˜μ˜€λ‹€.
λͺ¨λ“ˆλŸ¬ 연산을 톡해 μ•Œμ•„λ‚Έ μ„œλ²„ μΈλ±μŠ€κ°€ 1이면 ν•΄λ‹Ή ν‚€λŠ” 1번 μ„œλ²„μ— μ €μž₯이 λ˜μ–΄ μžˆλ‹€λŠ” λœ»μ΄λ‹€.
κ·Έλ ‡λ‹€λ©΄ ν΄λΌμ΄μ–ΈνŠΈλŠ” μΊμ‹œμ— μ €μž₯된 데이터λ₯Ό κ°€μ Έμ˜€κΈ° μœ„ν•΄μ„œλŠ” μ„œλ²„ 1에 접속을 ν•΄μ•Ό ν•œλ‹€.

μ΄λŸ¬ν•œ 방법은 μ„œλ²„ ν’€μ˜ 크기가 κ³ μ •λ˜μ–΄ 있고, 데이터 뢄포가 κ· λ“±ν•  λ•ŒλŠ” 잘 λ™μž‘ν•œλ‹€.
ν•˜μ§€λ§Œ μ„œλ²„κ°€ μΆ”κ°€λ˜κ±°λ‚˜, κΈ°μ‘΄ μ„œλ²„κ°€ μ‚­μ œλ˜λ©΄ λ¬Έμ œκ°€ λ°œμƒν•œλ‹€.

예λ₯Ό λ“€μ–΄ 1번 μ„œλ²„κ°€ μž₯μ• λ₯Ό 일으켜 λ™μž‘μ„ μ€‘λ‹¨ν–ˆλ‹€κ³  ν•΄λ³΄μž.
그러면 μ„œλ²„ ν’€μ˜ 크기 N은 3으둜 κ°μ†Œν•œλ‹€.

 

[μ„œλ²„ 1 μ‚­μ œ 이후]

ν‚€ ν•΄μ‹œ ν•΄μ‹œ % 3 (μ„œλ²„ 인덱슀)
key0 18358617 0
key1 26143584 0
key2 18131146 1
key3 35863496 2
key4 34085809 1
key5 27581703 0
key6 38164978 1
key7 22530351 0

이전과 λΉ„κ΅ν–ˆμ„ λ•Œ, λŒ€λΆ€λΆ„μ˜ 킀에 λŒ€ν•΄μ„œ μ„œλ²„ μΈλ±μŠ€κ°€ λ³€κ²½λ˜μ—ˆλ‹€.
μž₯μ• κ°€ λ°œμƒν•œ 1번 μ„œλ²„μ˜ ν‚€ 뿐만 μ•„λ‹ˆλΌ, λŒ€λΆ€λΆ„μ˜ ν‚€κ°€ μž¬λΆ„λ°°λ˜λŠ” 것이 ν•΄λ‹Ή λ°©μ‹μ˜ λ¬Έμ œμ μ΄λ‹€.
μ„œλ²„ ν•œλŒ€κ°€ 죽으면 이후에 λŒ€λΆ€λΆ„μ˜ ν‚€κ°€ μ—‰λš±ν•œ μ„œλ²„(μΊμ‹œκ°’μ΄ μ—†λŠ”)에 접속을 ν•΄μ„œ, λŒ€κ·œλͺ¨ μΊμ‹œ λ―ΈμŠ€κ°€ λ°œμƒν•  것.

μ΄λŸ¬ν•œ 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄μ„œ μ•ˆμ • ν•΄μ‹œκ°€ ν•„μš”ν•˜λ‹€.

 

μ•ˆμ • ν•΄μ‹œ?


μ•ˆμ • ν•΄μ‹œλž€ μ •ν™•νžˆ μ–΄λ–€ ν•΄μ‹œλ₯Ό μ˜λ―Έν• κΉŒ

  • ν•΄μ‹œ ν…Œμ΄λΈ”μ˜ 크기가 쑰정될 λ•Œ, 였직 k/n개의 ν‚€λ§Œ μž¬λ°°μΉ˜ν•˜λŠ” ν•΄μ‹œ 기술
  • μ—¬κΈ°μ„œ kλŠ” ν‚€μ˜ 개수이고, n은 슬둯의 개수

 

ν•΄μ‹œ 곡간과 ν•΄μ‹œ 링


μ•ˆμ • ν•΄μ‹œμ˜ λ™μž‘ 원리λ₯Ό μ΄ν•΄ν•˜κΈ° μœ„ν•΄ ν•„μš”ν•œ κ°œλ…

  • ν•΄μ‹œ 값이 될 수 μžˆλŠ” λ²”μœ„λ₯Ό x0 ~ xn 이라고 ν•˜μž.
  • SHA-1 ν•¨μˆ˜λ₯Ό μ˜ˆμ‹œλ‘œ λ“€λ©΄, κ°’μ˜ λ²”μœ„λŠ” 0λΆ€ν„° 2^160 - 1이 λœλ‹€.
  • ν•΄μ‹œ κ³΅κ°„μ˜ μ–‘μͺ½μ„ κ΅¬λΆ€λ €μ„œ μ ‘μœΌλ©΄ κ·Έλ¦Όκ³Ό 같이 ν•΄μ‹œ 링이 λ§Œλ“€μ–΄μ§€κ²Œ λœλ‹€.

 

ν•΄μ‹œ μ„œλ²„


ν•΄μ‹œ ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λ©΄, μ„œλ²„ IPλ‚˜ 이름을 링 μœ„μ˜ μ–΄λ–€ μœ„μΉ˜μ— λŒ€μ‘μ‹œν‚¬ 수 μžˆλ‹€.

  • μœ„μ˜ 그림은 4개의 μ„œλ²„λ₯Ό ν•΄μ‹œ 링 μœ„μ— λ°°μΉ˜ν•œ κ²°κ³Ό

 

ν•΄μ‹œ ν‚€


μ—¬κΈ°μ„œ μ‚¬μš©λ˜λŠ” ν•΄μ‹œ ν•¨μˆ˜λŠ” λͺ¨λ“ˆλŸ¬ 연산을 μ‚¬μš©ν•˜λŠ” ν•΄μ‹œ ν•¨μˆ˜κ°€ μ•„λ‹ˆλ‹€

  • μΊμ‹œ ν‚€ μ—­μ‹œ 링 μœ„μ˜ μ–΄λŠ 지점에 λ°°μΉ˜ν•  수 μžˆλ‹€.
  • 그리고 μ–΄λ–€ ν‚€κ°€ μ €μž₯λ˜λŠ” μ„œλ²„λŠ” ν‚€μ˜ μœ„μΉ˜λ‘œλΆ€ν„° μ‹œκ³„ λ°©ν–₯으둜 링을 νƒμƒ‰ν•΄μ„œ 처음으둜 λ§Œλ‚˜λŠ” μ„œλ²„κ°€ λœλ‹€.

 

μ„œλ²„ μΆ”κ°€


μ„œλ²„ μΆ”κ°€λ₯Ό ν•˜λ©΄ μ–΄λ–»κ²Œ 될까?

  • μ„œλ²„λ₯Ό μΆ”κ°€ν•˜λ”λΌλ„ 기쑴의 킀듀은 μž¬λ°°μΉ˜κ°€ λ˜μ§€ μ•ŠλŠ”λ‹€.
  • μΆ”κ°€λœ μ„œλ²„μ™€ μΆ”κ°€λœ μ„œλ²„ μ§μ „μ˜ μ„œλ²„ 사이에 μžˆλŠ” ν‚€λ“€λ§Œ μž¬λ°°μΉ˜κ°€ 이루어진닀.

 

μ„œλ²„ μ‚­μ œ


μ„œλ²„λ₯Ό μ‚­μ œν•˜λ©΄ μ–΄λ–»κ²Œ 될까?

  • μ„œλ²„λ₯Ό 제거되면 ν‚€ κ°€μš΄λ° μΌλΆ€λ§Œ μž¬λ°°μΉ˜κ°€ λœλ‹€.
  • 제거된 μ„œλ²„μ— ν• λ‹Ήλ˜μ–΄ 있던 ν‚€λ“€λ§Œ μž¬λ°°μΉ˜κ°€ 되면 λœλ‹€.
    • 즉, μœ„μ˜ κ·Έλ¦Όμ—μ„œλŠ” S0 ~ S1 사이에 있던 ν‚€λ“€λ§Œ μž¬λ°°μΉ˜κ°€ λœλ‹€.

 

κΈ°λ³Έ κ΅¬ν˜„λ²•μ˜ 2가지 문제


μœ„μ—μ„œ μ†Œκ°œν•œ 기본적인 ν•΄μ‹œ 링 방식 κ΅¬ν˜„λ²•μ—λŠ” λ¬Έμ œκ°€ μ‘΄μž¬ν•œλ‹€.

  1. ν‚€λ₯Ό μ„œλ²„μ— κ· λ“±ν•˜κ²Œ λΆ„ν¬μ‹œν‚€λŠ” 것이 μ–΄λ ΅λ‹€λŠ” λ¬Έμ œμ΄λ‹€.
  2. μ„œλ²„κ°€ μΆ”κ°€λ˜κ±°λ‚˜ μ‚­μ œλ˜κ²Œ 되면, νŒŒν‹°μ…˜μ˜ 크기λ₯Ό κ· λ“±ν•˜κ²Œ μœ μ§€ν•˜λŠ” 게 λΆˆκ°€λŠ₯ν•˜λ‹€.
    • μž„μ˜μ˜ 두 μ„œλ²„ μ‚¬μ΄μ˜ κ΅¬κ°„μ˜ 길이가 μΌμ •ν•˜μ§€ μ•Šλ‹€λŠ” 것이닀.

 

가상 λ…Έλ“œ


μœ„μ˜ 2가지 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄μ„œ μ œμ‹œλœ 방법

  • 가상 λ…Έλ“œλŠ” μ‹€μ œ λ…Έλ“œ λ˜λŠ” μ„œλ²„λ₯Ό κ°€λ¦¬ν‚€λŠ” λ…Έλ“œλ‘œ ν•˜λ‚˜μ˜ μ„œλ²„λŠ” 링 μœ„μ— μ—¬λŸ¬ 개의 가상 λ…Έλ“œλ₯Ό κ°€μ§ˆ 수 μžˆλ‹€.
  • 각 μ„œλ²„κ°€ κ°€μ§ˆ 수 μžˆλŠ” 가상 λ…Έλ“œμ˜ μˆ˜λŠ” μ •ν•  수 μžˆλ‹€.

  • 가상 λ…Έλ“œμ˜ 수λ₯Ό 늘리게 되면, ν‚€μ˜ λΆ„ν¬λŠ” 점점 더 κ· λ“±ν•΄μ§ˆ 것이닀.
  • μ„œλ²„κ°€ μΆ”κ°€λ˜κ±°λ‚˜ μ‚­μ œλ˜μ—ˆμ„ λ•Œ μž¬λ°°μΉ˜λ˜λŠ” ν‚€μ˜ μˆ˜κ°€ μ΅œμ†Œν™” λœλ‹€.
  • λ˜ν•œ μž¬λ°°μΉ˜λ˜λŠ” 킀듀을 남아 μžˆλŠ” μ„œλ²„λ“€μ΄ κ· λ“±ν•˜κ²Œ κ°€μ Έκ°ˆ ν™•λ₯ μ΄ 높아진닀.

 

[μ°Έκ³ λ¬Έν—Œ]

가상 λ©΄μ ‘ μ‚¬λ‘€λ‘œ λ°°μš°λŠ” λŒ€κ·œλͺ¨ μ‹œμŠ€ν…œ 섀계 기초

728x90

'개발 > μ‹œμŠ€ν…œ λ””μžμΈ' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

처리율 μ œν•œ μž₯치의 섀계  (0) 2024.08.29