CS/HTTP 웹 기본 지식
[HTTP 웹 기본 지식] Stateful, Stateless
jisu0708
2023. 7. 24. 17:40
해당 글은 김영한님의 '모든 개발자를 위한 HTTP 웹 기본 지식' 강의를 수강하고 중요한 내용을 정리하고 보충한 글입니다.
0. 개요
컴퓨터 시스템과 네트워크 프로토콜에서 Stateful와 Stateless라는 용어는 서버가 클라이언트와 상호작용하고 세션 정보를 관리하는 방식을 나타낸다.
1. Stateless (무상태 프로토콜)
무상태 프로토콜 혹은 시스템은 클라이언트와의 과거 상호작용에 대한 어떠한 정보도 저장하지 않는다. 즉, 서버가 클라이언트의 상태를 보존하지 않는다.
각각의 요청은 서버에 의해 독립적으로 처리되며 이전 요청과는 아무런 관련이 없다.
1) 특징
장점
- 서버가 클라이언트의 상태를 보존하지 않기 때문에, 서버의 확장성이 높아짐
- 무한한 수의 서버를 추가하여 시스템의 성능을 쉽게 향상시킬 수 있음
- 응답 서버를 자유롭게 바꿀 수 있어 서버 유지보수가 용이함
단점
- 각 클라이언트 요청에 필요한 모든 정보를 클라이언트가 매번 제공해야 하므로 데이터 전송량이 증가할 수 있음
2) 실무에서의 활용
일반적으로 단순한 정보 제공과 같이 각 요청이 독립적으로 처리될 수 있는 경우에는 무상태 방식이 적절하다. 예를 들어 웹페이지의 정적 컨텐츠를 요청하는 경우가 여기에 해당한다.
2. Stateful (상태 유지 프로토콜)
Stateful은 서버가 클라이언트와의 상호작용에서 각 세션의 정보를 보존하는 방식을 말한다.
클라이언트와 서버 간의 연결이 계속 유지되며, 클라이언트가 로그인하거나 세션이 시작된 후에도 해당 정보가 서버에 저장된다.
1) 특징
장점
- 세션 정보를 유지하고 있으므로, 클라이언트가 추가 데이터를 전송하지 않아도 됨
- 데이터 전송량이 감소하고 효율적인 통신이 가능
- 클라이언트 상태를 계속 추적할 수 있으므로, 특정 작업을 지속적으로 처리해야할 경우에 유용
단점
- 서버에 추가적인 리소스를 요구하고 서버 유지보수가 더 복잡해질 수 있음
- 상태 정보를 유지하는 과정에서 장태가 발생하면, 클라이언트와의 연결이 중단될 수 있음
2) 실무에서의 활용
로그인과 같이 세션 정보를 유지해야 하는 경우에는 상태 유지 방식을 사용한다. 로그인된 사용자에 대한 정보를 유지해야 하기 때문에, 클라이언트가 매번 로그인 정보를 보내지 않아도 된다.
일반적으로는 최대한 무상태로 설계하는 것이 서버의 확장성과 유지보수 측면에서 유리하기에 상태 유지는 필요한 경우에만 사용하고, 그 외에는 무상태 방식으로 구현하는 것이 권장된다.