λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
WIL

λ¬΄μƒνƒœ ν”„λ‘œν† μ½œ

by Jaeguk 2024. 3. 8.

λ„€νŠΈμ›Œν¬μ— λŒ€ν•œ 지식이 ν•„μš”ν•˜λ‹€κ³  μƒκ°λ˜μ–΄, κΉ€μ˜ν•œλ‹˜μ˜ "λͺ¨λ“  개발자λ₯Ό μœ„ν•œ HTTP μ›Ή κΈ°λ³Έ 지식" κ°•μ˜λ₯Ό λ“€μ—ˆλ‹€.
κ·Έ 쀑에 λ¬΄μƒνƒœ ν”„λ‘œν† μ½œμ— λŒ€ν•œ κ°œλ…μ€ 처음이라 μ •λ¦¬ν•˜κ²Œ λ˜μ—ˆλ‹€.

 

λͺ¨λ“  개발자λ₯Ό μœ„ν•œ HTTP μ›Ή κΈ°λ³Έ 지식 κ°•μ˜ - μΈν”„λŸ°

싀무에 κΌ­ ν•„μš”ν•œ HTTP 핡심 κΈ°λŠ₯κ³Ό μ˜¬λ°”λ₯Έ HTTP API 섀계 방법을 ν•™μŠ΅ν•©λ‹ˆλ‹€., [사진] πŸ“£ ν™•μΈν•΄μ£Όμ„Έμš”!λ³Έ κ°•μ˜λŠ” μžλ°” μŠ€ν”„λ§ μ™„μ „ 정볡 μ‹œλ¦¬μ¦ˆμ˜ μ„Έ 번째 κ°•μ˜μž…λ‹ˆλ‹€. μš°μ•„ν•œν˜•μ œλ“€ μ΅œμ—°μ†Œ 기술

www.inflearn.com

(PPLμ•„λ‹˜...)

 

λ¬΄μƒνƒœ ν”„λ‘œν† μ½œ


Stateless Protocol

  • HTTP ν”„λ‘œν† μ½œμ€ λ¬΄μƒνƒœ ν”„λ‘œν† μ½œμ„ 지ν–₯ν•œλ‹€
  • μ„œλ²„κ°€ ν΄λΌμ΄μ–ΈνŠΈμ˜ μƒνƒœλ₯Ό λ³΄μ‘΄ν•˜μ§€ μ•ŠλŠ”λ‹€
  • μž₯점: μ„œλ²„μ˜ ν™•μž₯성이 λ†’λ‹€(Scale Out)
  • 단점: ν΄λΌμ΄μ–ΈνŠΈκ°€ μ „μ†‘ν•˜λŠ” λ°μ΄ν„°μ˜ 양이 λ§Žμ•„μ§„λ‹€.

 

Stateful, Stateless의 차이


λΉ„μœ λ₯Ό ν†΅ν•΄μ„œ Stateful, Stateless의 차이λ₯Ό μ•Œμ•„λ³΄μž

 

Stateful


μƒνƒœ μœ μ§€

πŸ—£οΈ 
고객: 이 λ…ΈνŠΈλΆ μ–Όλ§ˆμΈκ°€μš”?

점원: 100λ§Œμ› μž…λ‹ˆλ‹€.

(λ…ΈνŠΈλΆ)


고객: 2개 κ΅¬λ§€ν•˜κ² μŠ΅λ‹ˆλ‹€.

점원: 200λ§Œμ› μž…λ‹ˆλ‹€. μ‹ μš©μΉ΄λ“œ, ν˜„κΈˆ 쀑에 μ–΄λ–€ 걸둜 ꡬ맀 ν•˜μ‹œκ² μ–΄μš”?

(λ…ΈνŠΈλΆ, 2개)


고객: μ‹ μš©μΉ΄λ“œλ‘œ κ΅¬λ§€ν•˜κ² μŠ΅λ‹ˆλ‹€.

점원: 200λ§Œμ› 결제 μ™„λ£Œλ˜μ—ˆμŠ΅λ‹ˆλ‹€. 

(λ…ΈνŠΈλΆ, 2개, μ‹ μš©μΉ΄λ“œ)
  • 점원은 계속 고객이 λ§ν•œ 것듀을 μœ μ§€ν•˜κ³  μžˆμ–΄μ•Ό ν•œλ‹€.

 

λ§Œμ•½ 쀑간에 점원이 바뀐닀면?

πŸ—£οΈ 
고객: 이 λ…ΈνŠΈλΆ μ–Όλ§ˆμΈκ°€μš”?

점원 A: 100λ§Œμ› μž…λ‹ˆλ‹€.
(λ…ΈνŠΈλΆ)


고객: 2개 κ΅¬λ§€ν•˜κ² μŠ΅λ‹ˆλ‹€.

점원 B: μ–΄λ–€ κ±Έ 2개 κ΅¬λ§€ν•˜μ‹œλŠ” κ±΄κ°€μš”?
(2개)


고객: μ‹ μš©μΉ΄λ“œλ‘œ κ΅¬λ§€ν•˜κ² μŠ΅λ‹ˆλ‹€.
점원 C: μ–΄λ–€ μ œν’ˆμ„ λͺ‡ 개 μ‹ μš©μΉ΄λ“œλ‘œ κ΅¬λ§€ν•˜μ‹œλ‚˜μš”?
(μ‹ μš©μΉ΄λ“œ)
  • μƒˆλ‘œ λ“€μ–΄μ˜¨ 점원은 고객이 이전에 μ–΄λ–€ λŒ€ν™”λ₯Ό ν–ˆλŠ”μ§€ μ•Œ 수 μ—†λ‹€.
  • 이λ₯Ό μ•ŒκΈ° μœ„ν•΄μ„œλŠ” μƒˆλ‘œ λ“€μ–΄μ˜¨ μ μ›μ—κ²Œ 이전에 ν†΅μ‹ ν•˜λ˜ 점원이 μ „νŒŒλ₯Ό ν•΄μ£Όλ˜κ°€ ν•˜λŠ” ν–‰μœ„κ°€ ν•„μš”ν•˜λ‹€.

 

Stateless


λ¬΄μƒνƒœ

πŸ—£οΈ 
고객: 이 λ…ΈνŠΈλΆ μ–Όλ§ˆμΈκ°€μš”?

점원: 100λ§Œμ› μž…λ‹ˆλ‹€.


고객: λ…ΈνŠΈλΆ 2개 κ΅¬λ§€ν•˜κ² μŠ΅λ‹ˆλ‹€.

점원: 200λ§Œμ› μž…λ‹ˆλ‹€. μ‹ μš©μΉ΄λ“œ, ν˜„κΈˆμ€‘μ— μ–΄λ–€ 걸둜 ꡬ맀 ν•˜μ‹œκ² μ–΄μš”?


고객: λ…ΈνŠΈλΆ 2개λ₯Ό μ‹ μš©μΉ΄λ“œλ‘œ κ΅¬λ§€ν•˜κ² μŠ΅λ‹ˆλ‹€.

점원: 200λ§Œμ› 결제 μ™„λ£Œλ˜μ—ˆμŠ΅λ‹ˆλ‹€.
  • μƒνƒœλ₯Ό λ”°λ‘œ μ €μž₯ν•˜μ§€ μ•Šμ•„λ„, 이상없이 톡신이 κ°€λŠ₯ν•˜λ‹€.

 

점원이 쀑간에 바뀐닀면?

πŸ—£οΈ 
고객: 이 λ…ΈνŠΈλΆ μ–Όλ§ˆμΈκ°€μš”?

점원 A: 100λ§Œμ› μž…λ‹ˆλ‹€.


고객: λ…ΈνŠΈλΆ 2개 κ΅¬λ§€ν•˜κ² μŠ΅λ‹ˆλ‹€.

점원 B: 200λ§Œμ› μž…λ‹ˆλ‹€. μ‹ μš©μΉ΄λ“œ, ν˜„κΈˆ 쀑에 μ–΄λ–€ 걸둜 ꡬ맀 ν•˜μ‹œκ² μ–΄μš”?


고객: λ…ΈνŠΈλΆ 2개λ₯Ό μ‹ μš©μΉ΄λ“œλ‘œ κ΅¬λ§€ν•˜κ² μŠ΅λ‹ˆλ‹€.

점원 C: 200λ§Œμ› 결제 μ™„λ£Œλ˜μ—ˆμŠ΅λ‹ˆλ‹€.
  • 쀑간에 점원이 λ°”λ€Œμ–΄λ„ μ „ν˜€ λ¬Έμ œκ°€ μ—†λ‹€.

 

Stateful, Stateless 차이


정리

  • Stateful (μƒνƒœ μœ μ§€): 쀑간에 λ‹€λ₯Έ μ μ›μœΌλ‘œ λ°”λ€Œλ©΄ μ•ˆ λœλ‹€.
    • 쀑간에 λ‹€λ₯Έ μ μ›μœΌλ‘œ λ°”λ€” λ•Œ μƒνƒœ 정보λ₯Ό λ‹€λ₯Έ μ μ›μ—κ²Œ 미리 μ•Œλ €μ€˜μ•Ό ν•œλ‹€.
  • Stateless (λ¬΄μƒνƒœ): 쀑간에 λ‹€λ₯Έ μ μ›μœΌλ‘œ λ°”λ€Œμ–΄λ„ λœλ‹€.
    • κ°‘μžκΈ° 고객이 증가해도 점원을 λŒ€κ±° νˆ¬μž… ν•  수 μžˆλ‹€.
    • κ°‘μžκΈ° ν΄λΌμ΄μ–ΈνŠΈ μš”μ²­μ΄ 증가해도 μ„œλ²„λ₯Ό λŒ€κ±° νˆ¬μž…ν•  수 μžˆλ‹€.
  • λ¬΄μƒνƒœλŠ” 응닡 μ„œλ²„λ₯Ό μ‰½κ²Œ λ°”κΏ€ 수 μžˆλ‹€ ⇒ λ¬΄ν•œν•œ μ„œλ²„ 증섀 κ°€λŠ₯

 

μƒνƒœ μœ μ§€


항상 같은 μ„œλ²„κ°€ μœ μ§€λ˜μ–΄μ•Ό ν•œλ‹€.

μƒνƒœ μœ μ§€

  • ν΄λΌμ΄μ–ΈνŠΈ AλŠ” μƒνƒœλ₯Ό μ•Œκ³  μžˆλŠ” μ„œλ²„1μ΄λž‘λ§Œ 톡신을 ν•΄μ•Ό ν•œλ‹€.

 

  • κ°‘μžκΈ° μ„œλ²„1이 κ³ μž₯λ‚˜λ©΄, ν΄λΌμ΄μ–ΈνŠΈλŠ” λ‹€λ₯Έ μ„œλ²„μ™€ μ²˜μŒλΆ€ν„° λ‹€μ‹œ 톡신을 ν•΄μ•Ό ν•œλ‹€.

 

λ¬΄μƒνƒœ


아무 μ„œλ²„λ‚˜ ν˜ΈμΆœν•΄λ„ λœλ‹€.

λ¬΄μƒνƒœ

  • μƒνƒœλ₯Ό μœ μ§€ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ—, ν΄λΌμ΄μ–ΈνŠΈλŠ” 아무 μ„œλ²„μ™€ 톡신해도 상관없닀.

 

  • κ°‘μžκΈ° μ„œλ²„1이 κ³ μž₯λ‚˜λ”λΌλ„ λ‹€λ₯Έ μ„œλ²„μ™€ 톡신을 ν•˜λ©΄ λœλ‹€.
  • 보내야 ν•˜λŠ” λ°μ΄ν„°μ˜ 양이 λ§Žμ•„μ§„λ‹€λŠ” 단점 이 μžˆλ‹€.

 

μŠ€μΌ€μΌ 아웃 (Scale Out)


λ¬΄μƒνƒœμ˜ κ²½μš°μ—” μ„œλ²„λ₯Ό μˆ˜ν‰ν™•μž₯ν•˜λŠ” 것에 μœ λ¦¬ν•˜λ‹€.

μŠ€μΌ€μΌ 아웃

  • ν΄λΌμ΄μ–ΈνŠΈλŠ” 아무 μ„œλ²„μ™€ 톡신해도 상관없기 λ•Œλ¬Έμ—, 같은 κΈ°λŠ₯을 ν•˜λŠ” μ„œλ²„λ₯Ό 많이 λŠ˜λ €λ„ λ¬Έμ œκ°€ μ—†λ‹€.

 

Stateless의 싀무적 ν•œκ³„


  • λͺ¨λ“  것을 λ¬΄μƒνƒœλ‘œ 섀계할 수 μžˆλŠ” κ²½μš°λ„ 있고 μ—†λŠ” κ²½μš°λ„ μžˆλ‹€.
  • λ¬΄μƒνƒœλ‘œλ§Œ 섀계가 κ°€λŠ₯ν•œ 경우
    • Ex) 둜그인이 ν•„μš”μ—†λŠ” λ‹¨μˆœν•œ μ„œλΉ„μŠ€ μ†Œκ°œν™”λ©΄
  • μƒνƒœμœ μ§€κ°€ ν•„μš”ν•œ 경우
    • Ex) 둜그인
  • λ‘œκ·ΈμΈν•œ μ‚¬μš©μžμ˜ 경우 λ‘œκ·ΈμΈν–ˆλ‹€λŠ” μƒνƒœλ₯Ό μ„œλ²„μ— μœ μ§€ν•΄μ•Ό ν•œλ‹€
  • 일반적으둜 λΈŒλΌμš°μ € 쿠킀와 μ„œλ²„ μ„Έμ…˜ 등을 μ‚¬μš©ν•΄μ„œ μƒνƒœλ₯Ό μœ μ§€ν•œλ‹€.
  • μƒνƒœ μœ μ§€λŠ” μ΅œμ†Œν•œλ§Œ μ‚¬μš©
728x90

'WIL' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

Two-Phase Locking (2PL)  (0) 2024.05.10
레인보우 ν…Œμ΄λΈ”  (0) 2024.05.01
GraphQLκ³Ό N + 1 문제  (2) 2024.02.27