λŒ€μš©λŸ‰ νŠΈλž˜ν”½ κ°œλ… 및 처리 방법

2024. 11. 2. 00:43Β·πŸ› οΈBackend/πŸ“šλ°±μ—”λ“œ 곡뢀

βœ… 1. λŒ€μš©λŸ‰ νŠΈλž˜ν”½ μ΄λž€?

  • 짧은 μ‹œκ°„μ— 맀우 λ§Žμ€ μ‚¬μš©μžκ°€ λ™μ‹œμ— μ‹œμŠ€ν…œμ— μ ‘μ†ν•˜κ±°λ‚˜ μš”μ²­μ„ λ³΄λ‚΄λŠ” 상황을 μ˜λ―Έν•œλ‹€.
[ μ˜ˆμ‹œ 상황 ]
λŒ€μš©λŸ‰ μš”μ²­ 상황: μ½˜μ„œνŠΈ ν‹°μΌ“νŒ… μ˜€ν”ˆ -> μˆ˜μ‹­λ§Œλͺ…이 λ™μ‹œμ— 티켓을 사렀고 μš”μ²­(request)을 함.
λŒ€μš©λŸ‰ 접속 상황: 인기 μ‡Όν•‘λͺ° 할인 -> 맀우 λ§Žμ€ μ‚¬λžŒλ“€μ΄ ν•œκΊΌλ²ˆμ— 접속을 μ‹œλ„ν•¨.
  • μ΄λ ‡κ²Œ λ™μ‹œμ— μš”μ²­μ΄ λͺ°λ¦¬λŠ” ν˜„μƒμ„ λŒ€μš©λŸ‰ νŠΈλž˜ν”½μ΄λΌκ³  ν•œλ‹€.
  • μ΄λŸ¬ν•œ λŒ€μš©λŸ‰ νŠΈλž˜ν”½μ΄ λ°œμƒν•˜λŠ” μ‹œμŠ€ν…œμ˜ νŠΉμ • 지점에 λΆ€ν•˜κ°€ μ§‘μ€‘λ˜λ©΄μ„œ 병λͺ©ν˜„상이 λ°œμƒν•  수 있음.

(1) 병λͺ© ν˜„μƒ

  • 병λͺ© ν˜„μƒ: 전체 μ‹œμŠ€ν…œμ˜ μ„±λŠ₯을 μ œν•œν•˜λŠ” κ°€μž₯ 느린 지점 λ•Œλ¬Έμ— μ²˜λ¦¬μ†λ„κ°€ λ–¨μ–΄μ§€λŠ” ν˜„μƒμ„ μ˜λ―Έν•œλ‹€.
  • 예λ₯Ό λ“€μ–΄ μ„œλ²„(컴퓨터) 의 DB, CPU, λ„€νŠΈμ›Œν¬ 쀑 ν•˜λ‚˜λΌλ„ 처리 속도가 느리면, κ·Έ 지점이 전체 μ‹œμŠ€ν…œμ˜ μ„±λŠ₯을 μ œν•œν•˜κ²Œ λ˜λŠ”λ° μ΄λŸ¬ν•œ ν˜„μƒμ΄ 병λͺ© ν˜„μƒμ΄λ‹€.

(2) λŒ€μš©λŸ‰ νŠΈλž˜ν”½κ³Ό 병λͺ© ν˜„μƒ 관계

  • 병λͺ© ν˜„μƒ μžμ²΄λŠ” νŠΈλž˜ν”½μ΄ 적어도 λ°œμƒν•  수 μžˆλŠ” ν˜„μƒμ΄λ‹€.
  • ν•˜μ§€λ§Œ, νŠΈλž˜ν”½μ΄ 적을 λ•Œμ—λŠ” μš”μ²­ μˆ˜κ°€ μ μ–΄μ„œ 병λͺ© ꡬ간이 μ›¬λ§Œν•˜λ©΄ 감당 κ°€λŠ₯ν•œ μˆ˜μ€€μ΄λΌ λ°œμƒν•  ν™•λ₯ μ΄ 적음.
  • 즉, νŠΈλž˜ν”½μ΄ μ¦κ°€ν• μˆ˜λ‘ νŠΉμ • μ§€μ μ˜ 처리 ν•œκ³„κ°€ λ“œλŸ¬λ‚˜λ©΄μ„œ 병λͺ© ν˜„μƒμ΄ λͺ…ν™•ν•˜κ²Œ λ‚˜νƒ€λ‚˜ μ‹œμŠ€ν…œ μ„±λŠ₯ μ €ν•˜λ‘œ 이어짐.

βœ… 2. λŒ€μš©λŸ‰ νŠΈλž˜ν”½ - 처리 방법

(1) λŒ€μš©λŸ‰ νŠΈλž˜ν”½μ˜ μ²˜λ¦¬λž€?

  • λŒ€μš©λŸ‰ νŠΈλž˜ν”½ 처리: λŒ€μš©λŸ‰ νŠΈλž˜ν”½μœΌλ‘œ 인해 μ„œλ²„μ—μ„œ λ°œμƒν•  수 μžˆλŠ” 문제인 병λͺ© ν˜„μƒμ„ μ˜ˆμΈ‘ν•΄μ„œ μš”μ²­μ„ λΆ„μ‚°ν•˜κ±°λ‚˜ μ™„ν™”ν•˜λŠ” ꡬ쑰λ₯Ό μ„€κ³„ν•˜λŠ” κ²ƒμœΌλ‘œ λ³Ό 수 μžˆλ‹€.
  • 핡심: νŠΈλž˜ν”½(μš”μ²­)에 λŒ€ν•œ λΆ€ν•˜λ₯Ό λΆ„μ‚°ν•˜κ±°λ‚˜ μ™„ν™”ν•˜λŠ” 것이 핡심이닀.

(2) λŒ€μš©λŸ‰ νŠΈλž˜ν”½ 처리 방법 - μ„œλ²„ ν™•μž₯ 방식

좜처: ITμœ„ν‚€

  • μ„œλ²„ ν™•μž₯ 방식은 크게 μˆ˜ν‰μ  ν™•μž₯, 수직적 ν™•μž₯ 으둜 λ‚˜λ‰œλ‹€.
  • μˆ˜ν‰μ  ν™•μž₯( scale-out ): μ„œλ²„μ˜ 수(컴퓨터 자체)λ₯Ό λŠ˜λ¦¬λŠ” κ°œλ…μž„.
  • μˆ˜ν‰μ  ν™•μž₯의 경우 μ„œλ²„μ˜ μˆ˜κ°€ μ—¬λŸ¬λŒ€μΈ 경우 μš”μ²­μ„ μ—¬λŸ¬ μ„œλ²„μ— 뢄산을 ν•΄μ€˜μ•Όν•˜κΈ° λ•Œλ¬Έμ— κ²°κ΅­ λ‘œλ“œλ°ΈλŸ°μ‹±μ„ μ΄μš©ν•¨.
  • 수직적 ν™•μž₯( scale-up ): μ„œλ²„μ˜ μ„±λŠ₯을 μ˜¬λ €μ£ΌλŠ” κ°œλ…μ΄κ³  주둜 CPU, λ©”λͺ¨λ¦¬ λ“± ν•˜λ“œμ›¨μ–΄ λΆ€ν’ˆμ˜ ꡐ체둜 μ„±λŠ₯을 μ˜¬λ¦¬λŠ” 것을 μ˜λ―Έν•œλ‹€.

(2) λŒ€μš©λŸ‰ νŠΈλž˜ν”½ 처리 방법 - λ‘œλ“œ λ°ΈλŸ°μ‹±

좜처: https://tecoble.techcourse.co.kr/post/2021-11-07-load-balancing/

  • λ‘œλ“œ λ°ΈλŸ°μ‹±: λ„€νŠΈμ›Œν¬ νŠΈλž˜ν”½μ„ μ—¬λŸ¬ μ„œλ²„μ— 효율적으둜 λΆ„μ‚°ν•˜λŠ” κΈ°μˆ μ„ μ˜λ―Έν•œλ‹€.
   [μ‚¬μš©μž μš”μ²­]
         ↓
    [λ‘œλ“œλ°ΈλŸ°μ„œ]
    ↙    ↓    β†˜
[μ„œλ²„1][μ„œλ²„2][μ„œλ²„3]
  • μ‰½κ²Œ 말해, 논리적인 μ„œλ²„λ‚˜ 물리적인 μ„œλ²„κ°€ μ—¬λŸ¬κ°œ μ‘΄μž¬ν•  λ•Œ ν•΄λ‹Ή μ„œλ²„μ— 효율적으둜 μš”μ²­μ„ λΆ„μ‚° μ‹œμΌœμ£ΌλŠ” κΈ°μˆ μž„.
  • 정리: λ‘œλ“œλ°ΈλŸ°μ‹±μ€ νŠΈλž˜ν”½μ„ μ—¬λŸ¬ μ„œλ²„μ— 효율적으둜 λΆ„μ‚°μ‹œν‚¨λ‹€λŠ” 기술 자체λ₯Ό μ˜λ―Έν•˜κ³ , κ²°κ΅­ μ΄λŸ¬ν•œ κΈ°μˆ μ„ 톡해 λ§Œλ“€μ–΄μ§„ μ‹€μ œλ‘œ λΆ„μ‚° 처리λ₯Ό ν•΄μ£ΌλŠ” λ§€κ°œμ²΄λŠ” λ‘œλ“œλ°ΈλŸ°μ„œμ΄λ‹€.

- 주둜 λŒ€μš©λŸ‰ νŠΈλž˜ν”½μ„ μ²˜λ¦¬ν•˜λŠ” 방법은 λ‘œλ“œλ°ΈλŸ°μ‹±μ„ ν™œμš©ν•˜μ—¬ μ΄λ€„μ§€μ§€λ§Œ 이 밖에도 λ‹€μ–‘ν•œ λ°©μ‹μœΌλ‘œ λŒ€μš©λŸ‰ νŠΈλž˜ν”½μ„ 처리 ν•  수 μžˆλ‹€.

(3) λ‘œλ“œ λ°ΈλŸ°μ„œ

  • λ‘œλ“œ λ°ΈλŸ°μ„œ: λ‘œλ“œλ°ΈλŸ°μ‹±μ„ ν•΄μ£ΌλŠ” ν•˜λ“œμ›¨μ–΄ 및 μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό λ‘œλ“œλ°ΈλŸ°μ„œλΌκ³  ν•œλ‹€.
  • ν•˜λ“œμ›¨μ–΄ λ‘œλ“œλ°ΈλŸ°μ„œ: 물리적인 λ‘œλ“œλ°ΈλŸ°μ‹± μ „μš© μž₯λΉ„λ‘œ, λ‚΄λΆ€μ μœΌλ‘œ λ‘œλ“œλ°ΈλŸ°μ„œ μ†Œν”„νŠΈμ›¨μ–΄κ°€ νƒ‘μž¬κ°€ λ˜μ–΄μžˆμœΌλ©°, μš”μ²­μ„ μ—¬λŸ¬ μ„œλ²„ μ»΄ν“¨ν„°λ‘œ 뢄산을 ν•΄μ£ΌλŠ” 역할을 함.
  • μ†Œν”„νŠΈμ›¨μ–΄ λ‘œλ“œλ°ΈλŸ°μ„œ: 일반 μ„œλ²„(컴퓨터)에 μ„€μΉ˜ν•΄μ„œ λ‘œλ“œ λ°ΈλŸ°μ„œ 역할을 μˆ˜ν–‰ν•˜κ²Œ λ„μ™€μ£ΌλŠ” λ‘œλ“œλ°ΈλŸ°μ„œμž„.
  • ν΄λΌμš°λ“œ λ‘œλ“œλ°ΈλŸ°μ„œ: ν΄λΌμš°λ“œ ν™˜κ²½μ—μ„œ νŠΈλž˜ν”½μ„ μ—¬λŸ¬ μ„œλ²„λ‘œ λΆ„μ‚°ν•΄μ£ΌλŠ” κ΄€λ¦¬ν˜• μ„œλΉ„μŠ€λ₯Ό μ˜λ―Έν•œλ‹€.

(1) λ‘œλ“œ λ°ΈλŸ°μ‹± μˆœμ„œ

1. μš”μ²­ μˆ˜μ‹ 

ν΄λΌμ΄μ–ΈνŠΈμ˜ μš”μ²­μ΄ λ‘œλ“œ λ°ΈλŸ°μ„œμ— 도착 ν•œλ‹€.

2. μ„œλ²„ 선택

λ‘œλ“œ λ°ΈλŸ°μ„œλŠ” 사전에 μ •μ˜λœ μ•Œκ³ λ¦¬μ¦˜μΈ λΌμš΄λ“œ 둜빈, μ΅œμ†Œ μ—°κ²° 수,IP ν•΄μ‹± 등에 따라 μš”μ²­μ„ 보낼 μ„œλ²„λ₯Ό μ„ νƒν•œλ‹€.

3. μš”μ²­ 전달

μ„ νƒλœ μ„œλ²„λ‘œ μš”μ²­μ„ μ „λ‹¬ν•œλ‹€.

4. 응닡 μˆ˜μ‹ 

μ„œλ²„μ—μ„œ 응닡이 였면 λ‘œλ“œ λ°ΈλŸ°μ„œλŠ” ν΄λΌμ΄μ–ΈνŠΈμ—κ²Œ 응닡을 μ „λ‹¬ν•œλ‹€.

'πŸ› οΈBackend > πŸ“šλ°±μ—”λ“œ 곡뢀' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[Backend] μ• μžμΌ(Agile) μ΄ν•΄ν•˜κΈ°  (0) 2025.06.20
[Backend] μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ„±λŠ₯ μ΅œμ ν™” μ’…λ₯˜  (0) 2025.04.27
[Backend] μ„±λŠ₯ μ΅œμ ν™”λž€?  (0) 2025.04.27
[Backend] Git & Git-hub  (1) 2024.04.30
'πŸ› οΈBackend/πŸ“šλ°±μ—”λ“œ 곡뢀' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
  • [Backend] μ• μžμΌ(Agile) μ΄ν•΄ν•˜κΈ°
  • [Backend] μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ„±λŠ₯ μ΅œμ ν™” μ’…λ₯˜
  • [Backend] μ„±λŠ₯ μ΅œμ ν™”λž€?
  • [Backend] Git & Git-hub
junbin2
junbin2
java.lang.NullPointerException
  • junbin2
    bin's Development Diary
    junbin2
  • 전체
    였늘
    μ–΄μ œ
    • 전체보기 (213) N
      • πŸŽ“λ°©μ†‘ν†΅μ‹ λŒ€ν•™κ΅ (67) N
        • βš™οΈμ»΄ν“¨ν„°μ˜ 이해 (11)
        • πŸ’»μ»΄ν“¨ν„°κ³Όν•™ 개둠 (15)
        • πŸ”’μžλ£Œκ΅¬μ‘° (14)
        • πŸ§¬μ•Œκ³ λ¦¬μ¦˜ (5)
        • βš™οΈμš΄μ˜μ²΄μ œ (8) N
        • πŸ•ΈοΈμ΄μ‚°μˆ˜ν•™ (2)
        • πŸŒμœ λΉ„μΏΌν„°μŠ€ μ»΄ν“¨νŒ… (11)
        • πŸ–₯️컴퓨터과학과 (1)
      • πŸ› οΈBackend (71)
        • πŸ“šλ°±μ—”λ“œ 곡뢀 (5)
        • β˜•Java (23)
        • 🌳Spring (13)
        • βš™οΈC (12)
        • ⚑Python (15)
        • JavaScript (1)
        • πŸ›’οΈDatabase (0)
        • Algorithm Problem Solving (2)
      • 🌐 Network (7)
        • πŸ“œHTTP (7)
      • πŸš€DevOps (1)
      • β›ΊμŠ€νŒŒλ₯΄νƒ€μ½”λ”©ν΄λŸ½ (64)
      • 정보 (2)
      • 정리가 ν•„μš”ν•œ κΈ€ (1)
  • λΈ”λ‘œκ·Έ 메뉴

    • ν™ˆ
    • νƒœκ·Έ
    • λ°©λͺ…둝
  • 링크

    • GitHub
  • 곡지사항

  • 인기 κΈ€

  • νƒœκ·Έ

    C μ–Έμ–΄
    μœ λΉ„μΏΌν„°μŠ€
    μžλ°”
    λ°°μ—΄
    λ°©μ†‘ν†΅μ‹ λŒ€ν•™κ΅
    파이썬
    λ°©μ†‘λŒ€
    spring
    μ•Œκ³ λ¦¬μ¦˜
    Cμ–Έμ–΄
    운영체제
    컴퓨터과학과
    λ°©ν†΅λŒ€
    μœ λΉ„μΏΌν„°μŠ€ μ»΄ν“¨νŒ…κ°œλ‘ 
    ν•¨μˆ˜
    Python
    μ»΄ν“¨ν„°μ˜ 이해
    컴퓨터과학 개둠
    Java
    자료ꡬ쑰
  • 졜근 λŒ“κΈ€

  • 졜근 κΈ€

  • hELLOΒ· Designed Byμ •μƒμš°.v4.10.1
junbin2
λŒ€μš©λŸ‰ νŠΈλž˜ν”½ κ°œλ… 및 처리 방법
μƒλ‹¨μœΌλ‘œ

ν‹°μŠ€ν† λ¦¬νˆ΄λ°”