서버가 클라이언트의 상태를 보존하지 않음
장점 :
서버의 확장성이 높음, 각 요청에 다른 서버들이 호출되어도 장애가 발생하지 않음,
응답 서버를 쉽게 바꿀 수 있음,
단점 : 클라이언트가 서버에 요청할 때 보내야 할 데이터들이 많아짐
실무적 한계 : 로그인 같은 경우 상태를 서버에 유지해야하기 때문에 모든 것에 무상태를 사용할 수는 없음 -> 따라서 최소한으로 상태유지를 사용해야함
서버가 클라이언트가 전송해준 데이터를 보존함
장점 : 클라이언트가 서버에 요청을 보낼 때 이전에 보냈던 데이터들을 추가로 전송하지 않아도 됨
단점 :
트래픽이 늘어서 서버를 추가했을 경우 요청받은 서버가 다를 경우 장애 발생 ->
이전되는 서버에 클라이언트에 정보를 넘겨줘야함,
클라이언트의 정보를 저장해놔야 하기 때문에 지속적으로 서버의 자원을 소모함
클라이언트 요청에 대한 응답을 한 뒤 클라이언트와 연결을 유지하지 않고 끊음
HTTP 기본이 연결을 유지하지 않는 모델이기 때문에 서버의 자원을 효율적으로 사용할 수 있음
한계 :
TCP/IP 연결을 매번 새로 맺어야 함 (3 way handshake)
HTML뿐만 아니라 이미지, javascript 등 많은 자원들이 다운로드 됨
극복 :
HTTP 지속 연결(Persistent Connections)로 해결
HTTP/2, HTTP/3에서 더 많은 최적화