개발 지식/WEB 지식

🌐 μ•„μ£Ό μ‰½κ²Œ μ΄ν•΄ν•˜λŠ” Stateful / Stateless 차이

인파_ 2022. 11. 14. 21:06

Stateful-Stateless

Stateful 과 Stateless 차이점

μ›Ή 곡뢀λ₯Ό ν•˜λ‹€λ³΄λ©΄ ν΄λΌμ΄μ–ΈνŠΈ(Client)와 μ„œλ²„(Server)κ°„μ˜ 톡신을 μƒνƒœμœ μ§€(Stateful) ν•˜λŠλƒ, μƒνƒœμœ μ§€ν•˜μ§€μ•ŠμŒ(Stateless) 으둜 ν•˜λŠλƒ λΌλŠ” 말귀λ₯Ό ν•œλ²ˆμ―€μ€ λ“€μ–΄λ³Έ 적이 μžˆμ„ 것이닀.

μƒνƒœλΌλŠ”κ²Œ μ–΄λ– ν•œ 정보λ₯Ό λ§ν•˜λŠ” 것 같은데, 이번 μ‹œκ°„μ—λŠ” Stateful κ³Ό Stateless의 차이점에 λŒ€ν•΄ 좔상적인 κ°œλ… μ΄ν•΄μ—μ„œ λ²—μ–΄λ‚˜ λͺ…ν™•νžˆ νŒŒμ•…ν•˜λŠ” μ‹œκ°„μ„ κ°€μ Έλ³΄μž.


Stateful (μƒνƒœμœ μ§€)

μƒνƒœ μœ μ§€λΌ 함은 ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„ κ΄€κ³„μ—μ„œ μ„œλ²„κ°€ ν΄λΌμ΄μ–ΈνŠΈμ˜ μƒνƒœλ₯Ό 보쑴함을 μ˜λ―Έν•œλ‹€.

ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„ 간에 μ†‘μˆ˜μ‹ μ„ ν•˜λ©° 단계별 과정을 μ§„ν–‰ν•˜λŠ”λ° μžˆμ–΄, μ„œλ²„μ—μ„œ ν΄λΌμ΄μ–ΈνŠΈκ°€ 이전 λ‹¨κ³„μ—μ„œ μ œκ³΅ν•œ 값을 μ €μž₯ν•˜κ³  λ‹€μŒ λ‹¨κ³„μ—μ„œλ„ μ €μž₯ν•œ μƒνƒœμ΄λ‹€.

λŒ€ν‘œμ μœΌλ‘œ ν™ˆνŽ˜μ΄μ§€μ—μ„œ ν•œλ²ˆ λ‘œκ·ΈμΈμ„ ν•˜λ©΄ νŽ˜μ΄μ§€λ₯Ό 이동해도 둜그인이 ν’€λ¦¬μ§€μ•Šκ³  계속 μœ μ§€λ˜λŠ” 것이 λ°”λ‘œ μ„œλ²„κ°€ ν΄λΌμ΄μ–ΈνŠΈμ˜ μƒνƒœλ₯Ό μœ μ§€(κΈ°μ–΅)ν•˜κ³  μžˆμœΌλ‹ˆκΉŒ κ°€λŠ₯ν•œ 것이닀.

ν΄λΌμ΄μ–ΈνŠΈμ˜ 정보λ₯Ό κΈ°μ–΅ν•œλ‹€λΌλŠ” 말은 μ–΄λ”˜κ°€μ— 정보λ₯Ό μ €μž₯ν•˜κ³  ν†΅μ‹ ν• λ•Œλ§ˆλ‹€ μ½λŠ”λ‹€λŠ” λœ»μ΄λ‹€.

μ΄λŸ¬ν•œ 정보듀은 일반적으둜 λΈŒλΌμš°μ €μ˜ μΏ ν‚€(Cookie)에 μ €μž₯λ˜κ±°λ‚˜, μ„œλ²„μ˜ μ„Έμ…˜(Session) λ©”λͺ¨λ¦¬μ— μ €μž₯λ˜μ–΄ μƒνƒœλ₯Ό μœ μ§€ν•˜κ²Œ λœλ‹€.

 

Statefulν•œ ν”„λ‘œν† μ½œ 

λŒ€ν‘œμ μΈ Stateful ꡬ쑰λ₯Ό λ”°λ₯΄λŠ” ν”„λ‘œν† μ½œλ‘œ TCP의 3-way handshaking 과정을 예λ₯Ό λ“€μˆ˜κ°€ μžˆλ‹€.

  1. ν΄λΌμ΄μ–ΈνŠΈλŠ” μ„œλ²„μ— SYN(접속 μš”μ²­ 메세지)λ₯Ό μ „μ†‘ν•˜κ³  SYN_SENT μƒνƒœκ°€ λœλ‹€.
  2. μ„œλ²„λŠ” SYN μš”μ²­μ„ λ°›κ³ , ν΄λΌμ΄μ–ΈνŠΈμ— μš”μ²­μ„ μˆ˜λ½ν•˜λŠ” SYN/ACKλ₯Ό μ „μ†‘ν•˜κ³  SYN_RECEIVED μƒνƒœκ°€ λœλ‹€.
  3. ν΄λΌμ΄μ–ΈνŠΈλŠ” μ„œλ²„μ—κ²Œ 수락 ν™•μΈμœΌλ‘œ ACKλ₯Ό 또 보내고, μˆ˜μ‹  받은 μ„œλ²„λŠ” ESTABLISHED μƒνƒœκ°€ λœλ‹€.
  4. μ„Έμ…˜ 'μƒνƒœ'κ°€ ESTABLISHED κ°€ 됨으둜써, μ„œλ²„μ™€ ν΄λΌμ΄μ–ΈνŠΈλŠ” μ„œλ‘œ 데이터λ₯Ό μ£Όκ³  받을 수 μžˆλŠ” μƒνƒœκ°€ λœλ‹€.

μ΄λ ‡κ²Œ TCPλŠ” μ„Έμ…˜ 'μƒνƒœ'에 따라 μ„œλ²„μ˜ 응닡이 λ‹¬λΌμ§€κ²Œ λ˜λŠ” Stateful ν•˜λ‹€κ³  λ§ν• μˆ˜ μžˆλŠ” 것이닀.

Stateful-tcp

 

Stateful 문제점

μœ„μ—μ„œ μƒνƒœλ₯Ό μœ μ§€ν•œλ‹€λŠ” 함은, μ„œλ²„μ—μ„œ ν΄λΌμ΄μ–ΈνŠΈμ˜ μƒνƒœ 정보λ₯Ό μ €μž₯ν•˜κ³  μžˆλ‹€κ³  λ§ν–ˆμ—ˆλ‹€.

stateful의 λ¬Έμ œμ μ€ ν•΄λ‹Ή μ„œλ²„κ°€ λ©ˆμΆ”κ±°λ‚˜ μ—¬λŸ¬ 이유둜 ν•΄λ‹Ή μ„œλ²„κ°€ λͺ»μ“°κ²Œ λ˜μ–΄ λ‹€λ₯Έ μ„œλ²„λ₯Ό μ‚¬μš©ν•΄μ•Ό ν• λ•Œ λ°œμƒν•œλ‹€.

μ™œλƒν•˜λ©΄ μƒˆλ‘œμš΄ μ„œλ²„μ—μ„œλŠ” 이전 μ„œλ²„μ—μ„œ 가지고 있던 μƒνƒœκ°’λ“€μ„ 가지고 μžˆμ§€ μ•ŠκΈ° λ•Œλ¬Έμ΄λ‹€.

 

예λ₯Ό λ“€μžλ©΄, μœ μ €κ°€ λ‘œκ·ΈμΈμ„ ν•˜κ³  κ²Œμ‹œνŒ νŽ˜μ΄μ§€μ— λ“€μ–΄κ°€μ„œ 글을 μ“°κΈ° μœ„ν•΄ [κΈ€μ“°κΈ°] λ₯Ό λˆŒλ €λ”λ‹ˆ λ‹€μ‹œ 둜그인 ν•˜λΌλŠ” 화면이 λœ¨λŠ” 것이닀. μ΄λŠ” ν΄λΌμ΄μ–ΈνŠΈμ˜ 둜그인 정보λ₯Ό λ“€κ³  μžˆλŠ” μ„œλ²„κ°€ μ–΄λ– ν•œ 문제둜 인해 λ‹€μš΄λ˜μ–΄ λ‹€λ₯Έ μ„œλ²„κ°€ λŒ€μ‹  역할을 이어 λ°›μ•˜λŠ”λ° ν•΄λ‹Ή ν΄λΌμ΄μ–ΈνŠΈμ˜ 둜그인 정보가 μ—†κΈ° λ•Œλ¬Έμ— μΌμ–΄λ‚œ 것이닀. (λ§Œμ•½, κΈ°μ‘΄μ„œλ²„μ—μ„œ μƒˆλ‘œμš΄μ„œλ²„λ‘œ 이전 데이터λ₯Ό λͺ¨λ‘ 전달해쀀닀면 λ¬Έμ œκ°€ 없을 수 μžˆλ‹€)

Stateful
Stateful

즉, μ„œλ²„ 1이 λ‚΄ 정보λ₯Ό κ°–κ³  있기 λ•Œλ¬Έμ— 쀑간에 μ„œλ²„ 1에 μž₯μ• κ°€ 생기면 ν΄λΌμ΄μ–ΈνŠΈ AλŠ” 일을 μ²˜μŒλΆ€ν„° λ‹€μ‹œ ν•΄μ•Όλœλ‹€.

 

λ˜ν•œ Stateful 방식은 ν•˜λ‚˜μ˜ μ„œλ²„κ°€ 1만 λͺ…μ˜ ν΄λΌμ΄μ–ΈνŠΈλ₯Ό μ²˜λ¦¬ν•  λŠ₯λ ₯이 μžˆμ„ λ•Œ 그보닀 λ§Žμ€ 수의 ν΄λΌμ΄μ–ΈνŠΈκ°€ λͺ°λ¦¬λ©΄, 이미 μ—°κ²°λœ 1만 λͺ…μ˜ ν΄λΌμ΄μ–ΈνŠΈ 쀑 일뢀가 λΉ μ Έμ•Ό λ‹€μŒ ν΄λΌμ΄μ–ΈνŠΈκ°€ μ²˜λ¦¬λœλ‹€λŠ” ν•œκ³„κ°€ μžˆλ‹€.

λ‹Ήμ—°νžˆ ν΄λΌμ΄μ–ΈνŠΈ μƒνƒœλ“€μ„ λ“€κ³  μžˆμœΌλ‹ˆ μš©λŸ‰ ν•œκ³„κ°€ μ‘΄μž¬ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€.

λ”°λΌμ„œ ν˜„μ—…μ—μ„œλŠ” μ΄λŸ¬ν•œ ν΄λΌμ΄μ–ΈνŠΈμ˜ μƒνƒœ 데이터λ₯Ό λ”°λ‘œ μΊμ‹œ μ„œλ²„(Redis)에 μ €μž₯ν•˜μ—¬ μ΄μš©ν•œλ‹€.

 

Stateful 톡신 μ˜ˆμ‹œ

λ‹€μŒμ€ μ„œλ²„μ™€ ν΄λΌμ΄μ–ΈνŠΈκ°€ λ‹€μŒκ³Ό 같이 μ€€λΉ„λ˜μ–΄μžˆκ³  ν΄λΌμ΄μ–ΈνŠΈκ°€ 컴퓨터λ₯Ό μ‚¬κΈ°μœ„ν•΄ μ„œλ²„μ—κ²Œ 컴퓨터 λΆ€ν’ˆμ„ λ‹¨κ³„λ³„λ‘œ μ»€μŠ€ν…€ν•˜μ—¬ μš”μ²­μ„ ν•˜λŠ” 상황을 λΉ„μœ ν•œ 것이닀.

  • 컴퓨터 판맀λ₯Ό ν•˜λŠ” μ„œλ²„ X
  • 컴퓨터 μ‚¬λ €λŠ” ν΄λΌμ΄μ–ΈνŠΈ A

Stateful 톡신

λŒ€ν™”λ₯Ό 보면 νŒλ§€ν•˜λŠ” μ„œλ²„ XλŠ” μ‚¬μš©μžμ˜ 이전 μš”μ²­μ„ λͺ¨λ‘ κΈ°μ–΅ν•˜λ©° μ§„ν–‰ν•œλ‹€λŠ” 것을 μ•Œ 수 μžˆλ‹€.

이것이 μƒνƒœ μœ μ§€μ΄λ©° μ‚¬λžŒ μž…μž₯μ—μ„œλŠ” μ§€κ·Ήνžˆ 정상적인 λŒ€ν™” 처럼 보인닀.

 

ν•˜μ§€λ§Œ μ—¬κΈ°μ—” 함정이 μžˆλ‹€. λ°”λ‘œ νŒλ§€ν•˜λŠ” μ„œλ²„ Xκ°€ 쀑간에 λ°”λ€” 경우 이닀.

λ§Œμ•½ λŒ€λŸ‰μ˜ νŠΈλž˜ν”½μ΄ λͺ°λ €λ“€μ–΄μ„œ μ„œλ²„λ₯Ό κΈ΄κΈ‰ν•˜κ²Œ λŠ˜λ Έλ‹€κ³  가정해보면, 판맀자 μ„œλ²„ Xκ°€ μ•„λ‹Œ μ¦μ„€λœ μ–΄λ–€ μ„œλ²„ Yκ°€ ꡬ맀과정을 λŒ€μ‹  μ΄μ–΄λ°›κ²Œ 될 μˆ˜λ„ μžˆλ‹€. 

λ‹€μŒμ€ ν΄λΌμ΄μ–ΈνŠΈ A와 ν†΅μ‹ ν•˜κ³  μžˆλŠ” μ„œλ²„ Xκ°€ 쀑간에 μ„œλ²„ Y와 μ„œλ²„ Z둜 λ°”λ€Œμ—ˆμ„ 경우의 상황이닀.

Stateful 톡신

κ·Έμ•Όλ§λ‘œ 혼돈의 λ„κ°€λ‹ˆμ΄λ‹€. μ΄κ²Œ λ°”λ‘œ μƒνƒœ μœ μ§€μ˜ λ¬Έμ œλ‹€. 


Stateless (λ¬΄μƒνƒœ)

λ¬΄μƒνƒœλŠ” λ°˜λŒ€λ‘œ ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„ κ΄€κ³„μ—μ„œ μ„œλ²„κ°€ ν΄λΌμ΄μ–ΈνŠΈμ˜ μƒνƒœλ₯Ό λ³΄μ‘΄ν•˜μ§€ μ•ŠμŒμ„ μ˜λ―Έν•œλ‹€.

Stateless κ΅¬μ‘°μ—μ„œ μ„œλ²„λŠ” λ‹¨μˆœνžˆ μš”μ²­μ΄ 였면 응닡을 λ³΄λ‚΄λŠ” μ—­ν• λ§Œ μˆ˜ν–‰ν•˜λ©°, μƒνƒœ κ΄€λ¦¬λŠ” μ „μ μœΌλ‘œ ν΄λΌμ΄μ–ΈνŠΈμ—κ²Œ μ±…μž„μ΄ μžˆλŠ” 것이닀.

즉, ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„κ°„μ˜ 톡신에 ν•„μš”ν•œ λͺ¨λ“  μƒνƒœ 정보듀은 ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ 가지고 μžˆλ‹€κ°€ μ„œλ²„μ™€ ν†΅μ‹ ν• λ•Œ 데이터λ₯Ό μ‹€μ–΄ λ³΄λ‚΄λŠ” 것이 λ¬΄μƒνƒœ ꡬ쑰이닀.

μ„œλ²„λŠ” λ‹¨μˆœνžˆ λ°›μ•„μ„œ μ‘λ‹΅λ§Œ ν•΄μ£ΌκΈ° λ•Œλ¬Έμ— μƒνƒœ μœ μ§€μ— λŒ€ν•œ λΆ€ν•˜κ°€ ν˜„μ €νžˆ μ€„μ–΄λ“€κ²Œ λœλ‹€.

λ˜ν•œ μƒνƒœλ₯Ό λ³΄κ΄€ν•˜μ§€ μ•Šμ•„ μ„œλ²„ 1에 λ¬Έμ œκ°€ 생겨 μ„œλ²„ 2κ°€ 이어 받아도 μ‘λ‹΅ν•˜λŠ”λ° μžˆμ–΄ λ¬Έμ œλ„ μ—†λ‹€.

Stateless-λ¬΄μƒνƒœ
Stateless-λ¬΄μƒνƒœ

 

κ·Έλž˜μ„œ λŒ€λŸ‰μ˜ νŠΈλž˜ν”½ λ°œμƒ μ‹œμ—λ„ μ„œλ²„ ν™•μž₯을 톡해 λŒ€μ²˜λ₯Ό μˆ˜μ›”ν•˜κ²Œ ν•  수 μžˆλ‹€λŠ” μž₯점도 μžˆλ‹€. (statefulκ³Ό 달리 μ„œλ²„κ°€ λ°”λ€Œμ–΄μ„œλ„ μ •ν™•ν•œ 응닡에 λ¬Έμ œκ°€ μ—†μœΌλ‹ˆκΉŒ)

Stateless-λ¬΄μƒνƒœ

 

Statelessν•œ ν”„λ‘œν† μ½œ

λŒ€ν‘œμ μΈ Stateless ν”„λ‘œν† μ½œλ‘œλŠ” UDP와 HTTP λ₯Ό λ“€ 수 μžˆλ‹€. (HTTP 톡신 기본이 λ¬΄μƒνƒœ)

λ¬΄μƒνƒœμ—μ„  λΈŒλΌμš°μ €λŠ” 데이터λ₯Ό 전솑할 λ•Œλ§ˆλ‹€ μ—°κ²°ν•˜κ³  λ°”λ‘œ λŠμ–΄λ²„λ¦¬κ²Œ λœλ‹€.

UDPλ₯Ό 예둜 λ“€μ–΄ 보자면, UDPλŠ” TCP와 달리 handshaking 과정을 톡해 μ—°κ²° μ„Έμ…˜μ„ μΈμ¦ν•˜λŠ” 절차λ₯Ό μˆ˜ν–‰ν•˜μ§€ μ•Šκ³ , μ„Έμ…˜ μƒνƒœμ— 관계 없이 κ·Έλƒ₯ λ¬΄μž‘μ • 보내 버린닀.

κ·Έλž˜μ„œ μ„œλ²„μͺ½μ€ ν΄λΌμ΄μ–ΈνŠΈμ™€μ˜ μ„Έμ…˜ 정보λ₯Ό μ €μž₯ν•˜λŠ” 과정을 κ±°μΉ˜μ§€ μ•Šμ•„, ν΄λΌμ΄μ–ΈνŠΈκ°€ μ†‘μ‹ ν•œ 데이터가 μˆ˜μ‹ λ˜μ—ˆλŠ”μ§€ ν™•μΈν•˜μ§€λ„ μ•ŠμœΌλ©° ν΄λΌμ΄μ–ΈνŠΈμ™€μ˜ μ„Έμ…˜ μƒνƒœμ— 관계없이 μš”μ²­μ— λŒ€ν•œ μ‘λ‹΅λ§Œμ„ μˆ˜ν–‰ν•˜κ²Œ λœλ‹€.

즉, Clientμ™€μ˜ μ„Έμ…˜ 정보λ₯Ό Serverκ°€ μ €μž₯ν•˜μ§€ μ•ŠλŠ”λ‹€λŠ” μ μ—μ„œ Stateless ν•˜λ‹€κ³  말할 수 μžˆλŠ” 것이닀.

Stateful-Stateless

 

Stateless 문제점

λ¬΄μƒνƒœμ˜ λ‹¨μ μœΌλ‘œλŠ” ν΄λΌμ΄μ–ΈνŠΈμ˜ μš”μ²­μ— μƒλŒ€μ μœΌλ‘œ Stateful 보닀 더 λ§Žμ€ 데이터가 μ†Œλͺ¨λ˜κ²Œ λœλ‹€λŠ” 점이닀.

맀번 μš”μ²­ν• λ•Œλ§ˆλ‹€ μžμ‹ μ˜ 뢀가정보λ₯Ό μ€˜μ•Όν•œλ‹€.

λ¬Όλ‘  이벀트 μ†Œκ°œ νŽ˜μ΄μ§€μ²˜λŸΌ 아무 정보λ₯Ό 담을 ν•„μš”κ°€ μ—†λŠ” νŽ˜μ΄μ§€λŠ” λ¬΄μƒνƒœλ‘œ λ§Œλ“€λ©΄ μ’‹λ‹€.

ν•˜μ§€λ§Œ 둜그인처럼 μœ μ €κ°€ λ‘œκ·ΈμΈν•˜κ³  μžˆλ‹€λŠ” μƒνƒœλ₯Ό μœ μ§€ν•΄μ•Ό ν•˜λŠ” μ„œλΉ„μŠ€λŠ” μƒνƒœλ₯Ό μœ μ§€ν•˜μ§€ μ•ŠμœΌλ©΄ 둜그인이 풀렀버린닀.

λ”°λΌμ„œ λͺ¨λ“  것을 λ¬΄μƒνƒœλ‘œ 섀계할 수 μ—†λ‹€. μ–΄μ©” 수 μ—†λŠ” κ²½μš°μ—λ§Œ μƒνƒœ μœ μ§€λ₯Ό μ΅œμ†Œν•œμœΌλ‘œ μ‚¬μš©ν•˜λŠ” 것이 λ² μŠ€νŠΈμ΄λ‹€.

 

Stateless 톡신 μ˜ˆμ‹œ

μƒνƒœ μœ μ§€λ₯Ό μ΄ν•΄ν–ˆλ‹€λ©΄ λ¬΄μƒνƒœλŠ” 생각보닀 μ‰½κ²Œ 이해할 수 μžˆμ„ 것이닀.

  • μžμ „κ±° 판맀λ₯Ό ν•˜λŠ” μ„œλ²„ X
  • λŒ€μ²΄ κ°€λŠ₯ν•œ μ„œλ²„ Y, Z
  • μžμ „κ±° μ‚¬λ €λŠ” ν΄λΌμ΄μ–ΈνŠΈ A

Stateless

λŒ€ν™”λ‚΄μš©μœΌλ‘œ μ§μž‘ν•˜λ“―μ΄, μ„œλ²„κ°€ μ΄μ „μ˜ ν΄λΌμ΄μ–ΈνŠΈμ˜ μš”μ²­(μƒνƒœ)을 μœ μ§€ν•˜μ§€ μ•Šμ•„λ„ ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ 정보λ₯Ό 일일히 μ²˜μŒλΆ€ν„° ν•˜λ‚˜λ‘˜ λ‹€ 보내주기 λ•Œλ¬Έμ— μ„œλ‘œ ν†΅μ‹ ν•˜λŠ”λ°λŠ” 아무 문제 없이 μ²˜λ¦¬κ°€ λœλ‹€.

λ”°λΌμ„œ λ¬΄μƒνƒœ(stateless)λŠ” 기쑴의 μ„œλ²„κ°€ ν˜Όμž‘ν•΄μ Έμ„œ μƒˆλ‘œμš΄ μ„œλ²„λ₯Ό κ°€μ Έλ‹€ 놓아도 기쑴의 λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ„ κ·ΈλŒ€λ‘œ κ΅¬ν˜„ν•˜κ³  μžˆλ‹€λ©΄ μ΄μ „μ˜ μ‚¬μš©μž μš”μ²­μ΄ 어떀지에 관계없이 계속 일을 μ²˜λ¦¬ν•  수 μžˆλ‹€.

κ·ΈλŸ¬λ‚˜ 단점은 ν΄λΌμ΄μ–ΈνŠΈκ°€ ν•˜κ³ μžν•˜λŠ” μ΅œμ’… λͺ©μ μ„ μœ„ν•΄ μ§€λ‚˜λŠ” κ³Όμ •λ§ˆλ‹€ 점점 μ „λ‹¬ν•΄μ•Όν•˜λŠ” λ‚΄μš©μ΄ λ§Žμ•„μ§„λ‹€λŠ” 것이닀.

 

Stateless 와 토큰(Token)

μœ„μ—μ„œ λ¬΄μƒνƒœμ˜ νŠΉμ§•μœΌλ‘œ ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„κ°„μ˜ 톡신에 ν•„μš”ν•œ λͺ¨λ“  μƒνƒœ 정보듀은 ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ 가지고 μžˆλ‹€κ°€ μ„œλ²„μ™€ ν†΅μ‹ ν• λ•Œ 데이터λ₯Ό μ‹€μ–΄ λ³΄λ‚΄λŠ” 것이라고 ν–ˆλ‹€.

κ·Έλž˜μ„œ μ„œλ²„λŠ” λ‹¨μˆœνžˆ λ°›μ•„μ„œ μ‘λ‹΅λ§Œ ν•΄μ£ΌκΈ° λ•Œλ¬Έμ— μ„œλ²„μ— λŒ€ν•œ λΆ€ν•˜κ°€ ν˜„μ €νžˆ 쀄어든닀고도 ν•˜μ˜€λ‹€.

ν•˜μ§€λ§Œ 둜그인 μœ μ§€μ™€ 같은 μƒνƒœλŠ” μ‹«μœΌλ‚˜ μ’‹μœΌλ‚˜ statefulν•œ μƒνƒœλ₯Ό μ‚¬μš©ν•˜μ—¬μ•Ό ν•˜λŠ”λ°, 그러면 μ„œλ²„μ— λΆ€ν•˜κ°€ 생기고 μ’€ κ·Έλ ‡λ‹€.

κ·Έλž˜μ„œ stateless νŠΉμ§•μ„ μœ μ§€ν•˜λ©΄μ„œλ„ 둜그인 μƒνƒœ μœ μ§€λ₯Ό κ°€λŠ₯ν•˜κ²Œ ν•˜λŠ” 기술이 λ°”λ‘œ JWT 토큰 이닀.

토큰은 ν΄λΌμ΄μ–ΈνŠΈκ°€ μ•”ν˜Έν™”λœ 둜그인 정보듀을 μ§€λ‹ˆκ³  μžˆλ‹€κ°€ μ„œλ²„μ— ν†΅μ‹ ν• λ•Œ λ„˜κ²¨μ€ŒμœΌλ‘œμ¨ λ‚΄κ°€ 둜그인 λ¬μŒμ„ μΈμ¦ν•˜λŠ” 방식이닀. 아직 토큰에 λŒ€ν•΄ λͺ¨λ₯Έλ‹€λ©΄ μœ„μ˜ 링크λ₯Ό 타고 ν•œλ²ˆ 정독해보기λ₯Ό κΆŒν•œλ‹€. (웹을 닀룬닀면 무쑰건 배우게 될 κ°œλ…μ΄λ‹€)

λ”°λΌμ„œ νŠΉλ³„ν•œ 일이 μ—†λ‹€λ©΄ λ¬΄μƒνƒœλ₯Ό 지ν–₯ν•΄μ•Όν•˜λ©° 정말 ν•„μš”ν•œ κ²½μš°μ—λ§Œ μƒνƒœ μœ μ§€λ₯Ό ν•΄μ•Όν•œλ‹€.

 

Stateless 와 HTTP / REST

보톡 ꡬ글에 Stateless μ„œλΉ„μŠ€λ₯Ό κ²€μƒ‰ν•˜λ©΄ λ‚˜μ˜€λŠ” μ—°κ΄€ κ°œλ…λ“€μ΄ λ°”λ‘œ HTTP, REST 정도가 μžˆλ‹€.

HTTPλŠ” μ•„μ‹œλ‹€ μ‹œν”Ό ν”„λ‘œν† μ½œμ΄λ‹€.

반면 RESTλŠ” ν”„λ‘œν† μ½œμ΄λΌκΈ° 보단 ꡬ쑰(Architecture)에 가깝닀.

즉, RESTλŠ” HTTP ν”„λ‘œν† μ½œ 상에 κ΅¬ν˜„λœ Resource Oriented Architecture (ROA) 섀계 ꡬ쑰 이닀.

λ”°λΌμ„œ HTTP와 REST λͺ¨λ‘ Statelessν•œ 성격을 가진 녀석듀이며,

  • HTTPλŠ” Statelssν•œ 성격을 가진 'ν”„λ‘œν† μ½œ'
  • RESTλŠ” Statelessν•œ 성격을 가진 '섀계 ꡬ쑰'

라고 μ •λ¦¬ν•˜λ©΄ λœλ‹€.


# 참고자료

https://5equal0.tistory.com/entry/StatefulStateless-Stateful-vs-Stateless-%EC%84%9C%EB%B9%84%EC%8A%A4%EC%99%80-HTTP-%EB%B0%8F-REST

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

https://irostub.github.io/web/stateful-stateless/ 

https://sjlim5092.tistory.com/35