인프런 강의 학습/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 웹 기본 지식

반응형