컴공 전공 공부
모든 개발자를 위한 HTTP 웹 기본 지식 - 섹션 3 본문
HTTP 기반 프로토콜
TCP: HTTP/1.1, HTTP/2
• UDP: HTTP/3
• 현재 HTTP/1.1 주로 사용
• HTTP/2, HTTP/3 도 점점 증가
예시)

HTTP 특징
- 클라이언트 서버 구조
- 무상태 프로토콜 , 비연결성
- HTTP 메시지
- 단순함, 확장 가능
HTTP의 구조 : 클라이언트 서버 구조
- 요청과 응답 구조
: 클라이언트는 서버에 요청을 보내고, 응답을 대기하면 서버가 요청에 대한 결과를 만들어서 응답
->클라이언트와 서버가 독립적으로 진화 가능
서버 : 비즈니스 로직과 데이터를 담음 ->복잡한 비즈니스 로직은 서버에서 처리
클라이언트: 사용성 UI 집중
HTTP의 특징 : 무상태 프로토콜 - 스테이스리스(상태를 유지하지 않는다)
- 서버가 클라이언트의 상태를 보존하지 않는다.
장점: 서버 확장성 높음 (스케일 아웃) - 무상태는 클라이언트 요청이 증가해도 응답 서버를 쉽게 바꿀 수 있어 무한한 서버 증설 가능하다.
STATEFUL : 서버가 클라이언트의 이전 상태를 보존하는 것


Stateless의 실무에서의 단점과 한계
- 모든 것을 무상태로 설계 할 수 있는 경우도 있고 없는 경우도 있다.
예를 들어 로그인이 필요 없는 단순한 서비스 소개 화면은 무상태로 설계 가능하지만 ,
로그인 기능을 구현하는 경우 로그인한 사용자의 경우 로그인 했다는 상태를 서버에 유지해야 되기 때문에 무상태로 구현하기 어렵다. 따라서 일반적으로 브라우저 쿠키와 서버 세션등을 사용해서 상태를 유지하도록 설계한다.
상태 유지의 경우 실무에서는 최소한만 사용하는 것이 좋다.
결론 - 무상태로 설계가 어려운 경우가 생겨 이때는 꼭 상태유지로 설계해야 한다.
또 다른 Stateless의 단점 : stateful과 비교해서 Stateless는 클라이언트가 추가 데이터 전송해야 한다.
비연결성
-TCP/IP 연결의 경우 - 연결을 유지하는 모델을 사용함

->연결을 유지하는 모델은 위의 그림과 같이 클라이어트 2와 3이 아무 일도 안 하고 있어도 계속 연결을 서버가 유지해야 하므로 서버 자원이 무의미하게 소모된다는 단점이 있다.

연결을 유지하지 않는 모델의 경우 자원을 현재 요청을 주고 받을 때만 연결을 하고 그 다음에는 끊어버려서 서버가 유지하는 자원을 최소한으로 줄인다. 그리고 나중에 클라이언트1이 또 다른 데이터가 필요하면 요청할 때 연결을 하고 이때 서버는 이에 대해 응답을 하게 된다.
정리)
비연결성
- HTTP는 기본이 연결을 유지하지 않는 모델
- 일반적으로 초 단위의 이하의 빠른 속도로 응답
- 1시간 동안 수천명이 서비스를 사용해도 실제 서버에서 동시에 처리하는 요청은 수십개 이하로 매우 작음
->서버 자원을 매우 효율적으로 사용할 수 있다.
'웹지식' 카테고리의 다른 글
| [모든 개발자를 위한 HTTP 웹 기본 지식] 04. HTTP 메서드 - HTTP API를 만들어보자 (0) | 2024.02.04 |
|---|---|
| 모든 개발자를 위한 HTTP 웹 기본 지식[인터넷 네트워크]- 섹션 1 (0) | 2024.02.01 |
| AWS?클라우드 컴퓨팅이 무엇인가요? (0) | 2023.09.16 |
| 서버란 무엇인가요? (0) | 2023.09.16 |