
간단한 의미로 Stateful 은 상태를 보존 하며 통신을 하는 프로토콜 Stateless 는 클라이언트 상태를 보존하지 않으며 통신을 하는것이다.
상태유지 : 중간에 요청이 다른서버로 유입되면 안된다.
- A서버로 부터 가격이 100만원인 노트북에 대한 정보를 받는다.
- A서버에게 2개 구매 요청을 보낸다.
- A결제수단을 보낸다.
위의 경우 중간에 서버가 변경될경우 정상적인 로직이 수행될 수 없다. 그 이유를 살펴보자
클라이언트는 A서버에게 노트북에 대한 정보를 요청한다. 이때 A 는 클라이언트가 노트북 구매 할것이다 라는 정보를 갖고 있는다.
이때 2번 요청시 B서버에게 2개 구매 요청을 보낼경우 어떤것을 구매할것인지에 대한 목적어 즉 노트북이란 정보가 B서버는 갖고있지 않는다.
설상가상 C서버가 결제수단 정보를 request 받았을때 어떤상품 몇개를 이 결제정보로 결제 해야할지 정보를 갖고있지 않는다.
무상태 : 중간에 요청이 다른서버로 유입되어도 아무런 문제가 없다.
- A서버로 부터 가격이 100만원인 노트북에 대한 정보를 받는다.
- B서버로 노트북 2개 구매 요청을 보낸다.
- C서버로 노트북 2개 신용카드 결제 요청을 보낸다.
위의 경우 중간에 요청 서버가 변경될 지라도 소직이 수행될 수 있다.
stateful 과 stateless 차이는 응답 서버를 쉽게 바꿀 수 있으며 1가지 request 라이프 사이클을 상태유지 프로토콜 에서느 1개 서버가 핸들링 해야하지만 stateless 는 1가지 request 라이프 사이클을 1개의 서버가 전담하지 않아도 된다.
하여 stateless 일경우 서버의 대거 증설이 가능하다.

만약 A서버와 계속 일련의 트랜젝션을 수행하는 도중 A서버가 다운되었을경우 그간 통신했던 모든 상태값들이 날아가게 되며 클라이언트는 지금까지 진행해오던 트렌젝션을 처음부터 다시해야한다.

요청 트랜젝션을 아무 서버가 핸들링이 가능하기 때문에 무한 서버 증설이 가능하다 하지만 상태유지 프로토콜에 비해 서버에 보내는 데이터 양이 늘어난다.
reference
https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC