Spring/모든 개발자를 위한 HTTP 웹 기본 지식

8. 클라이언트 서버 구조 | 무상태 프로토콜 스테이스 리스 (Stateless)

DEV-HJ 2023. 8. 20. 22:04
반응형

클라이언트 서버 구조

 

  • Request, Response (요청, 응답) 구조 
  • 클라이언트는 서버에 요청을 보내고, 응답을 대기한다.
  • 서버가 요청에 대한 결과를 만들어서 응답해주고 응답값으로 클라이언트는 UI를 그린다


무상태 프로토콜

스테이스 리스 (Stateless)

 

  • 서버가 클라이언트의 상태를 보존하지 않음
  • 장점 : 서버 확장성 높음 (스케일 아웃)
  • 단점 : 클라이언트가 추가 데이터 전송

Stateful, Stateless 차이

상태 유지 - Stateful


Stateful, Stateless 차이

상태 유지 - Stateful, 점원이 중간에 바뀌면?


Stateful, Stateless 차이

상태 유지 - Stateful, 정리


Stateful, Stateless 차이

무상태 - Stateless

포인트 - 점원은 고객의 마지막 대화만으로도 결재를 완료할수 있다.


Stateful, Stateless 차이

무상태 - Stateless, 점원이 중간에 바뀌면?

점원이 중간에 바뀌어도 다 고객요청을 알아들을수 있다.


Stateful, Stateless 차이 정리

 

상태유지 : 중간에 다른 점원으로 바뀌면 안된다

(중간에 다른 점원으로 바뀔때 상태 정보를 다른 점원에게 미리 알려줘야한다)

 

무상태 : 중간에 다른 점원으로 바뀌어도 된다.

- 갑자기 고객이 증가해도 점원을 대거 투입할 수 있다.

- 갑자기 클라이언트 요청이 증가해도 서버를 대거 투입할 수 있다.

- 무상태는 상태유지를 안하기 때문에 응답 서버를 쉽게 바뀔 수 있다 → 무한한 서버 증설 가능


 



Stateless 실무 한계

  • 모든것을 무상태로 설계 할 수 있는 경우도 있고 없는 경우도 있다
  • 무상태 (예: 로그인이 필요 없는 단순한 서비스 소개 화면)
  • 상태유지 (예: 로그인)
  • 로그인한 사용자의 경우 로그인 했다는 상태를 서버에 유지
  • 일반적으로 브라우저 쿠키와 서버 세션등을 사용해서 상태 유지
  • 상태 유지는 최소한만 사용

Stateless 단점

  • Stateful보다 데이터를 너무 많이 보냄

 

반응형