CS/네트워크

[네트워크] Stateful vs Stateless

Heeyeon Choi 2024. 10. 30. 13:56
728x90

Stateful(상태 유지)

  • 개념: Stateful은 서버가 클라이언트의 상태 정보를 지속적으로 유지하는 방식입니다. 클라이언트와 서버 간의 요청이 연속적인 상호작용을 통해 이루어지며, 서버는 이전 요청에 대한 정보를 기억합니다.
  • 특징: 각 요청에 대한 상태 정보를 저장하고, 클라이언트와의 상태가 유지된 상태에서 다음 요청을 처리합니다. 예를 들어, 사용자가 로그인한 상태를 유지하는 것이 Stateful 방식입니다.
  • 장점: 상태를 기억하기 때문에 지속적인 트랜잭션 처리가 필요한 작업에 유리합니다.
  • 단점: 서버가 각 클라이언트의 상태를 관리해야 하므로 서버 자원 소모가 증가하고, 확장성에 제약이 있습니다.

예시

  • FTP: 파일을 전송하는 동안 연결 상태를 유지합니다.
  • 온라인 게임: 사용자 세션을 유지하며, 진행 상황을 저장합니다.
  • 데이터베이스 연결: 하나의 트랜잭션이 끝날 때까지 연결 상태를 유지하여 요청을 처리합니다.

Stateless(상태 비유지)

  • 개념: Stateless는 서버가 클라이언트의 상태를 전혀 저장하지 않고, 모든 요청을 독립적으로 처리하는 방식입니다. 각 요청은 이전 요청과 관계없이 처리되며, 필요한 모든 정보는 요청 자체에 포함되어야 합니다.
  • 특징: 요청마다 독립적이기 때문에 서버는 각 요청에 대해 초기화된 상태로 작업을 수행하고, 처리 후에는 아무런 상태 정보를 저장하지 않습니다.
  • 장점: 서버가 클라이언트의 상태를 기억할 필요가 없으므로 확장성이 뛰어나고, 서버 자원 사용이 효율적입니다. 클라우드 환경에서 유리합니다.
  • 단점: 상태 정보를 매 요청에 포함해야 하므로, 상태 유지를 위해 추가적인 작업이 필요할 수 있습니다.

예시

  • HTTP 프로토콜: 기본적으로 Stateless로 동작합니다. 각 요청은 독립적이며, 상태를 유지하지 않습니다.
  • RESTful API: REST 아키텍처는 상태 비유지(Stateless) 원칙을 따릅니다. 클라이언트가 필요한 모든 정보를 요청에 포함해야 합니다.

Stateful vs Stateless 차이점

특징StatefulStateless

상태 관리 서버가 클라이언트 상태를 유지 서버가 클라이언트 상태를 유지하지 않음
요청 간 관계 이전 요청의 상태를 기억 요청 간 독립적
확장성 확장에 제약이 있을 수 있음 확장성 뛰어남
자원 소비 상태 유지로 인해 자원 소모가 많음 자원 소모가 적음
사용 예시 FTP, 온라인 게임, 데이터베이스 HTTP, RESTful API, 웹 애플리케이션 API

결론

  • Stateful 방식은 상태를 유지하는 게 중요한 트랜잭션이나 사용자 활동이 이어지는 애플리케이션에 적합합니다.
  • Stateless 방식은 독립적인 요청 처리로 확장성이 중요하거나 클라우드 기반의 애플리케이션에 적합하며, RESTful API나 웹 애플리케이션 API에 많이 사용됩니다.
728x90