HTTP/1.1 -> 주로 가장 많이 사용하고 있습니다. TCP 기반
HTTP/2 -> 성능개선, TCP 기반
HTTP/3 -> TCP 대신에 UDP 사용 및 성능개선
HTTP 특징
- 클라이언트 서버 구조(Request, Response 구조, 요청에 대한 결과를 만들어서 응답)
- 무상태 프로토콜(Stateless)
서버가 클라이언트의 상태를 보존하지 않습니다.(중요!)
장점 -> 서버 확장성이 높습니다.(스케일 아웃) 응답 서버를 쉽게 바꿀 수 있습니다.
단점 -> 클라이언트가 추가 데이터 전송, 데이터 정보를 많이 보내야 합니다.
중간에 서버 1이 장애가 발생해도 중계서버가 요청을 바로 서버 2로 던져주면 해결할 수 있습니다. 또한,
특정 이벤트가 몰릴 경우 해당 서버를 수평적으로 확장해서 해결할 수 있는 장점을 가지고 있습니다.
무상태 프로토콜의 한계
무상태로 설계할 수 있는 것 -> ex) 단순한 이벤트 페이지, 로그인이 필요 없는 소개 페이지 등등...
상태 유지해야 하는 것 -> 로그인(로그인한 사용자가 로그인했다는 상태를 서버에 유지) 등등....
상태 유지는 최소한만 사용해야 합니다. 그래도 최대한 스테이리스 방식으로 설계하자!!
- 비연결성
http는 기본이 연결을 유지하지 않는 모델입니다. 1시간 동안 수천 명이 서비스를 사용해도 실제 서버에서 동시에 처리하는 요청은 수십 개 이하로 매우 작습니다. 서버 자원을 매우 효율적으로 사용할 수 있습니다.
비연결성의 한계
TCP/IP 연결을 계속적으로 새로 맺어야 합니다. 즉, 3 way handshake 시간이 추가가 됩니다.
웹 브라우저로 사이트를 요청하면 css, javascript, html 등등... 모든 자원들을 함께 다운로드받습니다.(지금은 HTTP 지속 연결(Persistent Connections)로 문제 해결, HTTP/2와 HTTP/3에서 더 많은 최적화)
- HTTP 메시지
- 단순성, 확장 용이
'혼자 공부하는 것들 > HTTP' 카테고리의 다른 글
참고하면 좋은 URL 설계 개념 (0) | 2022.02.12 |
---|---|
HTTP API의 올바른 설계 방법 (0) | 2022.02.06 |
http 정리 예정 (0) | 2022.01.30 |
댓글