백엔드

[Web] HTTP 와 Method #1

bumheeeee 2024. 10. 16. 17:29

#서론

우리가 한 번은 컴퓨터를 켜면 http와 www(w3)를 봤던 기억이 있을 거다.

 

익숙하지만 웹 페이지를 열기 위함에 있어서 중요한 프로토콜이다.

 

모든 개발자라면 무조건 한 번은 알고 가야 하는 지식이므로 백엔드를 공부를 하면서 정리를 했다.

 


 

HTTP란?

 

HyperText Transfer Protocol 줄임말로 하나하나 풀어서 설명하면 하이퍼텍스트를 변환하는 프로토콜이라는 직역을 가진다.

 

맞다.

문서와 문서를 통한 링크를 하이퍼 텍스트 문서를 통해서 연결시키는 프로토콜로 웹 페이지를 로드하는 데 사용한다.

또 서버와 서버를 통해 데이터를 주거나 받을 때도 사용한다.

 

프로토콜은 컴퓨터와 어떤 여러 전자 기기가 통신을 보다 원활하게 해주는 약속 같은 것으로 시간과 데이터 형식의 집합체라고도 보면 된다.

 

그럼 HTTP의 특징은 무엇일까?

 

바로 Stateless(무상태성)과 Connectionless(비연결성)을 가진다.

 

그럼 먼저 Stateless(무상태성)에 대해서 알아보겠다.

 

 


 

 

무상태성 (Stateless)

 

무상태일 때 클라이언트에서 요청은 서버 아무 곳에서 호출을 해도 된다. 즉 서버는 이런 요청을 보존하지 않는다.

 

 

무슨 말이냐면 만약 중간에 서버가 장애가 난다고 하자. 

 

 

서버 3개 중에 한 개가 장애가 나면 이런 요청은 다른 서버에서 바로 응답을 하여 중계서버로 넘어간다. 

 

즉 서버에서 장애가 일어나도 클라이언트에서 필요한 정보들을 이미 가지고 있기에 다른 서버로 요청이 가능하다.

 

하지만 단점도 존재하는데 이렇게 클라이언트에서 필요한 정보가 극심하게 많을 경우 서버를 나눠서 보내는 게 아니라 한 곳에 보내기에 데이터를 너무 많이 보낸다는 단점이 존재한다.

 

 

 

 

상태 유지성(Stateful)

 

상태 유지가 가지는 특징은 클라이언트 요청이 어떤 한 서버에서 계속 유지가 되어야 한다.

 

그래서 보통 한 서버를 들어가서 최소한의 데이터를 가지고 오래 유지를 시키는 곳에서 사용을 한다.

 

예를 들면 우리가 아이디를 로그인하고 그 상태를 유지해서 작업을 처리할 때 주로 사용한다.

 

 

 

 


 

 

 

비연결성 (Connectionless)과 연결성

 

 

- 연결을 유지하는 모델 

tcp(transmission Control Protocol) 

직역을 하면 전송 제어 프로토콜

네트워크의 정보 전달을 위해 각각의 호스트를 연결하는 것하고
데이터들을 상호작용하게 해주는 포로토콜이다.
 
ip(Internet Protocol) 

직역을 하면 인터넷 프로토콜.

한 번은 ip 주소가 어떻게 되냐? ip 주소라는 말을 들어본 적이 있다.


ip는 인터넷과 연결되는 네트워크에서 장치들을 서로 구별할 수 있게 해주는
프로토콜이다. 

 

그렇게 이런 정보의 주소를 묻는 방식이 탄생이 된다.

 

돌아와 본론

 

 

연결을 유지하는 모델은 여러 클라이언트에서 서버로 응답을 요청하면 그 요청이 각각의 클라이언트 대상으로 연결을 유지하고 그 상태를 저장한다.

하지만 단점으로 클라이언트가 요청을 보내지 않아도 연결을 유지하므로
서버의 자원이 계속 소모된다. 

그렇게 많은 클라이언트가 있을 때는 서버의 자원이 무수히 많이 드는 치명적 단점을 가진다.

 


비연결성(Connectionless)

 

비연결성을 보여주는 가장 기초가 http이다.

비연결성은 클라이언트가 요청할 때만 서버가 응답을 보내고 연결을 끊어버리기 때문에
서버에서 사용하는 자원을 최소한으로 가질 수 있다.

 

 

- 한계

하지만 한계가 존재한다.

트래픽이 굉장히 많고 대규모 서비스인 경우에 한계를 띤다.

요청할 때마다 연결하고 종료하고를 반복하고 웹사이트에서 요청을 시도할 때 필요한
프런트 자원과 이미지들이 다운로드 및 사용되는데 이런 자원들을 매번 연결하고 종료를
하는 과정을 반복한다는 것이다.

 

- 해결

 

그럼 이런 한계를 어떻게 해결했을까?


이를 해결하기 위해 만들어진 방법이 바로 지속 연결이다.

연결을 유지하면서 종료하기 전까지 요청에 대한 응답을 하고 종료를 시키는 방식이다.

 

 

 


 

1장 글을 마치며...

 

이번 http와 method 1장은 http가 무엇인지 어떤 특징을 가지고 있는지 공부하고 작성했다.

 

백엔드 개발자가 되기 위해서 중요한 것은 개발 능력 및 기획이 심플하게 와닿는다.

 

하지만 또 중요한 것은 사람들과 원활하게 소통할 수 있어야 하고 CS 지식도 많이 쌓아야 한다는 것을 깨닫게 되었다.

 

출처 : 백엔드 개발자의 역할과 역량 5가지 - 한빛출판네트워크 (hanbit.co.kr)

 

그렇게 웹 지식뿐만이 아닌 HW/SW의 지식도 쌓아야 된다고 알게 되었다.