본문 바로가기

Network

[Network] Stateful vs Stateless

StatefulStateless

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

 

Stateful

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

 

특징

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

 

장점

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

단점

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

예시

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

Stateless

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

 

 

특징

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

장점

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

단점

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

예시:

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

Stateful vs Stateless

 

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

 

 

사용 예시

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

 

 

'Network' 카테고리의 다른 글

[Network] HTTP와 HTTPS  (0) 2024.11.27
[Network] HTTP 버전별 특징  (0) 2024.11.24
[Network] 프로토콜과 OSI 7 Layer  (0) 2024.11.24
[Network] 멱등성이란?  (0) 2024.11.24
REST API 란?  (0) 2024.10.21