본문 바로가기
Etc/HTTP

HTTP 기본 - 비 연결성(connectionless)

by 달의 조각 2022. 4. 1.
이 글은 김영한 님의 모든 개발자를 위한 HTTP 웹 기본 지식(https://inf.run/2P6x) 강의를 수강하며 정리한 글입니다.

 

TCP/IP HTTP
연결 유지 특성 비 연결성
클라이언트1가 서버에 연결되어 응답을 받은 후,
서버가 클라이언트2와 3이 통신을 진행해도
모든 연결이 유지된다
클라이언트와 서버의 통신이 끝나면
바로 연결을 종료하도록 한다
서버의 자원이 소모 서버가 유지하는 자원을 최소화(효율성)

 


 

비 연결성

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

 

1. 한계와 극복

• TCP/IP 연결을 새로 맺어야 한다: 3 way handshake 시간 추가
• 웹 브라우저로 사이트를 요청하면 HTML 뿐만 아니라 자바스크립트, css 등등 많은 자원이 함께 다운로드 되는데,
   이를 각각의 요청으로 인식한다 - 연결 종료 낭비


• 지금은 HTTP 지속 연결(Persistent Connections)로 문제 해결
    모든 요청, 응답이 마무리될 때까지 연결을 유지한다

• HTTP/2, HTTP/3에서 더 많은 최적화
      HTTP/3에서는 UDP를 사용하면서 연결 속도 자체도 단축시켰다

 

2. 스테이스리스를 기억하자 - 서버 개발자들이 어려워하는 업무

• 같은 시간에 딱 맞추어 발생하는 대용량 트래픽
    예) 선착순 이벤트, 명절 KTX 예약, 학과 수업 등록
    예) 저녁 6:00 선착순 1000명 치킨 할인 이벤트 -> 수만 명 동시 요청

최대한 스테이리스하게 설계한다 → 서버를 증축하여 대응할 수 있는 부분들이 많아진다

댓글