Hypertext Transfer Protocol
Hypertext html: 문서 간의 링크를 통해서 연결할 수 있는 HyperText 문서를 통해서연결할 수 있는 html을 전송하는 프로토콜로 시작이 되었다.
그런데 지금은 모든 것을 HTTP protocol에 담아서 전송한다.
HTML, TEXT, Image, 음성, 영상, 파일, JSON, XML...etc 거의 모든 형태의 데이터를 전송할 수 있다.
보면 h2가 http 2이고 인프런은 없는데 구글에서 구글링을 하다보면 http3도 가끔 보인다.
HTTP 특징
결국은 stateful은 중간에 다른 점원으로 바뀌면 대화가 안 된다.
다만, 다른 점원으로 바뀔 때 상태 정보를 다른 점원에게 미리 알려줘야한다.
무상태 중간에 다른 점원으로 바뀌어도 된다.
갑자기 고객이 증가해도 점원을 대거 투입할 수 있다.
==갑자기 클라이언트 요청이 증가해도 서버를 대거 투입할 수 있다.
무상태는 응답 서버를 쉽게 바꿀 수 있다. -> 무한한 서버 증설 가능
잘 이해가 가지 않는다면 아래 그림을 보자.
반면 무상태라면 클라이언트에 정보를 다 갖고있기 때문에 서버를 다른걸로 바꾸어도 아무 문제가 되지 않는다.
그리고 이 서버를 수평확장 즉, scale out할 때 용이하다.
모든 것을 무상태로 설계할 수 있는 경우도 있고 없는 경우도 있다.
무상태: 로그인이 필요없는 단순한 소개화면
상태 유지: 로그인
로그인한 사용자의 경우 로그인했다는 상태를 서버에 유지
상태 유지는 최소한만 사용
클라이언트에서 보내는 정보의 양이 많아짐.
웹 어플리케이션을 설계할 땐 최대한 무상태로 설계하고
최소한의 상태유지를 유지한다.
HTTP는 기본적으로 비연결성이다.
왜냐하면 사용자가 많이 사용한다고 해도 동시에 수많은 요청이 들어오는 경우는 극히 드물기 때문이다. 그래서 요청을 짧고 빠르게 치고 빠지는것이 더 유리하다.
즉, 누군가가 검색을 해서 문서를 보고 또 한참후에 검색을 하고 이렇게 하기 때문에 아무것도 하지 않을 때 연결을 끊어서 서버의 자원을 최소한으로 유지하는 것이 유리하는 것이다.