Stateful과 Stateless

: 클라이언트와 서버 간 통신 상태(state) 유지 여부에 따라 나뉘는 특성이다.

 

 

Stateful(상태 유지)

: 서버가 클라이언트의 상태를 유지하는 것을 의미한다.

- 클라이언트와 서버 간에 송수신을 하며 단계별 과정을 진행하는 데 있어 서버가 클라이언트가 이전 단계에서 제공한 값을 저장하고 다음 단계에서도 저장한 상태

 

- 예시

: 한 번 로그인을 하면 페이지를 이동 해도 로그인이 풀리지 않고 유지된다.

 

- 장점

: 정보를 어딘가에 저장하고 통신할 때마다 읽기 때문에 정보를 기억할 수 있다.

     - 브라우저 쿠기, 서버의 세션 메모리 등에 저장되어 상태 유지

 

- 단점

1) 같은 서버 유지 필요

     - 해당 서버에 문제가 발생할 시 문제 발생(서버 미동작 원인: 시스템 에러, 비즈니스 로직 문제, 리소스 부족 문제 등...)

     - 다른 서버가 역할을 이어받아도 새 서버로 데이터가 전달된 것이 아니라면 정보가 없기 때문에 문제가 발생한다.

2) 요청 트래픽이 몰리면 상태 유지에 리소스가 많이 소모돼 서버가 종료되거나 다음 요청 처리가 느려지는 문제가 발생한다.

 

 

Stateless(무상태)

: 서버가 클라이언트의 상태를 유지하는 않는 것을 의미한다.

- 서버는 단순히 요청에 대한 응답을 보내는 역할만 수행한다.

- 상태관리는 클라이언트의 책임이다.

 

- 장점

1) 같은 서버 유지 불필요

     - 상태를 보관하지 않기 때문에 해당 서버에 문제가 생겨 다른 서버가 이어받아도 응답하는 데 문제가 발생하지 않는다.

2) 대량 트래픽 발생에도 서버 확장(스케일 아웃 수평 확장성이 높음)으로 대처를 쉽게 할 수 있다.

 

- 단점

1) 클라이언트의 요청에 많은 데이터 소모

     - 매 요청마다 자신의 부가정보를 줘야 한다.

 

- 한계 및 극복

웹 애플리케이션 만들 시 서버 확장성을 고려해 최대한 stateless하게 만들어야 한다.

     - 문제: 로그인 같은 상태 유지가 필요한 경우가 발생한다.

     - 극복: 상태 유지를 최소화 시키되 쿠키, 세션, 토큰 등을 활용하여 한계를 극복한다.

'CS > Network' 카테고리의 다른 글

프로토콜과 계층 구조(OSI 7계층 모델)  (0) 2025.05.05
Connection, Connectionless, HTTP 지속 연결  (0) 2025.05.02
서버 성능 향상  (0) 2025.05.02
JSON  (1) 2025.05.02
DNS, URI(URI, URL)  (1) 2025.05.02

+ Recent posts