http
stateless
stateful
client / server architecture 의 server side architecture 설계시 ...
design concept 으로써 stateful 과 stateless 는 다음과 같이 정의될 수 있다.
- stateful : server side 에 client와 server의 연속된 동작 상태정보를 저장하는 형태
- stateless : server side 에 client와 server의 연속된 동작 상태정보를 저장하지 않는 형태
http 는 자체적으로 상태정보를 저장 및 유지할 수 없고 application 구현상에서 상태정보를 유지관리해야한다.
따라서 http 그 자체는 stateless 한 프로토콜로 정의할 수 있다.
결국 sticky session 을 사용해야하는 architecture는 stateful 하다고 이야기 할 수 있다.
이 구현에서 sessionid에 대한 key/value 는 web application framework 상에서 구현된다.
http 의 예에 있어서 각각의 client 요청은 서로 완전히 독립적이고 이전 요청에 의존적이지 않다.
따라서 각각의 요청은 server 가 처리할 수 있도록 하기 위한 모든 정보를 제공해야 한다.
stateless 서비스에 있어서 가용성을 제공하기 위해서는 여분의 인스턴스를 추가하고 LB등으로 묶는 것만으로 충분하다.
stateful 서비스에 있어서 가용성을 제공하기 위해서는 여분의 인스턴스와 LB 구성만으로는 충분하지 않고
active/active, active/passive 등 구성방식에 따라 상태정보를 관리하기 위한 구현이 복잡하다.
함수적으로 표현하면 stateless 는 같은 argument 에 대해 항상 같은 결과를 반환하지만
stateful에서는 같은 argument에 대해서 다른 값을 반환한다. 왜냐하면 이전 값을 가지고 있기 때문에.
REST architecture 는 stateless 하면서 동시에 어떤 client 관련정보도 서버에 저장하지 않는 방식을 사용한다.
이것이 엄밀한 의미의 stateless 이다. 이런 방식으로 client 가 server 요청시마다 상태정보를 전송하여
서버의 부하를 경감하고 scale-out 을 가능하게 한다. 즉 client 가 상태정보를 모두 관리할 책임을 진다.
stateless architecture 의 장점은 다음과 같다.
- caching 이 용이하다.
- load balancing 이 용이하다.
- scale-out 이 용이하다.
stateless 의 단점은 매 요청시마다 상태정보를 전달해야하기 때문에 그 만큼의 네트워크 리소스를 소모해야하고 서버쪽에서는
이 정보를 사전 처리하기 위한 작업이 필요하다는 것이다.
출처 : http://egloos.zum.com/outspace/v/3124886
http는 기본적으로 stateless라서 session을 사용
socket은 stateful
'기타' 카테고리의 다른 글
정보처리 필기_전자계산기 구조_04강_자료의 외부적 표현 (0) | 2019.07.24 |
---|---|
정보처리 필기_전자계산기 구조_03강_진법과 보수 ( 인강 메모 ) (0) | 2019.07.23 |
정보처리 필기_전자계산기 구조_02 보조기억장치 메모 (0) | 2019.07.23 |
캐시[Cache]란? (0) | 2019.07.10 |
[네트워크] HTTP 헤더 구조 (0) | 2019.07.01 |