HTTP 웹 지식

HTTP 기본2(Stateful, Stateless)

귀요미찰쓰 2022. 1. 6. 19:46
728x90
반응형

HTTP의 중요한 특징중 하나는 무상태 프로토콜을 지향한다는 것입니다.

 

무상태 프로토콜(Stateless)

- 서버가 클라이언트의 상태를 보존하지 않는다.

- 장점: 서버 확장성이 높음(스케일 아웃)

- 단점: 클라이언트가 추가 데이터 전송

 

 

Stateful, Stateless 차이점

Stateful-상태 유지

예시)

 

 

예제를 바꾸면 고객이 점원 A한테 가격을 물어보면 점원이 100만원이라고한다. 좀 이따가 다른 점원에다가 고객이 2개 구매하겠습니다라고하면 점원B일 경우 뭘 두개를 구매한다는건지 당황스러울 것이다. 그러고나서 고객은 점원 C한테 신용카드로 구매하겠다고 말한다. 그러면 점원 C는 뭔 제품을 신용카드로 구매할지 당황스러울 것이다.

 

 

한 마디로, Stateful는 이 서버가 이전 클라이언트 상태를 보존한다. 위에 해당하는 예시가 상태 유지입니다.

 

Stateful(상태 유지), Statless(무상태) 차이점

- Stateful(상태 유지): 중간에 다른 점원으로 바뀌면 안된다.(중간에 다른 점원으로 바뀔 때 상태 정보를 다른 점원에게 미리 알려줘야한다.)

 

 

- Stateless(무상태): 중간에 다른 점원으로 바뀌어도 된다.

             - 갑자기 고객이 증가해도 점원을 대거 투입할 수 있다.

             - 갑자기 클라이언트 요청이 증가해도 서버를 대거 투입할 수 있다.

- 무상태는 응답 서버를 쉽게 바꿀 수 있다. -> 무한한 서버 증설 가능

 

 

 

- 클라이언트 A가 요청을하고 그 요청이 서버1에 들어오면 응답을 보내준다.

 

그런데 만약 중간에 서버가 장애나면?

클라이언트는 요청을 처음부터 다시 해야한다.

 

 

 

하지만 Stateless는 다른다!

Stateless는 클라이언트가 요청할 때부터 필요한 데이터를 다 담아서 보낸다. 클라이언트가 만약 서버1에 노트북 2개를 구매한다고 요청할경우 서버는 상태를 보관하지 않고 필요한 응답만한다.

 

 

 그런데 이게 좋은 이유는 만약 서버가 갑자기 장애가 나면, 그러면 클라이언트 A는 중계서버가 2번에 던진다. 그러면 서버2가 응답을 보낸다.

 

 

무상태는 스케일 아웃이라고합니다. 서버를 늘리는게 스케일 아웃인데요. 예를 들자면, 이벤트 페이지에서 큰 이벤트면 백엔드에서 스케일 아웃으로 서버를 늘릴 수 있다.

 

 

 

Statless 실무 한계

- 모든 것을 무상태로 설계 할 수 있는 경우도 있고 없는 경우도 있다.

- 무상태 예) 로그인이 필요 없는 단순한 서비스 소개 화면

- 상태 유지 예) 로그인

- 로그인한 사용자의 경우 로그인했다는 상태를 서버에 유지

- 일반적으로 브라우저 쿠키와 서버 세션등을 사용해서 상태 유지

- 상태 유지는 최소한만 사용(꼭 필요한 경우에만 사용!)

 

단점: 데이터를 너무 많이 보낸다

반응형

 

 

 

반응형

'HTTP 웹 지식' 카테고리의 다른 글

HTTP 메서드1(HTTP API를 만들어보자)  (0) 2022.01.07
HTTP 기본3(비 연결성)  (0) 2022.01.07
HTTP 기본1(모든 것이 HTTP, 클라이언트 서버 구조)  (0) 2022.01.06
웹 브라우저 요청 흐름  (0) 2022.01.06
URI  (0) 2022.01.06