Skip to content

Latest commit

 

History

History
56 lines (46 loc) · 3.85 KB

Stateful, Stateless.md

File metadata and controls

56 lines (46 loc) · 3.85 KB

Stateful? Stateless?

Stateful?

  • 서버가 클라이언트의 상태를 보존한다는 의미이다.
  • 클라이언트의 상태를 보존한다는 것은 어딘가에 정보를 저장하고 있다는 의미이다.
  • 이러한 정보들은 일반적으로 브라우저 쿠키나 서버의 세션 메모리에 저장되어 상태를 보존한다.

Stateful 예시

 클라이언트 : 이 아메리카노 얼마인가요?
 서버 : 3천원 입니다. (아메리카노 상태 유지) 
 클라이언트: 2개 구매하겠습니다.
 서버: 6천원 입니다. 신용카드, 현금중에 어떤 걸로 구매 하시겠어요? (아메리카노, 2개 상태 유지) 
 클라이언트: 신용카드로 구매하겠습니다.
 서버: 6천원 결제 완료되었습니다. (아메리카노, 2개, 신용카드 상태 유지)

Stateful 의 문제점

stateful

  • 이와 같이 홍길동이라는 유저가 로그인 하여 홍길동이라는 상태를 서버가 보존하고 있었는데 해당 서버의 장애가 일어날 때 문제가 발생한다.
  • 장애가 일어난 서버로 인해 유저는 다른 서버로 요청을 하게 되는데 이때 그 서버는 해당 홍길동의 상태를 가지고 있지 않기 때문에 해당 로그인 상태가 사라지게 된다.
  • 이러한 문제로 인해 클라이언트의 상태 데이터를 따로 캐시 서버(Redis)에 저장하여 이용하기도 한다.

Stateless?

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

Stateless 예시

 클라이언트 : 이 아메리카노 얼마인가요?
 서버 : 3천원 입니다.
 클라이언트 : 아메리카노 2개 구매하겠습니다.
 서버 : 아메리카노 2개는 2천원 입니다. 신용카드, 현금중에 어떤 걸로 구매 하시겠어요?
 클라이언트: 아메리카노 2개를 신용카드로 구매하겠습니다.
 서버 : 6천원 결제 완료되었습니다.

Stateless 장점

image

  • 이와 같이 Stateless 는 클라이언트의 상태를 서버가 보존하고 있지 않기 때문에 서버의 장애가 발생하더라도 문제가 되지 않습니다.

image

  • 또한, 이와 같이 서버가 클라이언트의 상태를 보존하지 않기에 서버 증설에도 유리하게 되며 대량의 트래픽 발생 시에 수월한 대처가 가능합니다.

Stateless 의 문제점

  • 무상태의 단점으로는 클라이언트의 요청에 상대적으로 Stateful 보다 더 많은 데이터가 소모되게 된다는 점이다.
  • 매번 요청할때마다 자신의 부가정보를 줘야한다.

Stateless 와 Token

  • Stateless 는 자신의 부가정보를 서버에게 보내야 하며 서버는 단순히 받아서 응답만 하면 되기에 서버의 부하가 줄어든다.
  • 하지만 로그인 유지와 같은 상태를 위해 Stateful 한 상태를 사용해야 하는데 그러면 서버에 부하가 생기기 때문에 싫을 수 있다.
  • 그래서 Stateless 특징을 유지하며 로그인 상태 유지를 가능하게 하는 기술이 JWT 토큰이다.

Reference