HTTP는 무상태 프로토콜은 지향한다.
무상태 프로토콜 이란, 서버가 클라이언트의 상태를 보존 하지 않는다.
일단 무상태를 보기 전, 상태 유지를 예를 들어 알아보자
아이폰을 사러 폰 가게에 와서 듣는 대화 내용이다.
고객 : 아이폰 14프로 얼마인가요?
점원 : 100만원입니다. (아이폰 14프로 상태 유지)
고객 : 2개 살게요.
점원 : 신용카드로 구매하시겠어요? 현금 구매 하시겠어요? ( 아이폰 14프로, 2개 상태 유지)
고객 : 신용카드로 할게요.
점원 : 200만원 결제 되었습니다. (아이폰 14프로, 2개, 신용카드 상태 유지)
이렇게 한 점원이 고객과 서로 대화를 하면서 상태를 유지하는 것이다.
이는 나중에 점원이 바뀌게 되면 해당 대화 내용을 알 수 없는 꼴이 되어버린다.
무상태 프로토콜 예를 들어보자.
똑같이 아이폰을 사러왔다.
고객 : 아이폰 14프로 얼마인가요?
점원A : 100만원입니다.
고객 : 아이폰 14프로 2개 살게요
점원B : 200만원이고, 신용카드, 현금 중 어떤걸로 하시겠어요?
고객 : 아이폰 14프로 2개 현금으로 구매할게요
점원C : 200만원 결제 되었습니다.
이렇게 점원 3명과 고객 1명이 서로 대화를 한다. 중간에 점원이 바뀐다 하더라도 고객과의 대화가 이어진다는 점이 있다.
정리하자면,
상태 유지 는 중간에 다른 점원으로 바뀌면 안되듯이, 항상 같은 서버를 유지해야한다.
그러나
무상태 프로토콜 은 항상 같은 서버가 유지될 필요가 없다.
그렇기에 클라이언트 요청이 증가해도 서버를 대거로 투입할 수 있으며 수평 확장에 유리하다.
근데 전송되는 데이터양이 너무 많다는 것이 단점이다.
로그인 기능에 있어서는 상태를 유지해야하기에 일반적으로 브라우저의 쿠키와 서버 세션을 통해서 상태를 유지한다.
상태 유지는 최소한으로 사용하는 것이 좋다.