[네트워크] 무상태에 대한 나름의 이해

2023. 11. 2. 21:38네트워크

무상태(Stateless), 상태유지(Stateful)의 차이는 다음과 같다.

 

상태유지는 서버가 상태를 유지한다고 가정하는 것이다.

그러면 클라이언트는 서버가 지금까지의 상태를 알고 있다는 전제하에 요청을 할 수 있다.

예를 들어, 소비자가 노트북이 얼마인지 물어본다. 그러면 점원은 100만원이라고 답한다. 

그러면 소비자가 점원이 이를 안다는 가정하에 2개 주세요라고 하면 점원은 노트북 2개인지 알 수 있다.

하지만 그 사이에 점원이 바뀌게 된다면 어떻게 될까? 소비자가 2개 주세요라고 하면 점원은 무엇을 2개 달라는 것인지 알지 못한다.

 

무상태는 서버가 상태를 유지않는다고 가정하는 것이다.

그러면 클라이언트는 서버가 지금까지의 상태를 모른다는 전제하에 필요한 모든 정보를 포함해서 요청을 한다.

예를 들어, 소비자가 노트북이 얼마인지 물어본다. 그러면 점원은 100만원이라고 답한다.

이번에는 소비자가 점원이 이를 모른다는 가정하에 노트북 2개 주세요라고 한다. 그러면 점원은 노트북 2개 달라는 것인지 알 수 있다.

여기서 점원이 바뀐다. 이때도 소비자는 점원이 모른다는 가정하에 노트북을 2개 주세요하기 때문에 새로운 점원은 응답을 할 수 있다.

 

무상태를 사용하면 서버를 무한정으로 늘릴 수 있다.  왜냐하면 클라이언트 측에서 필요한 정보를 요청에 모두 실어주기 때문이다. 따라서 A라는 서버가 커넥션이 있다고 끊어져서 B 서버에 새로 할당받는다 하더라도 요청과 응답에 아무런 장애가 없는 것이다.

이렇게 서버를 늘리는 것을 스케일 아웃, 수평 확장이라고 한다.

단점으로는 요청에 필요한 정보가 많아진다는 것이다.

 

따라서 웬만하면 무상태를 유지하는 것이 좋다.

하지만 로그인과 같이 세션을 유지해야하는 경우에는 상태를 유지해야 한다.

이러한 경우만 제외하고는 무상태를 사용한다.

 

Reference


https://www.inflearn.com/course/lecture?courseSlug=http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC&unitId=61361

 

학습 페이지

 

www.inflearn.com