HTTP의 중요한 특징 중 하나로는 Stateless(무상태) 프로토콜을 지향한다는 점이다.
이 Stateless를 알기 전에 반대되는 Stateful(상태유지)를 알아야 한다.
Stateful : 상태유지 프로토콜 방식
Stateful은 서버가 클라이언트의 상태를 보존해주는 프로토콜 방식이다.
Stateful(상태유지) 같은 경우에는 연결이 유지가 된다. 예시로 들면
웹사이트의 로그인 기능같은 다른 페이지로 이동했을 경우에도 로그인이 유지가된다.
이건 계속 연결이 되어있는 경우이다. 즉, 상태유지라고 생각하면 된다. 상태유지가 되야지
물건을 구매했을 때 해당 로그인된 정보를 토대로 결제를 하기 때문이다.
즉 서버에서 회원의 정보를 가지고 상태를 유지하기 때문에 지속적인 연결이 되어있는 상태이다.
Stateless : 무상태 프로토콜 방식
Stateless는 서버가 클라이언트의 상태를 보존하지 않는 프로토콜 방식이다.
즉, 연결을 지속적으로 하지 않고 필요한 데이터만 주고 연결을 끊어버린다는 의미이다.
반면에 Stateless(무상태)의 경우에는 데이터를 회원이 가지고 있다가 보내는 방식이다. 즉, 로그인 같은
정보를 클라이언트의 브라우저의 쿠키를 통해 저장을 해놓는다던지 방식을 이용해 클라이언트가 즉각적으로
필요할때 자기 정보를 같이 넘김으로써 서버는 받고 요청에 필요한 데이터만 응답하고 연결을 끊으면
해당 서버는 다른 요청에도 빠르게 받을 수 있으며 상태를 가지고 있지 않기때문에 유연하게 다른 서버에 요청을
보내도 받을 수 있게 된다. 정리하면 서버가 클라이언트의 상태를 보존하지 않는다는 말이 이런말이다.
이렇게 Stateless(무상태)의 장점은 갑자기 클라이언트의 요청이 증가해도 서버를 대거
투입이 가능하며 응답서버에 대한 요청을 다른 서버에서도 똑같이 받을 수 있어서 서버의
증설이 쉽고 스케일 아웃이라고 수평 확장에 매우 유리한 조건이 된다.
하지만 Stateless에도 한계가 존재한다.
모든 것을 무상태로 설계 할 수 있는 경우도 있고 없는 경우도 있다.
단순한 소개페이지일경우에는 상태를 유지할 필요가 없기에 무상태로 설계하기가 쉬움
상태를 유지해야하는경우 => 로그인 서버에서 유지를 해줘야한다.
일반적으로는 브라우저의 쿠키와 서버의 세션을 잘 조합해서 상태를 유지하는 기능을 사용하는게 가능하다.
이런식으로 어쩔수없이 상태유지가 필요해지는 경우가있다. 하지만 상태유지는 최소한으로 사용을 해줘야한다.
(꼭 필요한 경우에만 어쩔수없이 사용해야한다.)
Stateless에는 단점이 하나 더 존재한다.
데이터를 너무 많이 보낸다는 점이다.
클라이언트가 데이터를 보낼때 앞에서 봤듯이 Stateless는 보내고 연결을 끊는 방식이라 앞에서 내가 선택한
정보들을 서버에서 저장을 해주지않음으로 지속적으로 클라이언트가 가지고 있다가 보내기때문에 중복되는
데이터또한 많이 존재하게 된다.( 음 이부분은 설명이 좀 어려운거같군.. )
'웹 관련(HTTP,WAS)' 카테고리의 다른 글
Git & Git-hub (0) | 2024.04.30 |
---|---|
HTTP (2) | 2024.04.26 |