본문 바로가기
Study

[Web] Stateful / Stateless 차이

by mmm- 2023. 10. 11.

상태 프로토콜 (Stateful)

: client-server 관계에서 서버가 클라이언트의 상태를 보존함을 의미

  • 클라이언트의 정보를 기억한다 
    ▶ 어딘가 정보를 저장하고 통신할 때마다 읽는다는 뜻
    • 보통 브라우저의 쿠키에 저장되거나, 서버의 세션 메오리에 저장되어 상태 유지
  • Stateful 구조를 따르는 프로토콜 예로 TCP3-way handshaking 과정을 이야기할 수 있음

 

단점

  • 해당 서버가 멈추거나 못쓰게 되면 다른 서버는 해당 서버의 상태값들을 가지고 있기 않기 때문에 대체가 불가능
  • 용량 한계 존

무상태 프로토콜 (Stateless)

: 통신에 필요한 모든 상태 정보들을 서버에서 보존하지 않고 클라이언트에서 가지고 있다가 서버와 통신할 때 데이터를 실어보내는 것

  • UDP와 HTTP가 대표적인 Stateless
  • 서버는 단순히 요청이 오면 응답을 보내는 역할만 수행.
    상태관리는 전적으로 클라이언트에게 책임이 있음
  • 데이터를 전송할 때마다 연결하고 바로 끊어버림
  • 특별한 일이 없다면 무상태를 지향해야 함

 

장점

  • 서버는 단순히 응답만 하기 때문에 상태 유지에 대한 부하가 현저히 줄어듦
  • 대량의 트래픽 발생시 서버 확장을 통해 대처를 수월하게 할 수 있음
    (상태를 보관하기 않아 서버가 바뀌어도 상관없기 때문)

 

단점

  • Stateful보다 더 많은 데이터가 소모
  • 매번 요청할 때마다 자신의 부가정보를 줘야 함
    (로그인의 경우 상태를 유지하지 않으면 로그인이 풀려버림.
    stateless 특징을 유지하면서도 로그인 상태 유지를 가능하게 하는 기술이 바로 JWT토큰)

 


참고

'Study' 카테고리의 다른 글

[Protocol] HTTP 정리  (0) 2023.10.16
[HTTP] HTTP message  (0) 2023.10.13
[JSON] JSON 정리  (1) 2023.10.11
[Firebase] Realtime Database & Firestore  (0) 2023.10.10