stateful과 stateless 차이

adc0612·2022년 4월 19일
1

Stateful (상태유지)

클라이언트-서버 관계에서 서버가 클라이언트의 상태를 보존함을 의미한다.
클라이언트의 이전 요청이 서버에 잘 전달되었을 때, 클라이언트의 다음 요청이 이전 요청과 관계가 이어지는 것을 의미한다.

  • 상태에 대해 저장해야하기 때문에 백업 스토리지가 요구된다.
  • 상태 저장에 대한 요청은 서버 측 상태에 따라 달라지게 된다.
  • 예) TCP통신의 경우 server와 client는 1. establishing connection, 2. Trasmitting data 3. Terminating connection 이라는 TCP handshake 과정을 통해서 연결되며 데이터를 전송하여, 서버가 클라이언트의 세션 정보를 저장한다.

Statless (무상태)

클라이언트-서버 관계에서 서버가 클라이언트의 상태를 보존하지 않음을 의미한다.
Stateless 구조에서 server는 단순히 요청이 오면 응답을 보내는 역할만 수행하며, 세션 관리는 클라이언트에게 책임이 있다.
따라서 Stateless 구조는 클라이언트와의 세션 정보를 기억할 필요가 없으므로, 이러한 정보를 서버에 저장하지 않습니다. 대신 필요에 따라 외부 DB에 저장하여 관리 할 수 있다.

  • 웹서버 통신(http) 특성상 사용자(브라우저)의 이전 상태 client(쿠키) or server(세션) 정보를 기록하지 않는 접속이란 의미다.
  • 브라우저가 데이터를 전송할 때마다 연결하고 바로 끊어버리는 방식이다.
  • 장점 : 서버의 확장성이 높기 때문에 대량의 트래픽 발생 시에도 대처를 수월하게 할 수 있다.
  • 단점 : 클라이언트의 요청에 상대적으로 Stateful 보다 더 많은 데이터가 소모된다. (매번 요청할때마다 자신의 부가정보를 줘야 하니까)
  • 예) UDP는 TCP와 달리 handshaking 과정을 통해 연결 세션을 인증하는 절차를 수행하지 않는다. 세션 상태에 관계 없이 단순히 데이터그램을 source에서 destination 쪽으로 전송한다. client가 송신하려 했던 모든 데이터가 server쪽에 수신 되었는지 확인하지 않는다.
    따라서 server쪽은 client와의 세션 정보를 전혀 저장하지 않으므로 stateless 구조를 가지고 있다.

비교

statlessstateful
정의클라이언트가 서버에 요청을 하면 서버는 요청한 상태에 따라 응답을 보내주는 네트워크 프로토콜클라이언트가 서버에 요청을 하면 서버는 어떤 응답을 보낼지 예상하며 만약 응답이 없으면 재요청을 보내주는 네이워크 프로토콜
ExampleHTTP, UDP, DNSTCP, FTP, Telnet
서버 필요성서버, 세션정보를 저장할 서버가 필요없다.서버, 세션을 저장하고 유지하려면 서버가 필요하다.
의존성서버와 클라이언트가 느슨하게 결합되어 있고 독립적으로 작동 할 수 있다.서버와 클라이언트가 밀접하게 결합되어 있다.
서버 디자인서버 설계가 간단하다.서버 설계가 비교적으로 복잡하고 구현하기 어렵다.
충돌 관리서버 장애가 발생해도, 충돌 후 다시 쉽게 시작이 가능하다.서버가 세션 및 여러 세부 정보들을 유지해야 하기 때문에 어렵다.
Transactions서버에서 빠르게 처리할 수 있다.서버가 비교적 느리게 작동한다.

참고 자료
https://www.tutorialspoint.com/difference-between-stateless-and-stateful-protocols
https://jjy0821.tistory.com/36
https://inpa.tistory.com/entry/WEB-%F0%9F%93%9A-Stateful-Stateless-%EC%A0%95%EB%A6%AC

0개의 댓글