HTTP (HyperText Transfer Protocol)
" 우리는 HTTP 메시지에 모든 것을 전송한다 "
1. HTTP란 뭘까?
이 HTTP는 우리가 백/프론트 (클라- 서버) 사이에서 자원을 교환하기 위한 TCP./IP 기반의 통신 프로토콜이다
(프로토콜은 여기서 상호 간 정의한 규칙이다)
2. HTTP의 특징은?
- 상태가 없는 프로토콜 (stateless), 비 연결성
- HTTP 메시지
- 단순함, 확장 가능
- 클라이언트 서버 구조
클라이언트 서버 구조 (독립적인 이점이 존재함)
클라이언트는 서버에 요청을 보내고, 응답을 대기한다. 그럼 서버는 이 요청에 대한 결과를 만들어서 응답한다.
(Request, Response 구조)
이렇게 클라 단과 서버 단을 분리하면 (옛날엔 이 개념들이 분리되어 있지 않아서 하나의 덩어리였지만) 이점이 많음.
클라(UI, 사용성 등에 집중) / 서버(데이터 관련 로직 관리에 집중) 이렇게 각 파트에 맞춰서 집중하면 개발에 대한 효율성이 굉장히 증가함 (각 파트에 맞춰서만 고민하면 되니까)
상태가 없는 프로토콜(Stateless) (중요함 -> 서버개발자들이 어려워하는 업무 ex) 선착순 이벤트 )
서버사 클라이언트의 상태를 보존하지 않는다.
이 말의 뜻은 데이터의 송 수신의 요청이 서로 독립적으로 관리된다.(데이터 간 요청의 순서가 서로 연관이 없다)
만약 상태가 유지된다면 중간에 다른 점원으로 교체가 된다면 그 상태 정보를 다른 점원에게 미리 알려줘야 하지만, 무상태에서는 점원이 바뀌어도 상관없다. 그래서 만약에 클라이언트 단에서 많은 요청이 오면 일명 점원을 많이 투입할 수 있으며, 클라단에서도 요청이 증가하면 서버를 많이 투입할 수 있다는 장점이 있다. (무한한 서버 증설 가능)
또 서버의 상태가 있으면 중간에 에러가 발생하면 다시 해야함.
but 무상태는 중간에 장애가 나면 기존에 있는 서버가 아닌 다른 서버로 요청을 던져버림 (중계서버) =>> 확장에 유리함
이 서버의 상태에 관해서는 무조건으로 무상태가 좋은 것이 아닌 필요에 의해서 설계가 되어야 한다.
(상태 유지는 최소한만 사용할 수 있도록 해야함)
비 연결성
계속 연결을 하고 있으면 당연히 자원이 소모될 수 밖에 없음. 그래서 요청에 대한 응답시에 연결만 하며, 이로서 최소한의 자원만을 사용할 수 있다. (최소한의 자원으로 연결이 가능함)
기본적으로 HTTP는 연결을 유지하지 않는 모델이다. 그래서 초 단위 이하의 빠른 속도로 응답이 가능하다. 때문에 서버 자원을 매우 효율적으로 사용할 수 있다. (1시간동안 많은 사람들이 서비스를 사용해도 실제 서버에서 동시에 처리하는 요청은 수십개 이하로 매우 작다. -> 웹에서 연속해서 검색 버튼을 누르지 않으니까...)
HTTP는 지속 연결(Persistence Connections)을 사용
요청-응답 순서 (요청에 따라 유지하는 특성)
HTTP 메시지
'기술면접 관련 및 참고하기' 카테고리의 다른 글
왜 Git의 Commit message는 중요할까?, 좋은 커밋 메시지란? (0) | 2022.12.08 |
---|---|
객체 지향의 SOLID 원칙 (1) | 2022.11.28 |
운영체제(Operating System) 프로세스(Process)와 쓰레드(Thread) - 우테코 Tech 내용 추가 (2022.12.02) (1) | 2022.11.19 |
자바는 어떻게 메모리를 사용할까요? (자바의 메모리 사용) (0) | 2022.11.17 |
크롤링(Crawling)과 스크래핑(Scraping)?? (0) | 2022.03.12 |