인프런 강의 학습/HTTP 기본 지식
HTTP 웹 기본 지식 7일차
현호s
2020. 12. 30. 20:36
반응형
# 모든 개발자를 위한 HTTP 웹 기본 지식 학습
# 비 연결성(connectionless)
## 연결을 유지하는 모델
- TCP/IP 연결의 경우 기본적으로 연결을 유지.
- 클라이언트1이 요청, 서버가 응답 하는 동안 TCP/IP 연결은 유지
- 클라이언트2가 요청, 서버가 응답하는 동안 기존에 클라이언트1과 서버의 연결이 유지됨
- 클라이언트3이 요청, 서버가 응답하는 동안 기존에 클라이언트1과 클라이언트2는 서버와 연결을 유지
- 이렇게 연결이 유지되면 지속적으로 서버의 자원이 소모된다.
- 클라이언트가 놀고있어도 서버는 계속 연결을 유지해야 하는 단점이 있다.
## 연결을 유지하지 않는 모델
- 클라이언트1이 요청, 서버가 응답 하면 서로 필요한 것만 주고 받고 TCP/IP의 연결 종료
- 클라이언트2가 요청, 서버가 응답 하면 연결 종료
- 클라이언트3이 요청, 서버가 응답 하면 연결 종료
- 이렇게 되면 서버 입장에서는 요청을 주고 받을때만 연결하고, 연결을 종료해서 서버가 유지하는 자원을 최소한 으로 줄일 수 있다. (연결 유지 X, 최소한의 자원 사용)
## 비 연결성
- HTTP는 기본적으로 연결을 유지하지 않는 모델
- 일반적으로 초 단위 이하의 빠른 속도로 응답
- 1시간 동안 수천명이 서비스를 사용해도 실제 서버에서 동시에 처리하는 요청은 수십개 이하로 매우 작다. ( 예) 웹 브라우저에서 계속 연속해서 검색 버튼을 누르지 않는다. )
- 서버 자원을 매우 효율적으로 사용할 수 있어서 좋다.
## 비 연결성 방식의 한계와 극복
- TCP/IP 연결을 새로 맺어야 한다. ( 3 way handshake 시간 추가 )
- 웹 브라우저로 사이트를 요청하면 HTML 뿐만 아니라 자바스크립트, CSS, 추가 이미지 등 수 많은 자원이 함께 다운로드된다.
- 지금은 HTTP 지속 연결(Persistent Connections)로 문제를 해결
- HTTP/2, HTTP/3에서 더 많이 최적화 되었다.
## 스테이스리스를 기억하자..
- 서버 개발자들이 어려워하는 업무는 아래와 같다.
정말 같은 시간에 딱 맞추어 발생하는 대용량 트래픽
예) 선착순 이벤트, 명절 KTX 예약, 학과 수업 등록
예) 저녁 6시 선착순 1000명 치킨 할인 이벤트 -> 수만명 동시 요청
- 이러한 어려운 점이 있지만, 최대한 스테이스리스하게 설계하는게 중요하다.
- 그러면, 대용량 트래픽이 와도 서버를 확 늘려서 대응할 수 있는 부분이 많아진다.
출처 : 인프런 모든 개발자를 위한 HTTP 웹 기본 지식
반응형