티스토리 뷰

Network

[네트워크] HTTP 비연결성

AlgoRoot 2022. 7. 7. 21:03
반응형

 

HTTP 비연결성

연결을 유지하지 않는 모델은 서버와 클라이언트간 연결하고 요청과 응답이 오면 연결을 바로 끊음으로서 최소한의 자원이 유지된다. 

  • HTTP는 기본이 연결을 유지하지 않는 모델이다. 
  • 일반적으로 초 단위의 이하의 빠른 속도로 응답한다.
  • 1시간 동안 수천명이 서비스를 사용해도 실제 서버에서 동시에 처리하는 요청은 수십개 이하로 매우 작음 
    • ) 웹 브라우저에서 계속 연속해서 검색 버튼을 누르지는 않는다.
  • 비연결성은 서버 자원을 매우 효율적으로 사용할 수 있다.

 

 

비연결성 단점

  • TCP/IP 연결을 새로 맺어야 하게 되어  3 way handshake 시간이 추가된다.
  • 웹 브라우저로 사이트를 요청하면 HTML 뿐만 아니라 자바스크립트, css, 추가 이미지 등 등 수 많은 자원이 함께 다운로드되는데 자원을 받을 때마다 연결 > 연결끊기 > 연결 을 반복하면 이 또한 시간이 지연된다. 
  • 현재는 HTTP 지속 연결(Persistent Connections)로 문제를 해결됐으며 HTTP/2, HTTP/3에서 더 많은 최적화가 되었다. 

 

 

HTTP 지속 연결(Persistent Connections)

연결과 종료의 반복으로 비효율적이게 되는데 HTTP 지속연결을 통해 보통 HTTP 1개를 받을 때까지 연결을 유지시킨다. HTTP/2, HTTP/3에서 최적화가 더 많이 되었는데 특히 HTTP/3에서는 UDP프로토콜을 통해 연결 속도 자체도 줄여졌다.

(좌) HTTP 초기 - 연결, 종료, 낭비 (우) HTTP 지속 연결(Persistent Connections)

 

 

Stateless 를 기억하기

서버 개발자들이 어려워하는 업무는 같은 시간에 딱 맞추어 발생하는 대용량 트래픽이다. 이런 경우에 최대한 무상태로 설계하는 것이 중요하다. 보통 이벤트 설계할 때 첫 페이지는 로그인도 필요없는 아무 상태도 없는 정적 Html을 두어 시간을 버는 식을 기본으로 한다. 

eg. 선착순 이벤트, 명절 KTX 예약, 학과 수업 등록 

eg. 저녁 6:00 선착순 1000명 치킨 할인 이벤트 -> 수만명 동시 요청 

 

 

 

Notes

얼마전에 네고왕에서 마녀공장 세일을 해 평소 애정하던 브랜드라 구매하려고 들어갔는데 서버가 터져서 며칠을 못들어갔다. 개발공부를 하니 서버 개발자분이 고생하실 것이 훤히 보여서 너무 안쓰럽고 감정이입이 되서 무서웠다... 아무튼 서버 개발자는 아니지만 나도 겪게 될 수 있는 일이기에 잘 기억해두는 것이 좋겠다. 

 


Reference 

강의 | [인프런] 모든 개발자를 위한 HTTP 웹 기본 지식 - 김영한 

출처: https://algoroot.tistory.com/108 [Algoroot's space:티스토리]

반응형