CS

[CS] Stateful vs. Stateless

pearhyunjin 2024. 3. 18. 20:24

Stateful 과 Stateless

Client와 Server간의 네트워크 통신이 어떻게 이루어지는지에 대한 개념

 

Session

Stateful, Stateless 개념을 이해를 위한 세션 상태와 세션 정보에 대한 개념

  • 세션 상태
    클라이언트와 서버간 통신 인증이 된 상태를 의미하며, 데이터 송수신이 가능
  • 세션 정보
    한 세션 내에서 클라이언트가 서버에 정송할 데이터 정보를 의미하며,
    서버는 세션 유지 시간이 지나거나 모든 데이터를 수신할 때까지 세션 상태를 유지한다.

 


 

Stateful Service : 상태 유지

Server와 Client 간 세션(요청과 응답 과정)의 'State(상태)'에 기반해 Client에게 응답을 보내기 위해

서버가 클라이언트의 상태를 보존함. 즉, 세션 간의 정보와 상태가 지속적으로 추적 가능하다.

- 서버는 각 세션별로 어떤 state 정보를 취득할 지 사전에 정의 가능

- state 정보에 따라 어떤 액션을 취할 지에 대한 전체적인 프로세스 설계 가능

- 세션이 중단되어도 이전의 컨텍스트와 내역 유지, 재개 가능

 

  • Protocol
    TCP의 3-way handshaking 과정 / 파일 전송 프로토콜(FTP)

  • 아키텍처
    대체로 로그인이 필요한 서비스(이메일, 온라인뱅킹 등)를 제공하는 경우

  • 장점
    - 준수한 요청 처리 성능
    - 이전 컨택스트 추적이 가능해 메시지 전달이 효율적

  • 단점
    - 좋지 않은 확장성
    - 서버에 State 관리를 위한 추가적인 저장 공간 필요
    - 서버가 많은 양의 클라이언트 데이터를 짊어져야 함
    - 기존에 요청을 처리하던 특정 서버만이 후속 요청에 대응 가능

 


 

Stateless Service : 무상태

Server와 Client 간의 요청/응답 기록을 남겨두지 않는다.

동일 클라이언트를 상대하더라도 서버는 매번 처음 본 클라이언트처럼 행동하며 클라이언트의 요청이 이전과는 다른 서버에게 전달될 수 있다. 만약 세션 정보를 기록해야하는 상황이라면, 서버보다는 클라이언트 쪽에 캐시 형태로 정보를 보관한다.

때문에 클라이언트가 무언가 요청하고자 할 때, 하나의 요청 메시지에 필요한 모든 내용을 담아야 한다.

 

  • Protocol
    HTTP, UDP, DNS

  • 아키텍쳐
    홈페이지 등 불특정 다수에게 단순한 HTML이나 리소스 등을 제공해야 하는 경우 사용

  • 장점
    - 서버 장애시 유연한 대응
    - 서버가 부담하는 리소스 규모 감소
    - 서버 규모 확장 / 축소가 쉬움

  • 단점
    - 클라이언트가 송신해야하는 데이터 양이 늘어나기 때문에 네트워크 퍼포먼스가 다소 떨어질 수 있음

 

 


* https://5equal0.tistory.com/entry/StatefulStateless-Stateful-vs-Stateless-서비스와-HTTP-및-REST

* https://velog.io/@adc0612/stateful과-stateless-차이-7tfkp7a4