HTTP (HyperText Transfer Protocol) 특징

  • 클라이언트 서버 구조
  • 무상태 프로토콜 (Stateless)
  • 비 연결성 (Connectionless)
  • 단순함, 확장가능

 

Stateless ?

Stateful과는 반대로 서버에서 클라이언트의 상태를 저장하지 않는 것을 말합니다.

Stateless 구조에서 서버는 단순하게 요청에 대해 응답을 하는 역할만 하고, 세션 관리는 Client에게 있습니다.

즉, 서버의 응답이 클라이언트의 세션 상태와 독립적입니다.

따라서, 이러한 Stateless 구조는 Client와의 세션 정보를 서버에 저장하지 않습니다. 다만, 필요에 따라 DB에 저장하며 관리할 수 있습니다.

 

아래와 같이 응답할 수 있는 서버 3개가 있고 중계서버(LoadBalancer 역할)가 있는 구조를 살펴보겠습니다.

 

로그인과 같은 세션관리가 필요한 서비스에 대한 요청이 서버1에 들어왔다고 가정해보겠습니다.

Stateful 구조에서는 서버에 세션 정보를 저장했지만, Stateless 구조에서는 서버에 세션 정보를 저장하지 않고 DB에 저장합니다.

따라서 클라이언트1의 요청이 어떤 서버로 전달되던지 클라이언트1 정보에 접근할 수 있습니다.

 

이렇게 서버에서 세션 정보를 관리하지 않기 때문에 로드밸런서가 최초 서버로 계속 연결되도록 신경 쓸 필요가 없고

Scale-out에 유리합니다. (Stateful 같은 경우에는 최초 서버와 연결 되도록 해야하고 Scale-out시 세션정보를 옮겨주는 부가적인 작업 필요)

대표적인 Stateless 프로토콜로 HTTP, UDP가 있습니다.

 

 

비연결성 (Connectionless)

HTTP는 서버에서 클라이언트와의 연결을 계속 유지하는게 아니라 데이터를 주고 받으면 연결을 종료하는 모델입니다.

일반적으로 초 단위 이하의 빠른 속도로 응답하기 때문에 서버 자원을 효율적으로 사용할 수 있습니다. (연결 유지 X 때문에)

 

비연결성 (Connectionless) 한계 와 극복

  • TCP/IP 연결을 새로 맺어야 한다 - 3 way handshake 시간 추가
  • 웹 브라우저로 사이트를 요청하면 HTML 뿐만 아니라 JS, css, 추가 이미지 등 수 많은 자원이 함께 다운로드된다 (이때마다 다시 연결)
  • 자원을 보낼 때마다 연결을 반복하는 것은 비효율적이기 때문에 지금은 HTTP 지속 연결(Persistent Connections)로 문제를 해결한다.

 

참고 :

 

인프런 : 모든 개발자를 위한 HTTP 웹 기본 지식 - 김영한 

 

https://5equal0.tistory.com/entry/StatefulStateless-Stateful-vs-Stateless-%EC%84%9C%EB%B9%84%EC%8A%A4%EC%99%80-HTTP-%EB%B0%8F-REST

 

[Stateful/Stateless] Stateful vs. Stateless 서비스와 HTTP 및 REST

Contents 0. Prologue 1. Stateful Service 2. Stateless Service 3. Why Stateless Service 4. Stateless Service 및 HTTP, 그리고 REST Stateful/Stateless 서비스의 개념을 알아보고, 이를 바탕으로 Stateless..

5equal0.tistory.com

 

'HTTP' 카테고리의 다른 글

URI ? URN ? URL ?  (0) 2021.12.15

+ Recent posts