이 글은 김영한 님의 모든 개발자를 위한 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명 치킨 할인 이벤트 -> 수만 명 동시 요청
최대한 스테이리스하게 설계한다 → 서버를 증축하여 대응할 수 있는 부분들이 많아진다
'Etc > CS' 카테고리의 다른 글
[HTTP] 메서드 - HTTP API를 만들어 보자 (0) | 2022.04.01 |
---|---|
[HTTP] 기본 - HTTP 메시지 (0) | 2022.04.01 |
[HTTP] 기본 - 모든 것이 HTTP (0) | 2022.03.31 |
[HTTP] URI와 웹 브라우저 요청 흐름 - 웹 브라우저 요청 흐름 (0) | 2022.03.31 |
[HTTP] URI와 웹 브라우저 요청 흐름 - URI (0) | 2022.03.31 |
댓글