[Spring in Action] Stateless vs Stateful

728x90
반응형
SMALL

Spring in Action (5판)

  • 스프링 5의 강력한 기능과 생산성을 활용한 웹 애플리케이션 개발
  • Walls, Craig 지음
  • 제어펍 출판사
  • 2020.05.14

 

스프링 인 액션 개인 스터디 내용을 정리하자.

 

 

 

 


Stateful

Server와 Client 간 세션의 State(상태)에 기반하여 Client에 response를 보낸다.

이를 위해 세션 상태를 포함한 Client와의 세션 정보를 Server에 저장한다.

 

TCP

대표적인 Stateful 구조

3-way handshaking

Server와 Client는 SYN과 SYNACK를 주고받으며, 양단간 세션 상태를 established 한 상태로 만든다.

세션 상태가 established가 되면 Client와 Server는 데이터를 주고 받을 수 있다.

즉, TCP는 세션 상태에 따라 Server의 응답이 달라지는 Stateful 프로토콜이다.

 

netstat-a

 

 

Stateless

Server의 응답이 Client와의 세션 상태와 독립적이다.

Server는 단순히 요청이 오면 응답을 보내는 역할만 수행하며, 세션 관리는 Client에게 책임이 있다.

Client와의 세션 정보를 기억할 필요가 없으므로, 이러한 정보를 Server에 저장하지 않고 필요에 따라 외부 DB에 저장, 관리한다.

UDP

대표적인 Stateless 구조

세션 상태에 관계 없이 단순히 데이터그램을 source에서 destination 쪽으로 전송한다.

 

UDP는 Client와 세션 상태에 관계없이 요청에 대한 응답만을 수행한다.

 

Stateless Service

최근 웹서비스 구조는 모두 Stateless 구조 기반 → Scaling이 자유롭기 때문이다.

Stateful의 경우 Client의 세션 정보가 새로 scale out된 서버에 저장되어 있지 않기에 세션 정보를 옮겨주는 등의 부수적인 관리가 요구된다.

 

하지만 Stateless의 경우 Server에서 Client 세션 관리를 하지 않으므로 필요 없다.

728x90
반응형
LIST