TIP

λŒ€μš©λŸ‰ νŠΈλ ˆν”½ 처리 - λ‘œλ“œ λ°ΈλŸ°μ‹± κ°œλ… 정리

GREENλ‚˜λ¬΄ 2025. 2. 5. 17:46
728x90

πŸš€ μ‚¬μš©μžκ°€ λŠ˜μ–΄λ‚˜λ©΄, μ„œλ²„λŠ” μ–΄λ–»κ²Œ ν™•μž₯ν• κΉŒ?

μ„œλΉ„μŠ€ 운영 쀑 μ„œλ²„λŠ” λͺ‡ λŒ€κ°€ ν•„μš”ν• κΉŒ?
βœ… μ‚¬μš©μžκ°€ 적닀면 1λŒ€μ˜ μ„œλ²„λ‘œλ„ μΆ©λΆ„ν•˜μ§€λ§Œ,
βœ… μ‚¬μš©μžκ°€ μ¦κ°€ν•˜λ©΄ μ„œλ²„μ˜ λΆ€ν•˜κ°€ 컀지고, μ‹¬ν•˜λ©΄ μ„œλ²„κ°€ λ‹€μš΄λ  μˆ˜λ„ μžˆλ‹€.

이럴 λ•Œ "μŠ€μΌ€μΌ μ—…(Scale-Up)" λ˜λŠ” "μŠ€μΌ€μΌ 아웃(Scale-Out)"을 톡해 μ„œλ²„λ₯Ό ν™•μž₯ν•΄μ•Ό ν•œλ‹€.

πŸ—οΈ μ„œλ²„ ν™•μž₯ 방법

1️⃣ μŠ€μΌ€μΌ μ—… (Scale-Up)

βœ” ν˜„μž¬ μ„œλ²„μ˜ μ„±λŠ₯을 μ—…κ·Έλ ˆμ΄λ“œν•˜λŠ” 방법
βœ” CPU, λ©”λͺ¨λ¦¬, λ””μŠ€ν¬ μΆ”κ°€ν•˜μ—¬ 처리 λŠ₯λ ₯ ν–₯상
βœ” (수직 ν™•μž₯, Vertical Scaling)

 

2️⃣ μŠ€μΌ€μΌ 아웃 (Scale-Out)

βœ” μ„œλ²„ 개수λ₯Ό 늘렀 λΆ€ν•˜λ₯Ό λΆ„μ‚°ν•˜λŠ” 방법
βœ” μ—¬λŸ¬ λŒ€μ˜ μ„œλ²„κ°€ λ™μΌν•œ μš”μ²­μ„ 처리
βœ” (μˆ˜ν‰ ν™•μž₯, Horizontal Scaling)

πŸ’‘ μŠ€μΌ€μΌ 아웃 μ‹œ "λ‘œλ“œ λ°ΈλŸ°μ„œ(Load Balancer)"κ°€ ν•„μš”


πŸ”€ λ‘œλ“œ λ°ΈλŸ°μ„œ(Load Balancer)λž€?

λ‘œλ“œ λ°ΈλŸ°μ‹± : νŠΈλž˜ν”½μ„ μ—¬λŸ¬ μ„œλ²„λ‘œ λΆ„μ‚°ν•˜μ—¬ μ„œλ²„μ˜ λΆ€ν•˜λ₯Ό 쀄이고 μ•ˆμ •μ„±μ„ λ†’μ΄λŠ”κΈ°μˆ .   

λ‘œλ“œ λ°ΈλŸ°μ„œ : λ‘œλ“œ λ°ΈλŸ°μ‹±μ„ μˆ˜ν–‰ν•˜λŠ” ν•˜λ“œμ›¨μ–΄ λ˜λŠ” μ†Œν”„νŠΈμ›¨μ–΄ μž₯λΉ„.

βœ… λ‘œλ“œ λ°ΈλŸ°μ‹±(Load Balancing) μ£Όμš” μ—­ν• 

1️⃣ μš”μ²­ λΆ„μ‚°

μ‚¬μš©μž μš”μ²­μ„ μ—¬λŸ¬ μ„œλ²„λ‘œ λΆ„μ‚° →

βœ”  λΆ€ν•˜ λΆ„μ‚° : νŠΉμ • μ„œλ²„ κ³ΌλΆ€ν•˜ λ°©μ§€

βœ”  ν™•μž₯μ„± : μ„±λŠ₯ 및 속도 μ΅œμ ν™”

2️⃣ ν—¬μŠ€ 체크 (Health Check)

  λ‘œλ“œ λ°ΈλŸ°μ„œλŠ” λ°±μ—”λ“œ μ„œλ²„μ˜ μƒνƒœλ₯Ό 주기적으둜 ν™•μΈν•˜λŠ” ν—¬μŠ€ 체크λ₯Ό μˆ˜ν–‰ν•¨.
 βœ”   μ •상적인 응닡이 μ—†μœΌλ©΄ ν•΄λ‹Ή μ„œλ²„ μ œμ™Έ
 βœ”   μž₯μ•  감지 μ‹œ λ‹€λ₯Έ μ„œλ²„λ‘œ νŠΈλž˜ν”½ μ „ν™˜

 

3️⃣ SSL 처리

βœ”  HTTPSλ₯Ό 톡해 μ•”ν˜Έν™”λœ 데이터 μ†‘μˆ˜μ‹  κ°€λŠ₯

βœ”  λ‘œλ“œ λ°ΈλŸ°μ„œκ°€ μ•”ν˜Έν™” 처리 → μ›Ή μ„œλ²„ λΆ€λ‹΄ κ°μ†Œ

4️⃣ λΆ€μ • μš”μ²­ λŒ€μ‘

βœ”  λΆ€μ • μš”μ²­(DoS, DDoS 곡격 λ“±) 차단

βœ”  μ›Ή μ„œλ²„κ°€ μ•„λ‹Œ λ‘œλ“œ λ°ΈλŸ°μ„œμ—μ„œ λ¨Όμ € 필터링


πŸ”Ήλ‘œλ“œ λ°ΈλŸ°μ„œ μœ ν˜•

βœ…λ‘œλ“œ λ°ΈλŸ°μ„œλŠ” 'OSI 7 Layerλ₯Ό κΈ°μ€€μœΌλ‘œ λΆ€ν•˜λ₯Ό μ–΄λ–»κ²Œ λΆ„μ‚°ν• μ§€'에 따라 μ’…λ₯˜κ°€ λ‚˜λ‰œλ‹€. 
2, 3계측을 κΈ°μ€€μœΌλ‘œ λΆ€ν•˜λ₯Ό λΆ„μ‚°ν•˜λ©΄ κ° L2, L3인 λ°©μ‹μ΄λ‹€. 

μƒμœ„ κ³„측은 ν•˜μœ„ κ³„μΈ΅μ˜ λ°μ΄ν„°λ₯Ό λͺ¨λ‘ κ°€μ§€κΈ° λ•Œλ¬Έμ—, μƒμœ„ κ³„μΈ΅μΌμˆ˜λ‘ μ„¬μ„Έν•œ λ‘œλ“œ λ°ΈλŸ°μ‹±μ΄ κ°€λŠ₯ν•˜κ³  ν•˜μœ„ κ³„μΈ΅μΌμˆ˜λ‘ κ°„λ‹¨ν•œ λ‘œλ“œ λ°ΈλŸ°μ‹±λ§Œ κ°€λŠ₯ν•˜λ‹€. 

 

βœ… 주둜 μ‚¬μš©λ˜λŠ” λ‘œλ“œ λ°ΈλŸ°μ„œ : L4 vs L7 λ‘œλ“œ λ°ΈλŸ°μ„œ

κΈ°μ€€ L4 (Transport Layer) L7 (Application Layer)
속도 빠름 μƒλŒ€μ μœΌλ‘œ 느림
νŠΈλž˜ν”½ λΆ„μ‚° κΈ°μ€€ IP, ν¬νŠΈν”„λ‘œν† μ½œ URL, μΏ ν‚€ν—€λ”μš”μ²­ λ‚΄μš©
μ„ΈλΆ€ νŠΈλž˜ν”½ μ œμ–΄ λΆˆκ°€λŠ₯ κ°€λŠ₯
μ£Όμš” ν™œμš© TCP/UDP μ„œλΉ„μŠ€κ²Œμž„ μ„œλ²„ API, λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€μ›Ή μ„œλΉ„μŠ€

ν˜„μž¬ L7 λ‘œλ“œ λ°ΈλŸ°μ„œ(ALB λ“±)λ₯Ό μ„ ν˜Έν•˜λŠ” μΆ”μ„Έ. μ„Έμ…˜ μœ μ§€μ •κ΅ν•œ νŠΈλž˜ν”½ μ œμ–΄κ°€ ν•„μš”ν•œ μ„œλΉ„μŠ€μ— 적합


βœ… L4 λ‘œλ“œ λ°ΈλŸ°μ„œλŠ” λΉ λ₯΄κ³  λ‹¨μˆœν•œ 뢄산을 μˆ˜ν–‰ν•˜κ³ , L7 λ‘œλ“œ λ°ΈλŸ°μ„œλŠ” HTTP μš”μ²­μ„ μ„Έλ°€ν•˜κ²Œ λΆ„μ„ν•˜μ—¬ νŠΈλž˜ν”½μ„ μ΅œμ ν™”ν•œλ‹€.
βœ… νŠΈλž˜ν”½ νŒ¨ν„΄κ³Ό μ„œλΉ„μŠ€ μš”κ΅¬μ‚¬ν•­μ— 따라 L4 λ˜λŠ” L7 λ‘œλ“œ λ°ΈλŸ°μ„œλ₯Ό μ„ νƒν•˜μ—¬ μ‚¬μš©ν•˜λ©΄ λœλ‹€.

 

 

L4 λ‘œλ“œ λ°ΈλŸ°μ‹± 방법

 L4 Load Balancer = CLB(Connection Load Balancer), SLB(Session Load Balancer)

λ„€νŠΈμ›Œν¬ κ³„μΈ΅μ΄λ‚˜ νŠΈλžœμŠ€ν¬νŠΈ κ³„μΈ΅μ˜ μ •보λ₯Ό λ°”νƒ•μœΌλ‘œ λ‘œλ“œλ₯Ό λΆ„μ‚°ν•œλ‹€. 

즉, IPμ£Όμ†Œλ‚˜ 포트번호, MACμ£Όμ†Œ, 전솑 ν”„λ‘œν† μ½œ 등에 따라 νŠΈλž˜ν”½μ„ λ‚˜λˆ„κ³  λΆ„μ‚°μ²˜λ¦¬ μˆ˜ν–‰.

  1. λΌμš΄λ“œ 둜빈(Round Robin)
    • μ„œλ²„μ— 순차적으둜 νŠΈλž˜ν”½μ„ λΆ„λ°°
    • κ· λ“± 배뢄이 κ°€λŠ₯ν•˜μ§€λ§Œ μ„œλ²„ μ„±λŠ₯은 κ³ λ €ν•˜μ§€ μ•ŠμŒ
  2. κ°€μ€‘μΉ˜ 기반(Weighted Round Robin)
    • μ„±λŠ₯이 높은 μ„œλ²„μ— 더 λ§Žμ€ μš”μ²­μ„ λ°°μ •
  3. μ΅œμ†Œ μ—°κ²°(Least Connection)
    • ν˜„μž¬ μ—°κ²° μˆ˜κ°€ κ°€μž₯ 적은 μ„œλ²„λ‘œ νŠΈλž˜ν”½μ„ 전달
    • μ‹€μ‹œκ°„ λΆ€ν•˜λ₯Ό κ³ λ €ν•  수 μžˆμ–΄ 효율적
  4. 응닡 μ‹œκ°„ 기반(Response Time)
    • 응닡 μ‹œκ°„μ΄ λΉ λ₯Έ μ„œλ²„μ— μš°μ„ μ μœΌλ‘œ νŠΈλž˜ν”½μ„ 전달
  5. ν•΄μ‹œ(Hash) 기반
    • νŠΉμ • ν΄λΌμ΄μ–ΈνŠΈ(IP λ“±)λŠ” νŠΉμ • μ„œλ²„μ—λ§Œ μ—°κ²°
  6. λŒ€μ—­ν­(Bandwidth) 기반
    • μ„œλ²„μ˜ λ„€νŠΈμ›Œν¬ λŒ€μ—­ν­μ„ κ³ λ €ν•˜μ—¬ νŠΈλž˜ν”½ λΆ„μ‚°

 

L7 λ‘œλ“œ λ°ΈλŸ°μ‹± 방법

L4 Load Balancer의 κΈ°λŠ₯을 ν¬ν•¨ν•˜λ©° OSI 7κ³„μΈ΅μ˜ ν”„λ‘œν† μ½œμ„ λ°”νƒ•μœΌλ‘œλ„ λΆ„μ‚° μ²˜λ¦¬κ°€ κ°€λŠ₯ν•˜λ‹€.
HTTP 헀더, μΏ ν‚€ λ“± μ‚¬μš©μžμ˜ μš”μ²­μ„ 뢄석해 μ •κ΅ν•œ λΆ„μ‚° κ°€λŠ₯

  1. URL Switching
    • νŠΉμ • URL νŒ¨ν„΄μ— 따라 λ‹€λ₯Έ μ„œλ²„λ‘œ μ—°κ²°
    • 예) /images/* μš”μ²­μ€ 이미지 μ„œλ²„λ‘œ 전달
  2. Context Switching
    • μš”μ²­λœ λ¦¬μ†ŒμŠ€ μœ ν˜•μ— 따라 μ„œλ²„λ₯Ό λ‹€λ₯΄κ²Œ μ—°κ²°
    • 예) .jpg, .png μš”μ²­μ€ λ―Έλ””μ–΄ μ„œλ²„λ‘œ 전달
  3. μΏ ν‚€ 기반 지속성(Persistence with Cookies)
    • ν΄λΌμ΄μ–ΈνŠΈκ°€ 이전에 μ—°κ²°ν–ˆλ˜ μ„œλ²„λ‘œ μ§€μ†μ μœΌλ‘œ μ—°κ²°

 

λ‘œλ“œ λ°ΈλŸ°μ„œ μž₯점 & 단점

βœ… μž₯점

βœ” μ„œλ²„ λ‹€μš΄ μ‹œ μžλ™μœΌλ‘œ λ‹€λ₯Έ μ„œλ²„λ‘œ μš”μ²­μ„ μ „λ‹¬ν•˜μ—¬ μ•ˆμ •μ„± 확보
βœ” νŠΈλž˜ν”½μ„ 효율적으둜 λΆ„μ‚°ν•΄ μ„±λŠ₯ ν–₯상
βœ” ν™•μž₯μ„±(Scale-out) 용이

❌ 단점

βœ– μ„Έμ…˜ 관리 문제 (Sticky Session ν•„μš”)

  • λ‘œλ“œλ°ΈλŸ°μ„œλ₯Ό μ‚¬μš©ν•  λ•Œ μ–΄λ €μš΄ 문제 쀑 ν•˜λ‚˜λŠ” μ„Έμ…˜ 데이터λ₯Ό κ΄€λ¦¬ν•˜λŠ” 것이닀.
  • ν΄λΌμ΄μ–ΈνŠΈμ˜ μ—°κ²° 정보λ₯Ό μ €μž₯ν•˜λŠ” μ„Έμ…˜μ΄ λ‘œλ“œλ°ΈλŸ°μ‹±μ„ 톡해 ν•˜λ‚˜μ˜ μ„œλ²„ μž₯비에 μ €μž₯이 λ˜λŠ” 경우, μΆ”ν›„ λ‹€λ₯Έ μ„œλ²„λ‘œ μ ‘μ†ν•˜κ²Œ 되면, ν•΄λ‹Ή ν΄λΌμ΄μ–ΈνŠΈμ˜ μ„Έμ…˜μ΄ μœ μ§€λ˜μ§€ μ•ŠλŠ”λ‹€. 즉, μ„œλ²„μ— μ•‘μ„ΈμŠ€ ν•  λ•Œλ§ˆλ‹€ λ‹€λ₯Έ μ„Έμ…˜μ„ μ‚¬μš©ν•œλ‹€λ©΄ νŠΉμ • μ‚¬μš©μžμ˜ 정보λ₯Ό μΌκ΄€μ„±μžˆκ²Œ μœ μ§€ν•  수 μ—†κ²Œ λœλ‹€.
  • μ΄λŸ¬ν•œ 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ μ„Έμ…˜μ„ κ³ μ •(session sticky)ν•œλ‹€. ν•˜μ§€λ§Œ κ³ μ •λœ μ„Έμ…˜μ˜ λ…Έλ“œμ— μž₯μ• κ°€ λ°œμƒν•˜λ©΄ κ³ μ •ν•œ μ˜λ―Έκ°€ μ—†μ–΄μ§„λ‹€.

βœ– λ‘œλ“œ λ°ΈλŸ°μ„œ μžμ²΄κ°€ 단일 μž₯애점(SPOF, Single Point of Failure)이 될 수 있음
βœ– 높은 μ„±λŠ₯을 원할 경우 λΉ„μš© 증가

 

L4/L7 λ‘œλ“œ λ°ΈλŸ°μ„œμ˜ μ„±λŠ₯ μ§€ν‘œ

  • μ΄ˆλ‹Ή μ—°κ²° 수 (CPS: Connections per Second)
    • μ΄ˆλ‹Ή 처리 κ°€λŠ₯ν•œ TCP μ—°κ²° 수
  • λ™μ‹œ μ—°κ²° 수 (Concurrent Connections)
    • μœ μ§€ν•  수 μžˆλŠ” μ΅œλŒ€ λ™μ‹œ μ„Έμ…˜ 수
  • 처리 μš©λŸ‰ (Throughput)
    • μ΄ˆλ‹Ή 처리 κ°€λŠ₯ν•œ λ°μ΄ν„°λŸ‰ (bps λ˜λŠ” pps λ‹¨μœ„)

 


πŸ”Ή AWS λ‘œλ“œ λ°ΈλŸ°μ„œ μ’…λ₯˜

AWSμ—μ„œλŠ” ELB(Elastic Load Balancing) μ„œλΉ„μŠ€λ₯Ό 톡해 λ‹€μ–‘ν•œ λ‘œλ“œ λ°ΈλŸ°μ„œλ₯Ό 제곡.

λ‘œλ“œ λ°ΈλŸ°μ„œ νŠΉμ§• μ‚¬μš© 사둀

λ‘œλ“œ λ°ΈλŸ°μ„œ μœ ν˜• νŠΉμ§• μ΄μš©μ‚¬λ‘€
ALB (Application Load Balancer) L7 κΈ°λ°˜
HTTP/HTTPS νŠΈλž˜ν”½ μ΅œμ ν™”, κ³ κΈ‰ λΌμš°νŒ… κΈ°λŠ₯ 제곡
μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜, API μ„œλ²„
NLB (Network Load Balancer) L4 κΈ°λ°˜
μ΄ˆκ³ μ„±λŠ₯, μ €μ§€μ—°, TCP/UDP 지원
κ²Œμž„ μ„œλ²„, 금육 μ‹œμŠ€ν…œ
CLB (Classic Load Balancer) μ˜ˆμ „ 방식, ν˜„μž¬λŠ” 거의 μ‚¬μš©λ˜μ§€ μ•ŠμŒ
λ³΄μ•ˆ 및 λ„€νŠΈμ›Œν¬ 가상 μ–΄ν”ŒλΌμ΄μ–ΈμŠ€μš©
κΈ°μ‘΄ AWS μ‹œμŠ€ν…œκ³Ό ν˜Έν™˜ ν•„μš” μ‹œ

aws의 λ‘œλ“œ λ°ΈλŸ°μ„œ μœ ν˜• μ •리
1. Application Load Balancer (ALB)
• νŠΉμ§•: HTTP λ° HTTPS νŠΈλž˜ν”½μ„ μ²˜λ¦¬ν•˜λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— μ ν•© (API μ„œλ²„)
• μž‘동 λ°©μ‹: μš”μ²­(Request) μˆ˜μ€€μ—μ„œ μž‘동
• μ μš© λŒ€μƒ:
  • λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€
  • μ»¨ν…Œμ΄λ„ˆ κΈ°λ°˜ μ• ν”Œλ¦¬μΌ€μ΄μ…˜
  • κ³ κΈ‰ λΌμš°νŒ… κΈ°λŠ₯ ν•„μš” μ‹œ
• λ‹€μ΄μ–΄κ·Έλž¨: (Application Load Balancer κ΅¬μ‘° ν¬ν•¨)
• μƒμ„± κ°€λŠ₯


2. Network Load Balancer (NLB)
• νŠΉμ§•: μ΄ˆκ³ μ„±λŠ₯, μ €μ§€μ—° λ„€νŠΈμ›Œν¬ νŠΈλž˜ν”½ μ²˜λ¦¬μ— μ ν•©(WebSocket μ„œλ²„)
• μž‘동 λ°©μ‹: μ—°κ²°(Connection) μˆ˜μ€€μ—μ„œ μž‘동
• μ μš© λŒ€μƒ:
  • μ΄ˆλ‹Ή μˆ˜λ°±λ§Œ κ°œμ˜ μš”μ²­ μ²˜λ¦¬
  • λŒ€κ·œλͺ¨ TLS μ˜€ν”„λ‘œλ”©
  • μ€‘μ•™ μ§‘μ€‘ν™”λœ μΈμ¦μ„œ λ°°ν¬
  • UDP νŠΈλž˜ν”½ μ§€μ›
  • κ³ μ • IP μ£Όμ†Œκ°€ ν•„μš”ν•œ μ„œλΉ„μŠ€
• λ‹€μ΄μ–΄κ·Έλž¨: (Network Load Balancer κ΅¬μ‘° ν¬ν•¨)
• μƒμ„± κ°€λŠ₯


3. Gateway Load Balancer (GLB)
• νŠΉμ§•: μ„œλ“œνŒŒν‹° κ°€μƒ μ–΄ν”ŒλΌμ΄μ–ΈμŠ€ κ΄€λ¦¬μ— μ ν•©
• μž‘동 λ°©μ‹: GENEVE ν”„λ‘œν† μ½œ μ§€μ›
• μ μš© λŒ€μƒ:
  • λ³΄μ•ˆ λ° κ·œμ • μ€€μˆ˜ κ°•ν™”λ₯Ό μœ„ν•œ λ„€νŠΈμ›Œν¬ μ–΄ν”ŒλΌμ΄μ–ΈμŠ€
  • μ •μ±… κΈ°λ°˜ νŠΈλž˜ν”½ μ œμ–΄
• λ‹€μ΄μ–΄κ·Έλž¨: (Gateway Load Balancer κ΅¬μ‘° ν¬ν•¨)
• μƒμ„± κ°€λŠ₯


🎯 μš”μ²­ λΌμš°νŒ…(Request Routing)

λ‘œλ“œ λ°ΈλŸ°μ„œλŠ” μš”μ²­μ„ λ‚΄λΆ€ μ„œλ²„λ‘œ 전달할 λ•Œ ν¬νŠΈλ‚˜ ν”„λ‘œν† μ½œμ„ λ³€ν™˜ν•  수 μžˆλ‹€.

μ˜ˆμ‹œ:
βœ… ν΄λΌμ΄μ–ΈνŠΈ → HTTPS 80 포트 μš”μ²­
βœ… λ‘œλ“œ λ°ΈλŸ°μ„œ → λ‚΄λΆ€ μ„œλ²„λ‘œ HTTP 8080 λ³€ν™˜
(SSL 처리 뢀담을 λ‘œλ“œ λ°ΈλŸ°μ„œμ—μ„œ μ²˜λ¦¬ν•˜κΈ° λ•Œλ¬Έ!)

 

πŸŽƒ AWSμ—μ„œ ALB μƒμ„±ν•˜κΈ°

1️⃣ κ°€μš© μ˜μ—­ μ„€μ •

βœ” μš”μ²­μ„ λΆ„μ‚°ν•  κ°€μš© μ˜μ—­ 선택
βœ” Public Subnet에 μ—°κ²° ν•„μˆ˜!

2️⃣ λ³΄μ•ˆ κ·Έλ£Ή μ„€μ •

βœ” HTTP/HTTPS μš”μ²­μ„ 받을 λ³΄μ•ˆ κ·Έλ£Ή μ„€μ •

3️⃣ λŒ€μƒ κ·Έλ£Ή 생성

βœ” λ‘œλ“œ λ°ΈλŸ°μ„œλ₯Ό μ—°κ²°ν•  μ›Ή μ„œλ²„ κ·Έλ£Ή 생성
βœ” 포트(예: 8080) μ„€μ •
βœ” ν—¬μŠ€ 체크(Health Check) 경둜 μž…λ ₯ → 정기적인 μ„œλ²„ μƒνƒœ 검사

4️⃣ λ¦¬μŠ€λ„ˆ 및 λΌμš°νŒ… μ„€μ •

βœ” λ¦¬μŠ€λ„ˆ 생성 (예: HTTP 80)
βœ” μƒμ„±ν•œ λŒ€μƒ κ·Έλ£Ήκ³Ό μ—°κ²°

βœ… ALB 생성 ν›„, DNS μ£Όμ†Œλ₯Ό μ‚¬μš©ν•΄ 접속 κ°€λŠ₯!


πŸ”„ μ˜€ν† μŠ€μΌ€μΌλ§ ( Auto Scaling)

βœ… μ˜€ν†  μŠ€μΌ€μΌλ§ κ°œλ…

 βœ”  νŠΈλž˜ν”½μ΄ μ¦κ°€ν•˜λ©΄ μžλ™μœΌλ‘œ EC2(μ„œλ²„μΈμŠ€ν„΄μŠ€λ₯Ό ν™•μž₯ν•˜κ³ ,
 βœ”  νŠΈλž˜ν”½μ΄ κ°μ†Œν•˜λ©΄ λΆˆν•„μš”ν•œ μΈμŠ€ν„΄μŠ€λ₯Ό 쀄여 λΉ„μš© 절감이 κ°€λŠ₯.
 βœ”  AWS μ˜€ν†  μŠ€μΌ€μΌλ§ κ·Έλ£Ή(ASG) ν™œμš© κ°€λŠ₯

βœ… μ˜€ν†  μŠ€μΌ€μΌλ§ μž₯점

βœ”  νŠΈλž˜ν”½ 증가 μ‹œ μžλ™μœΌλ‘œ μ„œλ²„ μΆ”κ°€

βœ”  μ„œλ²„ κ³ΌλΆ€ν•˜ λ°©μ§€

βœ”  νŠΈλž˜ν”½ κ°μ†Œ μ‹œ μžλ™μœΌλ‘œ λΆˆν•„μš”ν•œ μ„œλ²„ μ‚­μ œ (λΉ„μš© 절감)

βœ”  λ‘œλ“œ λ°ΈλŸ°μ„œ(ALB)와 ν•¨κ»˜ μ‚¬μš©ν•˜λ©΄ νŠΈλž˜ν”½μ„ μžλ™μœΌλ‘œ λΆ„μ‚° κ°€λŠ₯

 

 


 

πŸ”₯ λ‘œλ“œ λ°ΈλŸ°μ‹± vs μ˜€ν†  μŠ€μΌ€μΌλ§

κΈ°λŠ₯ μ„€λͺ…

λ‘œλ“œ λ°ΈλŸ°μ‹± νŠΈλž˜ν”½μ„ μ—¬λŸ¬ μ„œλ²„λ‘œ λΆ„μ‚°
μ˜€ν†  μŠ€μΌ€μΌλ§ (Auto Scaling) μ„œλ²„λ₯Ό μžλ™μœΌλ‘œ μΆ”κ°€/μ‚­μ œν•˜μ—¬ ν™•μž₯

βœ… νŠΈλž˜ν”½ 증가 → μ„œλ²„ μžλ™ μΆ”κ°€
βœ… νŠΈλž˜ν”½ κ°μ†Œ → μ„œλ²„ μžλ™ μ‚­μ œ (λΉ„μš© 절감!)
βœ… AWS μ˜€ν†  μŠ€μΌ€μΌλ§ κ·Έλ£Ή(ASG) ν™œμš© κ°€λŠ₯


πŸ› οΈ NestJSμ—μ„œ λ‘œλ“œ λ°ΈλŸ°μ‹± 적용 방법

1️⃣ Nginx Reverse Proxy ν™œμš©

http {
  upstream nest_servers {
    server 127.0.0.1:3000;
    server 127.0.0.1:3001;
    server 127.0.0.1:3002;
  }
  server {
    listen 80;
    location / {
      proxy_pass http://nest_servers;
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
    }
  }
}

βœ” ν΄λΌμ΄μ–ΈνŠΈ μš”μ²­μ„ μžλ™μœΌλ‘œ μ—¬λŸ¬ NestJS μ„œλ²„λ‘œ λΆ„μ‚°

2️⃣ AWS ALB + μ˜€ν†  μŠ€μΌ€μΌλ§ ν™œμš©

βœ” νŠΈλž˜ν”½ 증가 μ‹œ EC2 μžλ™ ν™•μž₯
βœ” λ‘œλ“œ λ°ΈλŸ°μ„œμ™€ μ—°κ³„ν•˜μ—¬ λΆ€ν•˜ λΆ„μ‚°

3️⃣ PM2 ν΄λŸ¬μŠ€ν„° λͺ¨λ“œ ν™œμš©

npm install pm2 -g
pm2 start dist/main.js -i max

βœ” 단일 μ„œλ²„ λ‚΄μ—μ„œλ„ λ©€ν‹° ν”„λ‘œμ„ΈμŠ€λ‘œ νŠΈλž˜ν”½ λΆ„μ‚° κ°€λŠ₯


🎯 결둠

βœ… μ‚¬μš©μžκ°€ λ§Žμ•„μ§„λ‹€λ©΄? → λ‘œλ“œ λ°ΈλŸ°μ‹± + μ˜€ν†  μŠ€μΌ€μΌλ§ 적용 ν•„μˆ˜!
βœ… νŠΈλž˜ν”½ 증가 μ‹œ μžλ™ ν™•μž₯? → AWS μ˜€ν†  μŠ€μΌ€μΌλ§ κ·Έλ£Ή(ASG) ν™œμš©!
βœ… μ„Έμ…˜ μœ μ§€ ν•„μš”? → Sticky Session or μ„Έμ…˜ ν΄λŸ¬μŠ€ν„°λ§ κ³ λ €!

πŸ’‘ AWS ALB + μ˜€ν†  μŠ€μΌ€μΌλ§ 적용 μ‹œ μžλ™ 운영 κ°€λŠ₯ πŸš€

 

 


μ°Έκ³ 

 

https://chunsubyeong.tistory.com/106

https://kchanguk.tistory.com/146

https://sjh9708.tistory.com/98

https://dev.classmethod.jp/articles/load-balancing-types-and-algorithm/

https://www.smileshark.kr/post/what-is-a-load-balancer-a-comprehensive-guide-to-aws-load-balancer

 

 

λŒ€μš©λŸ‰ νŠΈλ ˆν”½ μ²˜λ¦¬λ°©λ²•

https://hs-backend.tistory.com/228

 

nestjs 적용

https://andongmin.com/docs/nest/ch9/ch9-3

https://guti-coding.tistory.com/197?category=1195671

 

aws μ„€μ •

https://velog.io/@chaerim1001/AWS%EB%A1%9C-%EC%8B%9C%EC%9E%91%ED%95%98%EB%8A%94-%EC%9D%B8%ED%94%84%EB%9D%BC-%EA%B5%AC%EC%B6%95%EC%9D%98-%EC%A0%95%EC%84%9D-Ch07.-%EB%A1%9C%EB%93%9C-%EB%B0%B8%EB%9F%B0%EC%84%9C-%EC%A4%80%EB%B9%84%ED%95%98%EA%B8%B0

 

https://jforj.tistory.com/278


https://aws.amazon.com/ko/elasticloadbalancing/?did=ft_card&trk=ft_card

λ‘œλ“œλ²¨λŸ°μ„œ 컨트둀러

https://docs.aws.amazon.com/eks/latest/userguide/aws-load-balancer-controller.html

 

κ°€λΉ„μ•„ λ„λ©”μΈμœΌλ‘œ μΈμ¦μ„œ λ°œκΈ‰

https://rimiyeyo.tistory.com/entry/Route53%EC%9D%84-%ED%99%9C%EC%9A%A9%ED%95%B4-%EB%8F%84%EB%A9%94%EC%9D%B8%EA%B3%BC-%EC%97%B0%EA%B2%B0%ED%95%98%EA%B3%A0-ACM%EC%9D%B8%EC%A6%9D%EC%84%9C-%EB%A7%8C%EB%93%A4%EC%96%B4%EB%B3%B4%EA%B8%B0

 

 

정리쀑

더보기


1️⃣ 2️⃣ 3️⃣ 4️⃣ 5️⃣ 6️⃣ 7️⃣ 8️⃣ 9️⃣ πŸ”Ÿ



5. Sticky Session (μ„Έμ…˜ μœ μ§€)

기본적으둜 λ‘œλ“œ λ°ΈλŸ°μ„œλŠ” μš”청을 μ—¬λŸ¬ μ„œλ²„에 λžœλ€ν•˜κ²Œ λΆ„λ°°ν•˜μ§€λ§Œ,둜그인 μœ μ§€μ™€ κ°™μ€ μ„Έμ…˜μ΄ ν•„μš”ν•œ κ²½μš° κ°™μ€ μ‚¬μš©μžμ˜ μš”청을 λ™μΌν•œ μ„œλ²„λ‘œ λ³΄λ‚΄μ•Ό ν•¨.
βœ… Sticky Session λ°©μ‹

1️⃣ λ‘œλ“œ λ°ΈλŸ°μ„œμ—μ„œ μ²˜λ¦¬ (AWS ALBμ—μ„œ Sticky Session μ„€μ • κ°€λŠ₯)βœ”οΈ μΏ ν‚€λ₯Ό μ΄μš©ν•˜μ—¬ νŠΉμ • μ‚¬μš©μžμ˜ μš”청을 λ™μΌν•œ μ„œλ²„λ‘œ μœ μ§€
2️⃣ μ„Έμ…˜ ν΄λŸ¬μŠ€ν„°λ§βœ”οΈ μ„œλ²„ κ°„ μ„Έμ…˜μ„ κ³΅μœ ν•˜λŠ” λ°©μ‹βœ”️ μ„œλ²„ μž₯μ•  μ‹œμ—λ„ μ„Έμ…˜ μœ μ§€ κ°€λŠ₯βœ”οΈ λ‹¨μ : μƒˆλ‘œμš΄ μ„œλ²„ μΆ”κ°€ μ‹œ κΈ°μ‘΄ μ„œλ²„ μ„€μ • μ—…λ°μ΄νŠΈ ν•„μš”

Sticky Session μ μš© μΆ”μ²œ μ‚¬λ‘€
둜그인 μƒνƒœ μœ μ§€κ°€ ν•„μš”ν•œ μ›Ή μ„œλΉ„μŠ€
νŠΉμ • μ‚¬μš©μžμ˜ μ„Έμ…˜ λ°μ΄ν„°κ°€ νŠΉμ • μ„œλ²„에 μ’…속될 κ²½μš°





6. NestJSμ—μ„œ λ‘œλ“œ λ°ΈλŸ°μ‹± & μ˜€ν†  μŠ€μΌ€μΌλ§ μ μš©
βœ… 1) Nginx Reverse Proxy ν™œμš©
πŸ“Œ Nginx μ„€μ • μ˜ˆμ‹œ
// /etc/nginx/nginx.conf
http {
 upstream nest_servers {
  server 127.0.0.1:3000;
  server 127.0.0.1:3001;
  server 127.0.0.1:3002;
 }
 server {
  listen 80;
  location / {
   proxy_pass http://nest_servers;
   proxy_set_header Host $host;
   proxy_set_header X-Real-IP $remote_addr;
  }
 }
}

βœ”οΈ κ²°κ³Ό: ν΄λΌμ΄μ–ΈνŠΈ μš”청이 μžλ™μœΌλ‘œ μ—¬λŸ¬ NestJS μΈμŠ€ν„΄μŠ€λ‘œ λΆ„산됨


βœ… 2) AWS λ‘œλ“œ λ°ΈλŸ°μ„œ & μ˜€ν†  μŠ€μΌ€μΌλ§ ν™œμš©
AWS ALB + ASG (Auto Scaling Group) μ‘°ν•© μΆ”μ²œ
μš”μ²­λŸ‰μ— λ”°λΌ EC2 μΈμŠ€ν„΄μŠ€ μžλ™ μ¦κ°
νŠΈλž˜ν”½ μ¦κ°€ μ‹œ μ„œλ²„ μžλ™ μΆ”κ°€ → κ³ΌλΆ€ν•˜ λ°©μ§€
νŠΈλž˜ν”½ κ°μ†Œ μ‹œ λΆˆν•„μš”ν•œ μ„œλ²„ μžλ™ μ‚­μ œ → λΉ„μš© μ ˆκ°


βœ… 3) PM2 ν΄λŸ¬μŠ€ν„° λͺ¨λ“œ ν™œμš© (단일 μ„œλ²„ λ‚΄ λ©€ν‹° ν”„λ‘œμ„ΈμŠ€)
πŸ“Œ NestJS ν΄λŸ¬μŠ€ν„°λ§ μ‹€ν–‰ λ°©λ²•
npm install pm2 -g
pm2 start dist/main.js -i max

βœ”οΈ λ‹¨μΌ μ„œλ²„μ—μ„œλ„ μ—¬λŸ¬ κ°œμ˜ NestJS ν”„λ‘œμ„ΈμŠ€λ₯Ό μ‹€ν–‰ν•˜μ—¬ νŠΈλž˜ν”½ λΆ„μ‚° κ°€λŠ₯




7. κ²°λ‘ 
βœ… μ„œλ²„κ°€ 2개 μ΄μƒμ΄λΌλ©΄? → λ‘œλ“œ λ°ΈλŸ°μ‹± + μ˜€ν†  μŠ€μΌ€μΌλ§ μ μš© ν•„μˆ˜βœ… νŠΈλž˜ν”½ μ¦κ°€ μ‹œ μžλ™ ν™•μž₯? → AWS μ˜€ν†  μŠ€μΌ€μΌλ§ κ·Έλ£Ή(ASG) ν™œμš©βœ… μ„Έμ…˜ μœ μ§€ ν•„μš”? → Sticky Session or μ„Έμ…˜ ν΄λŸ¬μŠ€ν„°λ§ κ³ λ €
βœ”οΈ μ§€μ›…λ‹˜κ³Ό μ‘°μœ¨ν•˜μ—¬ CRCDλ₯Ό ν†΅ν•΄ λͺ¨λ“  μΈμŠ€ν„΄μŠ€ μ—…λ°μ΄νŠΈ ν•„μˆ˜βœ”οΈ AWS λ‘œλ“œ λ°ΈλŸ°μ„œ(ALB) + μ˜€ν†  μŠ€μΌ€μΌλ§ μ μš© μ‹œ μžλ™ μš΄μ˜ κ°€λŠ₯ πŸš€



_________________________________________________________________________



ν΄λŸ¬μŠ€ν„°λ§(Clustering)
Clusteringμ΄λž€ μ—¬λŸ¬ λŒ€μ˜ μ»΄ν“¨ν„°λ₯Ό λ˜‘같은 κ΅¬μ„±μ˜ μ„œλ²„ꡰ을 λ³‘λ ¬λ‘œ μ—°κ²°ν•œ μ‹œμŠ€ν…œμœΌλ‘œ λ§ˆμΉ˜ ν•˜λ‚˜μ˜ μ»΄ν“¨ν„°μ²˜λŸΌ μ‚¬μš©ν•˜λŠ” κ²ƒμ„ λ§ν•œλ‹€.

Clustering ν™˜κ²½μ—μ„œλŠ” νŠΉμ • μž₯비에 λ¬Έμ œκ°€ μƒκΈ°κ±°λ‚˜ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— λ¬Έμ œκ°€ μƒκΈ°λ”라도, μ „체적인 μ„œλΉ„μŠ€μ—λŠ” μ˜ν–₯을 μ£Όμ§€ μ•Šκ²Œ μ œμ–΄ν•  μˆ˜ μžˆλ‹€.
Clustering은 Virtual IP(가상 IP) κΈ°λ°˜μœΌλ‘œ κ΅¬ν˜„λ˜λŠ”λ°, μ„œλΉ„μŠ€λ₯Ό μ œκ³΅ν•˜λŠ” μ‹€μ œ μž₯λΉ„λŠ” Physical IPλ₯Ό κ°€μ§€κ³ , λ°μ΄ν„°μ˜ μ²˜λ¦¬λŠ” Virtual IPλ₯Ό ν†΅ν•΄ μ²˜λ¦¬ν•œλ‹€. μ΄λ ‡κ²Œ λ‚΄λΆ€μ˜ μ‹œμŠ€ν…œμ€ μ² μ €ν•˜κ²Œ κ°€λ € μΆ”μƒν™”ν•˜λŠ” κ²ƒμ΄ μ›μΉ™μ΄λ‹€.
λ‘œλ“œλ°ΈλŸ°μ„œμ— μ˜ν•΄ κ° Clustering된 μ„œλ²„에 μ˜ν•΄ μ„œλΉ„μŠ€κ°€ μ§„행이 λœλ‹€.
정리
Load Balancing은 L4 or L7이 μ—¬λŸ¬λŒ€μ˜ μ„œλ²„에 νŒ¨ν‚·μ„ λΆ€ν•˜λΆ„μ‚°μ‹œμΌœμ£ΌλŠ” κ²ƒμ΄κ³  Clustering은 μ—¬λŸ¬λŒ€μ˜ μ„œλ²„λ₯Ό ν•˜λ‚˜μ˜ μ„œλ²„λ‘œ λ§Œλ“€μ–΄ μ£ΌλŠ” κ²ƒμ΄λ‹€.

Load Balancing - μ—¬λŸ¬λŒ€μ˜ μ„œλ²„에 νŒ¨ν‚·μ„ λΆ„μ‚°
Clustering - μ„œλΉ„μŠ€λ₯Ό μ œκ³΅ν•˜λŠ” μ—¬λŸ¬κ°œμ˜ μ„œλ²„λ₯Ό ν•˜λ‚˜λ‘œ λ¬Άμ–΄ μ„±λŠ₯을 λ†’μ—¬ λ§Žμ€μ–‘μ˜ νŒ¨ν‚·μ„ μ²˜λ¦¬ν•˜λŠ” κ²ƒ





λ‘œλ“œ λ°ΈλŸ°μ‹± λ°©λ²•

λ‘œλ“œ λ°ΈλŸ°μ‹±μ€ λ„€νŠΈμ›Œν¬ νŠΈλž˜ν”½μ„ μ—¬λŸ¬ μ„œλ²„에 λΆ„μ‚°μ‹œν‚€λŠ” κΈ°μˆ λ‘œ, νŠΈλž˜ν”½ λΆ€ν•˜λ₯Ό κ· λ“±ν•˜κ²Œ λ‚˜λˆ„μ–΄ μ„œλ²„μ˜ κ³ΌλΆ€ν•˜λ₯Ό λ°©μ§€ν•˜κ³ , κ³ κ°€μš©μ„±μ„ μ œκ³΅ν•©λ‹ˆλ‹€. λ‘œλ“œ λ°ΈλŸ°μ‹± λ°©λ²•은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

- λΌμš΄λ“œ λ‘œλΉˆ (Round Robin): μˆœμ„œλŒ€λ‘œ κ° μ„œλ²„에 μš”청을 λ°°λΆ„ν•©λ‹ˆλ‹€.
  λΌμš΄λ“œ λ‘œλΉˆ λ°©μ‹
λΌμš΄λ“œ λ‘œλΉˆ(Round Robin Method)은 ν΄λΌμ΄μ–ΈνŠΈλ‘œλΆ€ν„° λ°›μ€ μš”청을 λ‘œλ“œλ°ΈλŸ°μ‹± λŒ€μƒ μ„œλ²„에 μˆœμ„œλŒ€λ‘œ ν• λ‹Ήλ°›λŠ” λ°©μ‹μž…λ‹ˆλ‹€. μ²« λ²ˆμ§Έ μš”청은 μ²« λ²ˆμ§Έ μ„œλ²„, λ‘ λ²ˆμ§Έ μš”청은 λ‘ λ²ˆμ§Έ μ„œλ²„, μ„Έ λ²ˆμ§Έ μš”청은 μ„Έ λ²ˆμ§Έ μ„œλ²„에 ν• λ‹Ήν•©λ‹ˆλ‹€. λ‘œλ“œλ°ΈλŸ¬λ‹ λŒ€μƒ μ„œλ²„μ˜ μ„±λŠ₯이 λ™μΌν•˜κ³  μ²˜λ¦¬ μ‹œκ°„이 μ§§μ€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ κ²½μš°, κ· λ“±ν•˜κ²Œ λΆ„산이 μ΄λ£¨μ–΄μ§€κΈ° λ•Œλ¬Έμ— μ΄ λ°©μ‹μ„ μ‚¬μš©ν•©λ‹ˆλ‹€.
가쀑 λΌμš΄λ“œ λ‘œλΉˆ λ°©μ‹
가쀑 λΌμš΄λ“œ λ‘œλΉˆ λ°©μ‹(Weighted Round Robin Method)은 μ‹€μ œ μ„œλ²„에 μ„œλ‘œ λ‹€λ₯Έ μ²˜λ¦¬ μš©λŸ‰μ„ μ§€μ •ν•  μˆ˜ μžˆμŠ΅λ‹ˆλ‹€. κ° μ„œλ²„에 κ°€μ€‘μΉ˜λ₯Ό λΆ€μ—¬ν•  μˆ˜ μžˆμœΌλ©°, μ—¬κΈ°μ„œ μ§€μ •ν•œ μ •μˆ«κ°’μ„ ν†΅ν•΄ μ²˜λ¦¬ μš©λŸ‰μ„ μ •ν•©λ‹ˆλ‹€.
μ΅œμ†Œ μ—°κ²° λ°©μ‹
μ΅œμ†Œ μ—°κ²° λ°©μ‹μ€ μ—°κ²° μˆ˜κ°€ κ°€μž₯ μ μ€ μ„œλ²„에 λ„€νŠΈμ›Œν¬ μ—°κ²°λ°©ν–₯을 μ •ν•©λ‹ˆλ‹€. λ™μ μΈ λΆ„μ‚° μ•Œκ³ λ¦¬μ¦˜μœΌλ‘œ κ° μ„œλ²„에 λŒ€ν•œ ν˜„μž¬ μ—°κ²° μˆ˜λ₯Ό λ™μ μœΌλ‘œ μΉ΄μš΄νŠΈν•  μˆ˜ μžˆκ³ , λ™μ μœΌλ‘œ λ³€ν•˜λŠ” μš”청에 λŒ€ν•œ λΆ€ν•˜λ₯Ό λΆ„μ‚°μ‹œν‚¬ μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.
- μ΅œμ†Œ μ—°κ²° (Least Connections): ν˜„μž¬ μ—°κ²°μ΄ κ°€μž₯ μ μ€ μ„œλ²„에 μš”청을 λ°°λΆ„ν•©λ‹ˆλ‹€.
- IP ν•΄μ‹œ (IP Hash): μ‚¬μš©μžμ˜ IP μ£Όμ†Œλ₯Ό ν•΄μ‹±ν•˜μ—¬ νŠΉμ • μ„œλ²„에 μš”청을 λ°°λΆ„ν•©λ‹ˆλ‹€.

λ‘œλ“œ λ°ΈλŸ°μ‹± λ°©λ²•

1⃣ DNS Load Balancing
• DNS μ„œλ²„μ—μ„œ μ—¬λŸ¬ IPλ₯Ό λ°˜ν™˜ν•˜μ—¬ νŠΈλž˜ν”½μ„ λ‚˜λˆ„λŠ” λ°©μ‹
• λ‹¨μ : ν΄λΌμ΄μ–ΈνŠΈ μΊμ‹± λ¬Έμ œλ‘œ μΈν•΄ λΆ€ν•˜κ°€ μ™„λ²½νžˆ λΆ„μ‚°λ˜μ§€ μ•Šμ„ μˆ˜ μžˆμŒ

2⃣ Reverse Proxy Load Balancing
• Nginx, HAProxy λ“±μ„ μ΄μš©ν•˜μ—¬ ν”„λ‘μ‹œ μ„œλ²„κ°€ ν΄λΌμ΄μ–ΈνŠΈ μš”청을 μ μ ˆν•œ μ„œλ²„λ‘œ λΌμš°νŒ…
• λŒ€ν‘œμ μΈ λ‘œλ“œ λ°ΈλŸ°μ„œ : Nginx, HAProxy, Traefik

3⃣ L4 (Layer 4) Load Balancing
• TCP/UDP λ ˆλ²¨μ—μ„œ λΆ€ν•˜λ₯Ό λΆ„μ‚° (IP λ° ν¬νŠΈ κΈ°λ°˜)
• λŒ€ν‘œμ μΈ μ„œλΉ„μŠ€ : AWS ELB (Elastic Load Balancer), F5 Big-IP

4⃣ L7 (Layer 7) Load Balancing
• HTTP(S) μš”μ²­μ˜ URL, μΏ ν‚€, ν—€λ” λ“±μ„ κΈ°λ°˜μœΌλ‘œ λΆ€ν•˜ λΆ„μ‚°
• REST API μ„œλ²„λ‚˜ NestJS κ°™μ€ μ›Ή μ„œλ²„μ—μ„œλŠ” L7 λ°©μ‹μ΄ μΌλ°˜μ 
• λŒ€ν‘œμ μΈ μ„œλΉ„μŠ€ : Nginx, HAProxy, AWS ALB (Application Load Balancer)


NestJSμ—μ„œ λ‘œλ“œ λ°ΈλŸ°μ‹± μ μš©ν•˜κΈ°
NestJSμ—μ„œ λ‘œλ“œ λ°ΈλŸ°μ‹±μ„ μ μš©ν•˜λ €λ©΄ μ—¬λŸ¬ κ°€μ§€ λ°©λ²•이 μžˆλ‹€.

1⃣ Nginx Reverse Proxy μ‚¬μš©
κ°€μž₯ μΌλ°˜μ μΈ λ°©λ²•은 Nginxλ₯Ό Reverse Proxy둜 μ‚¬μš©ν•˜μ—¬ νŠΈλž˜ν”½μ„ μ—¬λŸ¬ μΈμŠ€ν„΄μŠ€λ‘œ λΆ„μ‚°ν•˜λŠ” κ²ƒμ΄λ‹€.
πŸ“Œ μ„€μ • λ°©λ²•
1. NestJS μ„œλ²„λ₯Ό μ—¬λŸ¬ κ°œ μ‹€ν–‰ (PORT 3000, PORT 3001, PORT 3002 λ“±)
2. Nginxλ₯Ό μ„€μ •ν•˜μ—¬ μ—¬λŸ¬ μ„œλ²„λ‘œ νŠΈλž˜ν”½μ„ λΆ„λ°°
πŸ”Ή Nginx μ„€μ • μ˜ˆμ‹œ (/etc/nginx/nginx.conf)
nginx νŒŒμΌ

http {
    upstream nest_servers {
        server 127.0.0.1:3000;
        server 127.0.0.1:3001;
        server 127.0.0.1:3002;
    }

    server {
        listen 80;

        location / {
            proxy_pass http://nest_servers;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }
}

πŸš€ μ΄λ ‡κ²Œ ν•˜λ©΄, ν΄λΌμ΄μ–ΈνŠΈμ˜ μš”청이 3000, 3001, 3002 ν¬νŠΈλ‘œ μžλ™ λΆ„산됨!


2⃣ ν΄λΌμš°λ“œ λ‘œλ“œ λ°ΈλŸ°μ„œ μ‚¬μš© (AWS ELB, GCP, Azure)
• AWS ALB (Application Load Balancer)
• AWS NLB (Network Load Balancer)
• GCP Load Balancer
• Azure Load Balancer
πŸ‘‰ NestJS μ„œλ²„λ₯Ό μ—¬λŸ¬ λŒ€ λ„μš°κ³ , λ‘œλ“œ λ°ΈλŸ°μ„œλ₯Ό μ•žμ— λ‘λ©΄ μžλ™μœΌλ‘œ νŠΈλž˜ν”½μ„ λΆ„배함


3⃣ PM2 Cluster λͺ¨λ“œ ν™œμš© (μ‹±κΈ€ λ¨Έμ‹  λ‚΄ λ©€ν‹° ν”„λ‘œμ„ΈμŠ€)
단일 μ„œλ²„μ—μ„œ λ©€ν‹° ν”„λ‘œμ„ΈμŠ€λ‘œ NestJSλ₯Ό μ‹€ν–‰ν•˜μ—¬ λΆ€ν•˜ λΆ„μ‚°ν•˜λŠ” λ°©λ²•이닀.
πŸ“Œ PM2λ₯Ό μ‚¬μš©ν•œ NestJS ν΄λŸ¬μŠ€ν„°λ§
sh νŒŒμΌ

npm install pm2 -g
pm2 start dist/main.js -i max

• -i max : κ°€λŠ₯ν•œ λͺ¨λ“  CPU μ½”μ–΄λ₯Ό μ‚¬μš©ν•˜μ—¬ μ—¬λŸ¬ κ°œμ˜ NestJS ν”„λ‘œμ„ΈμŠ€λ₯Ό μ‹€ν–‰
• ν•˜λ‚˜μ˜ μ„œλ²„μ—μ„œ μ—¬λŸ¬ κ°œμ˜ NestJS μΈμŠ€ν„΄μŠ€λ₯Ό λ„μ›Œ νŠΈλž˜ν”½μ„ λ‚˜λˆŒ μˆ˜ μžˆμŒ


πŸ“Œ κ²°λ‘ : NestJSμ—μ„œ λ‘œλ“œ λ°ΈλŸ°μ‹± μ μš© λ°©λ²• μΆ”μ²œ
1. νŠΈλž˜ν”½μ΄ λ§Žλ‹€λ©΄? → Nginx Reverse Proxy + μ—¬λŸ¬ NestJS μΈμŠ€ν„΄μŠ€
2. ν΄λΌμš°λ“œ ν™˜κ²½(AWS, GCP)μ—μ„œ μš΄μ˜? → λ‘œλ“œ λ°ΈλŸ°μ„œ(AWS ALB, GCP LB) μ‚¬μš©
3. λ‹¨μΌ μ„œλ²„μ—μ„œ μ„±λŠ₯ μ΅œμ ν™”? → PM2 ν΄λŸ¬μŠ€ν„° λͺ¨λ“œ μ‚¬μš©






__________________________________________________
μΈμŠ€ν„΄μŠ€κ°€ 2개 μ΄μƒ.

μ§€μ›…λ‹˜μ΄λž‘ μ‘°μœ¨ν•΄μ•Όν•¨(crcd맑음 -  λ‹€ μ—…λ°μ΄νŠΈ ν•΄μ€˜μ•Όν•¨)

λ‘œλ“œ λ²¨λŸ¬μ‹±μ€ μ˜€ν†  μŠ€μΌ€μΌλ§ μ μš©ν•΄μ•Όν•¨
μ˜€ν†  μŠ€μΌ€μΌλ§ : νŠΈλ ˆν”½μ΄ λ§ŽμœΌλ©΄ Ec2λ₯Ό(μ„œλ²„λ₯Ό) μžλ™μœΌλ‘œ λŠ˜λ €μ„œ λ¦¬ν€˜μŠ€νŠΈ μžλ™ λΆ„λ°°ν•΄μ€Œ(μΈμŠ€ν„΄μŠ€κ°€ λŠ˜μ–΄λ‚¨).  aws에도 μžˆμŒ


νŠΈλž˜ν”½μ΄ μ¦κ°€ν•˜λ©΄ EC2(μ„œλ²„) μΈμŠ€ν„΄μŠ€λ₯Ό μžλ™μœΌλ‘œ ν™•μž₯ν•˜μ—¬ μš”청을 λΆ„λ°°ν•˜λŠ” κΈ°λŠ₯이닀.
νŠΈλž˜ν”½μ΄ μ€„μ–΄λ“€λ©΄ λΆˆν•„μš”ν•œ μΈμŠ€ν„΄μŠ€λ₯Ό μ€„μ—¬ λΉ„μš©μ„ μ ˆκ°ν•  μˆ˜ μžˆλ‹€.
AWS에도 μ˜€ν†  μŠ€μΌ€μΌλ§ κΈ°λŠ₯이 μžˆμœΌλ©°, μ΄λ₯Ό ν™œμš©ν•˜λ©΄ μ„œλ²„ μš΄μ˜μ„ μžλ™ν™”ν•  μˆ˜ μžˆλ‹€.

_____________________________________

Sticky Session
https://kchanguk.tistory.com/146

각 WAS듀은 μ„Έμ…˜μ„ κ°κ° κ°€μ§€κ³  μžˆμ§€λ§Œ, μ΄λ₯Ό ν•˜λ‚˜λ‘œ λ¬Άμ–΄ ν•˜λ‚˜μ˜ ν΄λŸ¬μŠ€ν„°λ‘œ κ΄€λ¦¬ν•˜λŠ” λ°©λ²•이 μžˆμŠ΅λ‹ˆλ‹€. μ΄ μƒνƒœμ—μ„œ ν•˜λ‚˜μ˜ WASκ°€ fail이 λ°œμƒν•˜λ©΄ ν•΄λ‹Ή WASκ°€ λ“€κ³  μžˆλ˜ μ„Έμ…˜μ€ λ‹€λ₯Έ WAS둜 μ΄λ™λ˜μ–΄ κ΄€λ¦¬λ©λ‹ˆλ‹€. λ‹€λ§Œ, κ° μ„œλ²„λ§ˆλ‹€ μ„Έμ…˜ ν΄λŸ¬μŠ€ν„°λ§ λ°©μ‹μ΄ λ‹€λ₯΄κ³  μ§€μ›ν•˜λŠ” λ°©μ‹μ΄ λ‹€λ₯΄κΈ° λ•Œλ¬Έμ— ν˜„μž¬ μ‚¬μš©ν•˜κ³  μžˆλŠ” WAS의 session clusturing λΆ€λΆ„을 λ³΄κ³  ν™•인해야 ν•©λ‹ˆλ‹€. κ·Έλ¦¬κ³  μ΄ λ°©μ‹μ€ μƒˆλ‘œμš΄ μ„œλ²„κ°€ ν•˜λ‚˜ μΆ”가될 λ•Œλ§ˆλ‹€ κΈ°μ‘΄μ— μ‘΄μž¬ν•˜λ˜ WAS에 μƒˆλ‘œμš΄ μ„œλ²„μ˜ IP/PORTλ₯Ό μž…λ ₯ν•΄μ„œ ν΄λŸ¬μŠ€ν„°λ§ ν•΄μ€˜μ•Ό ν•˜λŠ” λ‹¨μ μ΄ μžˆμŠ΅λ‹ˆλ‹€.




 
πŸ‘₯ μ‚¬μš©μžκ°€ λŠ˜μ–΄λ‚˜λ©΄?
μ„œλΉ„μŠ€λ₯Ό μš΄μ˜ν•  λ•Œ μ„œλ²„λŠ” λͺ‡λŒ€λ‚˜ μžˆμ–΄μ•Όν• κΉŒμš”?μ‚¬μš©μžκ°€ λ§Žμ΄ μ—†λŠ” κ²½μš°μ—λŠ” 1λŒ€μ˜ μ„œλ²„λ§ŒμœΌλ‘œλ„ μš”청을 μ²˜λ¦¬ν•  μˆ˜ μžˆμ§€λ§Œ μ‚¬μš©μžκ°€ λŠ˜μ–΄λ‚˜λ©΄ λŠ˜μ–΄λ‚ μˆ˜λ‘ μš”청을 κΉ”λ”ν•˜κ²Œ μ²˜λ¦¬ν•˜κΈ° μ–΄λ €μ›Œμ§€λ©° μ„œλ²„κ°€ ν„°μ§€λŠ” μƒν™©κΉŒμ§€ λ°œμƒν•  μˆ˜ μžˆμŠ΅λ‹ˆλ‹€..!
이럴 λ•Œμ—λŠ” μŠ€μΌ€μΌ μ•„μ›ƒν˜Ήμ€ μŠ€μΌ€μΌ μ—…을 ν†΅ν•΄ μΈν”„라λ₯Ό ν™•μž₯ν•  ν•„μš”κ°€ μžˆμŠ΅λ‹ˆλ‹€!
μŠ€μΌ€μΌμ—… (scale-up)
μŠ€μΌ€μΌμ—…μ€ ν˜„μž¬ μ‚¬μš© μ€‘인 μ„œλ²„μ˜ μ„±λŠ₯을 ν–₯μƒμ‹œν‚€λŠ” κ²ƒμž…λ‹ˆλ‹€. μ˜ˆλ₯Ό λ“€μ–΄ μ„œλ²„에 λ””μŠ€ν¬λ₯Ό μΆ”κ°€ν•˜κ±°λ‚˜ CPUλ‚˜ λ©”λͺ¨λ¦¬λ₯Ό μΆ”κ°€ν•˜λŠ” κ²ƒμ„ μ˜λ―Έν•˜μ£ !(수직 μŠ€μΌ€μΌλ§ - vertical scaling μ΄λΌκ³ λ„ λΆ€λ¦…λ‹ˆλ‹€)
μŠ€μΌ€μΌμ•„μ›ƒ (scale-out)

μŠ€μΌ€μΌμ•„μ›ƒμ€ ν˜„μž¬ μ‚¬μš© μ€‘인 μ„œλ²„μ˜ κ°œμˆ˜λ₯Ό μ¦κ°€μ‹œν‚€λŠ” κ²ƒμž…λ‹ˆλ‹€. μ„œλ²„μ˜ μ„±λŠ₯은 κ·ΈλŒ€λ‘œ κ°€μ Έκ°€κ³  μš”청을 μ²˜λ¦¬ν•  μˆ˜ μžˆλŠ” μ„œλ²„μ˜ μˆ˜λ₯Ό μ¦κ°€μ‹œν‚€λŠ” λ°©λ²•μž…λ‹ˆλ‹€.(μˆ˜ν‰ μŠ€μΌ€μΌλ§ - horizontal scaling μ΄λΌκ³ λ„ λΆ€λ¦…λ‹ˆλ‹€)
πŸ”€ λ‘œλ“œλ°ΈλŸ°μ„œ
λ‘œλ“œλ°ΈλŸ°μ„œλž€?

λ‘œλ“œ λ°ΈλŸ°μ„œλŠ” μŠ€μΌ€μΌμ•„μ›ƒμ„ μˆ˜ν–‰ν•˜λŠ” λ°©λ²• μ€‘ ν•˜λ‚˜μž…λ‹ˆλ‹€.
λ‘œλ“œλ°ΈλŸ°μ„œμ˜ μ£Όμš” μ—­ν• 
(1) μš”μ²­ λΆ„μ‚°
μΈν„°λ„·μœΌλ‘œλΆ€ν„° λ“€μ–΄μ˜¨ μš”청을 μ—¬λŸ¬ μ›Ή μ„œλ²„에 κ· λ“±ν•˜κ²Œ λΆ„μ‚°μ‹œμΌœ μ€λ‹ˆλ‹€. μ•žμ—μ„œ λ§ν•œ μŠ€μΌ€μΌ μ•„웃 κΈ°λŠ₯이죠!!
(2) SSL μ²˜λ¦¬
λ‘œλ“œ λ°ΈλŸ°μ„œλ₯Ό μ‚¬μš©ν•˜λ©΄ μ†‘μˆ˜μ‹ ν•˜λŠ” λ°μ΄ν„°λ₯Ό μ•”ν˜Έν™”ν•˜λŠ” SSL μ²˜λ¦¬κ°€ κ°€λŠ₯ν•©λ‹ˆλ‹€.
μΈν„°λ„·μœΌλ‘œλΆ€ν„°μ˜ μ ‘κ·Ό μ€‘ μ•ˆμ „ν•˜κ²Œ μ •보λ₯Ό λ³΄λ‚΄κΈ° μœ„ν•΄ HTTPSλΌλŠ” ν”„λ‘œν† μ½œλ‘œ ν†΅μ‹ μ„ ν•  λ•Œκ°€ μžˆλŠ”λ° μ΄ ν†΅μ‹ μ—μ„œ SSL을 μ‚¬μš©ν•˜κ²Œ λ©λ‹ˆλ‹€. https λ₯Ό μ‚¬μš©ν•˜λ©΄ λΈŒλΌμš°μ €μ™€ μ„œλΉ„μŠ€ μ‚¬μ΄λ₯Ό νλ₯΄λŠ” λ°μ΄ν„°λŠ” μ•”ν˜Έν™”λ˜λ©° μ΄λ•Œ μ•”ν˜Έ κ΄€λ ¨ μ²˜λ¦¬λ₯Ό λΉ λ₯΄κ²Œ μˆ˜ν–‰ν•˜λŠ” μ „μš© μ‹œμŠ€ν…œμ„ λ‘œλ“œλ°ΈλŸ°μ„œκ°€ μ œκ³΅ν•΄μ£Όμ–΄ μ›Ή μ„œλ²„μ—μ„œ μ•”ν˜Έλ₯Ό μ²˜λ¦¬ν•˜λŠ” κ²ƒλ³΄λ‹€ λΉ λ₯Έ μ†λ„λ‘œ μ²˜λ¦¬ν•  μˆ˜ μžˆμ–΄μš”!
(3) λΆ€μ • μš”μ²­ λŒ€μ‘
λ‘œλ“œ λ°ΈλŸ°μ„œ μ—†μ΄ μ›Ή μ„œλ²„κ°€ μ§μ ‘ λΈŒλΌμš°μ €μ™€ λ°μ΄ν„°λ₯Ό κ΅ν™˜ν•˜λŠ” μƒνƒœλΌλ©΄? μ˜ˆμƒμΉ˜ λͺ»ν•œ μž‘동을 μΌμœΌν‚€λŠ” λΆ€μ •ν•œ μš”청에 λŒ€ν•œ μ²˜λ¦¬λŠ” μ›Ή μ„œλ²„에 κ³ΌλΆ€ν™”λ₯Ό μΌμœΌν‚¬ μˆ˜ μžˆμœΌλ©° κ·Έλ‘œ μΈν•΄ μ›Ή μ„œλ²„ μžμ²΄κ°€ λ‹€μš΄λ  κ°€λŠ₯성이 μžˆμŠ΅λ‹ˆλ‹€.
λ‘œλ“œ λ°ΈλŸ°μ„œλŠ” μ΄λŸ¬ν•œ λΆ€μ • μ ‘근에 λŒ€μ‘ν•˜λŠ” μ „μš© μ‹œμŠ€ν…œμ„ μ œκ³΅ν•˜μ—¬ λ” νš¨μœ¨μ μœΌλ‘œ λΆ€μ •ν•œ μ ‘근에 λŒ€μ‘ν•  μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.
AWSμ—μ„œ μ œκ³΅ν•˜λŠ” λ‘œλ“œ λ°ΈλŸ°μ„œ μ’…λ₯˜
AWSμ—μ„œλŠ” ELB(Elastic Load Balancing)μ΄λΌλŠ” μ„œλΉ„μŠ€λ‘œ λ‘œλ“œ λ°ΈλŸ°μ„œλ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.
(1) Application Load Balancer (ALB)
ALBλŠ” HTTPλ‚˜ HTTPS λ₯Ό μ΄μš©ν•œ μ ‘근을 λΆ„μ‚°ν•˜λŠ”λ° μ΅œμ ν™”λœ λ‘œλ“œ λ°ΈλŸ°μ„œ μž…λ‹ˆλ‹€. SSL μ²˜λ¦¬λ₯Ό μˆ˜ν–‰ν•˜κ±°λ‚˜ URL νŒ¨ν„΄κ³Ό κ°™μ€ λ³΅μž‘ν•œ μ‘°κ±΄μ—μ„œ λΆ„μ‚° λŒ€μƒμžλ₯Ό λ°”κΎΈλŠ” λ“± κ³ λ„μ˜ κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€.
(2) Network Load Balancer
기본적인 λΆ„μ‚°μ²˜λ¦¬ κΈ°λŠ₯λ§Œμ„ μ œκ³΅ν•˜μ§€λ§Œ λ‹€μ–‘ν•œ ν†΅μ‹  ν”„λ‘œν† μ½œμ— λŒ€μ‘ν•˜λŠ” λ‘œλ“œ λ°ΈλŸ°μ„œμž…λ‹ˆλ‹€.
(3) Classic Load Balancer
μ•žμ„  λ‘κ°œμ˜ λ‘œλ“œ λ°ΈλŸ°μ„œκ°€ λ“±μž₯ν•˜κΈ° μ „에 μ“°μ΄λ˜ λ‘œλ“œ λ°ΈλŸ°μ„œμ΄λ©° κΈ°μ‘΄ AWS μ‹œμŠ€ν…œμ„ μ‚¬μš©ν•΄μ•Ό ν•˜λŠ” νŠΉλ³„ν•œ κ²½μš°λ₯Ό μ œμ™Έν•˜κ³ λŠ” κ±°μ˜ μ‚¬μš©λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
μš”μ²­ λΌμš°νŒ…
λ‘œλ“œ λ°ΈλŸ°μ„œλ₯Ό μ‚¬μš©ν•  λ•Œμ—λŠ” μ™ΈλΆ€μ— κ³΅κ°œν•œ ν”„λ‘œν† μ½œκ³Ό ν¬νŠΈ λ²ˆν˜Έμ˜ μ‘°ν•©μ„ λ‚΄λΆ€μ˜ μ›Ή μ„œλ²„κ°€ λ°›λŠ” ν”„λ‘œν† μ½œκ³Ό ν¬νŠΈ λ²ˆν˜Έλ‘œ λ³€ν™˜ν•˜λŠ” κΈ°λŠ₯을 μ œκ³΅ν•˜λŠ”λ°, μ΄λ₯Ό μš”μ²­ λΌμš°νŒ…(request routing) μ΄λΌκ³  ν•©λ‹ˆλ‹€.
예λ₯Ό λ“€μ–΄ HTTPS 80 ν¬νŠΈλ‘œ μ™ΈλΆ€ μš”청을 λ°›κ³  λ‚΄λΆ€ μ›Ή μ„œλ²„에 μ „달할 λ•Œμ—λŠ” HTTP 8080 μœΌλ‘œ λ³€ν™˜ν•˜μ—¬ μ „달할 μˆ˜ μžˆλ„둝 μ„€μ •ν•΄μ£ΌλŠ” κ²ƒμ΄μ£ !(HTTPSλ₯Ό HTTP둜 λ³€ν™˜ν•˜λŠ” μ΄μœ λŠ” HTTPSλ₯Ό μ΄μš©ν•œ μ•”ν˜Έ λ° λ³΅ν˜Έ μ²˜λ¦¬λŠ” μ›Ή μ„œλ²„κ°€ μ•„λ‹ˆλΌ λ‘œλ“œ λ°ΈλŸ°μ„œκ°€ μˆ˜ν–‰ν•˜κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€.)
πŸŽƒ AWSμ—μ„œ ALB μƒμ„±ν•˜κΈ°


κ°€μš© μ˜μ—­ μ„€μ •
μš”μ²­μ„ λΆ„μ‚°ν•  κ°€μš© μ˜μ—­μ„ μ„ νƒν•˜κ³  κ°€μš© μ˜μ—­μ— μƒμ„±ν•œ Public Subnet을 μ„ νƒν•΄ μ€λ‹ˆλ‹€! (λ°˜λ“œμ‹œ public subnet에 μ—°κ²°ν•΄μ£Όμ–΄μ•Ό ν•©λ‹ˆλ‹€!!!)
λ³΄μ•ˆ κ·Έλ£Ή μ„€μ •
λ³΄μ•ˆ κ·Έλ£Ήμ€ vpc의 default λ³΄μ•ˆ κ·Έλ£Ήκ³Ό http/https μ ‘근을 λ°›μ„ μˆ˜ μžˆλŠ” λ³΄μ•ˆ κ·Έλ£Ήμ„ μ„€μ •ν•΄ μ€λ‹ˆλ‹€.
λŒ€μƒ κ·Έλ£Ή μƒμ„±
λ‘œλ“œ λ°ΈλŸ°μ„œλ₯Ό μ μš©ν•  λŒ€μƒ κ·Έλ£Ήμ„ λ§Œλ“€μ–΄λ΄…μ‹œλ‹€!μ—¬κΈ°μ„œ ν¬νŠΈλ₯Ό μ„€μ •ν•΄μ€λ‹ˆλ‹€. μ΄λ―Έμ§€μ™€ κ°™μ΄ μ„€μ •ν•΄μ€€λ‹€λ©΄ λ‘œλ“œλ°ΈλŸ°μ„œλ₯Ό ν†΅ν•΄ λ“€μ–΄μ˜¨ μš”청은 μ›Ή μ„œλ²„μ˜ 8080 ν¬νŠΈλ‘œ λ“€μ–΄κ°€κ²Œ λ©λ‹ˆλ‹€.
μƒνƒœ κ²€μ‚¬λ₯Ό ν•  κ²½λ‘œλ₯Ό μž‘μ„±ν•΄ μ€λ‹ˆλ‹€. λ‘œλ“œ λ°ΈλŸ°μ„œλŠ” ν•΄λ‹Ή URL둜 μš”청을 λ³΄λ‚΄ μ›Ή μ„œλ²„μ˜ μƒνƒœλ₯Ό μ£ΌκΈ°μ μœΌλ‘œ κ²€μ‚¬ν•©λ‹ˆλ‹€.
μ‹€μ œλ‘œ νŠΈλž˜ν”½μ„ λΆ„μ‚°ν•  μΈμŠ€ν„΄μŠ€λ“€μ„ μ„ νƒν•˜μ—¬ λ‘œλ“œ λ°ΈλŸ°μ„œμ˜ λŒ€μƒμœΌλ‘œ λ“±λ‘ν•΄μ€λ‹ˆλ‹€!
λ¦¬μŠ€λ„ˆ λ° λΌμš°νŒ…
μ•žμ„œ μƒμ„±ν•œ λŒ€μƒ κ·Έλ£Ήμ„ 'λ¦¬μŠ€λ„ˆ λ° λΌμš°νŒ…' λ©”λ‰΄μ—μ„œ μ„€μ •ν•΄ μ€λ‹ˆλ‹€. μ΄λ ‡κ²Œ μ„€μ •ν•΄μ£Όλ©΄ HTTP 80 ν¬νŠΈλ‘œ λ“€μ–΄μ˜¨ μš”청은 μ„€μ •ν•œ λŒ€μƒ κ·Έλ£ΉμœΌλ‘œ λΆ„μ‚°λ˜κ²Œ λ©λ‹ˆλ‹€!
μ΄λ ‡κ²Œ ν•˜λ©΄ ALBλ₯Ό μƒμ„±ν•  μˆ˜ μžˆμœΌλ©° μƒμ„±ν•œ λ‘œλ“œ λ°ΈλŸ°μ„œμ˜ DNS μ΄λ¦„μœΌλ‘œ μ ‘근이 κ°€λŠ₯ν•©λ‹ˆλ‹€!
μ°Έκ³ https://aws.amazon.com/ko/what-is/load-balancing/ https://tecoble.techcourse.co.kr/post/2021-10-12-scale-up-scale-out/