CS
[CS] Stateful vs. Stateless
pearhyunjin
2024. 3. 18. 20:24
Stateful 과 Stateless
Client와 Server간의 네트워크 통신이 어떻게 이루어지는지에 대한 개념
Session
Stateful, Stateless 개념을 이해를 위한 세션 상태와 세션 정보에 대한 개념
- 세션 상태
클라이언트와 서버간 통신 인증이 된 상태를 의미하며, 데이터 송수신이 가능 - 세션 정보
한 세션 내에서 클라이언트가 서버에 정송할 데이터 정보를 의미하며,
서버는 세션 유지 시간이 지나거나 모든 데이터를 수신할 때까지 세션 상태를 유지한다.
Stateful Service : 상태 유지
Server와 Client 간 세션(요청과 응답 과정)의 'State(상태)'에 기반해 Client에게 응답을 보내기 위해
서버가 클라이언트의 상태를 보존함. 즉, 세션 간의 정보와 상태가 지속적으로 추적 가능하다.
- 서버는 각 세션별로 어떤 state 정보를 취득할 지 사전에 정의 가능
- state 정보에 따라 어떤 액션을 취할 지에 대한 전체적인 프로세스 설계 가능
- 세션이 중단되어도 이전의 컨텍스트와 내역 유지, 재개 가능
- Protocol
TCP의 3-way handshaking 과정 / 파일 전송 프로토콜(FTP) - 아키텍처
대체로 로그인이 필요한 서비스(이메일, 온라인뱅킹 등)를 제공하는 경우 - 장점
- 준수한 요청 처리 성능
- 이전 컨택스트 추적이 가능해 메시지 전달이 효율적 - 단점
- 좋지 않은 확장성
- 서버에 State 관리를 위한 추가적인 저장 공간 필요
- 서버가 많은 양의 클라이언트 데이터를 짊어져야 함
- 기존에 요청을 처리하던 특정 서버만이 후속 요청에 대응 가능
Stateless Service : 무상태
Server와 Client 간의 요청/응답 기록을 남겨두지 않는다.
동일 클라이언트를 상대하더라도 서버는 매번 처음 본 클라이언트처럼 행동하며 클라이언트의 요청이 이전과는 다른 서버에게 전달될 수 있다. 만약 세션 정보를 기록해야하는 상황이라면, 서버보다는 클라이언트 쪽에 캐시 형태로 정보를 보관한다.
때문에 클라이언트가 무언가 요청하고자 할 때, 하나의 요청 메시지에 필요한 모든 내용을 담아야 한다.
- Protocol
HTTP, UDP, DNS - 아키텍쳐
홈페이지 등 불특정 다수에게 단순한 HTML이나 리소스 등을 제공해야 하는 경우 사용 - 장점
- 서버 장애시 유연한 대응
- 서버가 부담하는 리소스 규모 감소
- 서버 규모 확장 / 축소가 쉬움 - 단점
- 클라이언트가 송신해야하는 데이터 양이 늘어나기 때문에 네트워크 퍼포먼스가 다소 떨어질 수 있음
* https://5equal0.tistory.com/entry/StatefulStateless-Stateful-vs-Stateless-서비스와-HTTP-및-REST