Network

[Network] Stateful vs Stateless

쌈뽕코딩 2024. 11. 24. 19:00

StatefulStateless

애플리케이션 설계, 통신 프로토콜, 또는 컴퓨터 시스템에서 상태를 관리하는 방법에 따라 분류되는 개념이다.

 

Stateful

Stateful 시스템은 이전 요청 또는 작업의 상태를 저장하고, 이를 바탕으로 이후 요청을 처리한다.

 

특징

  • 클라이언트와 서버 간의 연결 지속성이 중요하다.
  • 상태 정보는 서버 또는 클라이언트에 저장된다.
  • 이전 요청과 다음 요청 간의 컨텍스트를 유지한다.
  • 요청 처리 속도는 상태를 참조해야 하므로 다소 느릴 수 있다.

 

장점

  • 사용자 경험이 부드럽고, 연속적인 작업을 쉽게 처리할 수 있다.
  • 상태를 유지하므로 복잡한 작업 처리에 유리하다.

단점

  • 서버의 리소스를 많이 소비한다(예: 메모리 사용 증가).
  • 서버가 중단되면 상태 정보가 유실될 수 있다.
  • 클라이언트와 서버 간의 세션 관리가 필요하다.

예시

  • FTP (File Transfer Protocol): 파일 전송 상태를 유지하며 중단된 파일 전송을 재개 가능.
  • 온라인 게임: 플레이어 상태, 위치, 진행 상황을 유지.
  • 은행 거래 시스템: 사용자의 세션에 따라 거래 상태를 추적.

Stateless

Stateless 시스템은 각 요청을 독립적으로 처리하며, 이전 요청의 상태를 저장하지 않는다.

 

 

특징

  • 클라이언트와 서버 간 연결 지속성이 필요하지 않다.
  • 요청 시 필요한 모든 정보를 포함해야 한다.
  • 서버는 각 요청을 완전히 별개로 간주한다.

장점

  • 서버 리소스를 적게 소비한다.
  • 확장성이 뛰어나며, 서버 간 로드 밸런싱이 용이하다.
  • 상태 관리에 따른 복잡성이 줄어든다.

단점

  • 상태를 클라이언트가 포함해야 하므로 요청이 커질 수 있다.
  • 상태를 유지하지 않으므로 연속된 작업을 처리하기 어려울 수 있다.

예시:

  • HTTP (HyperText Transfer Protocol): 웹 브라우저가 서버에 요청 시 항상 새로운 연결로 간주.
  • RESTful API: 각 요청에 필요한 데이터를 포함하여 독립적으로 처리.

Stateful vs Stateless

 

특징 Stateful Stateless
상태 저장 여부 상태 저장 (연속된 작업 가능) 상태 저장 안 함 (각 요청 독립적)
리소스 사용량 서버 리소스 사용량 많음 서버 리소스 사용량 적음
확장성 상대적으로 낮음 매우 높음
연결 지속 여부 연결 지속 필요 필요 없음
복잡성 세션 관리 등으로 복잡 설계 및 관리가 간단

 

 

사용 예시

  • Stateful: 지속적인 상태 관리가 필요한 경우 (게임, 채팅, 트랜잭션 시스템).
  • Stateless: 대규모 분산 시스템이나 클라이언트/서버 간 확장성과 독립성을 요구하는 경우 (RESTful 서비스, 웹 서버).