클라이언트-서버 관계에서 서버가 클라이언트의 상태를 보존함을 의미한다.
클라이언트의 이전 요청이 서버에 잘 전달되었을 때, 클라이언트의 다음 요청이 이전 요청과 관계가 이어지는 것을 의미한다.
클라이언트-서버 관계에서 서버가 클라이언트의 상태를 보존하지 않음을 의미한다.
Stateless 구조에서 server는 단순히 요청이 오면 응답을 보내는 역할만 수행하며, 세션 관리는 클라이언트에게 책임이 있다.
따라서 Stateless 구조는 클라이언트와의 세션 정보를 기억할 필요가 없으므로, 이러한 정보를 서버에 저장하지 않습니다. 대신 필요에 따라 외부 DB에 저장하여 관리 할 수 있다.
statless | stateful | |
---|---|---|
정의 | 클라이언트가 서버에 요청을 하면 서버는 요청한 상태에 따라 응답을 보내주는 네트워크 프로토콜 | 클라이언트가 서버에 요청을 하면 서버는 어떤 응답을 보낼지 예상하며 만약 응답이 없으면 재요청을 보내주는 네이워크 프로토콜 |
Example | HTTP, UDP, DNS | TCP, 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