Stateless와 Stateful이 무엇인가?

민준·2025년 1월 5일

What is Stateful and Stateless?

네트워크 및 시스템 설계에서 요청과 응답을 처리하는 상태관리의 두가지 주요 방식을 뜻함. (클라이언트와 서버간의 연결상태를 의미)


1. Stateful(상태성)

서버가 이전 요청과 현재 요청 간의 연결 상태를 기억하는 상태를 의미.
요청을 보낸 클라이언트가 누구인지 구별할 수 있어야 상태성을 유지할 수 있음.

Stateful의 특징

서버가 특정 유저(웹 브라우저)와 관련된 정보를 기억하기 때문에, 요청마다 다른 작업이나 결과(로그인한 유저와 비 로그인 유저의 다른화면)를 반환할 수 있음. 사용자 경험이 일관됨. 하지만 서버 자원의 과부하와 확장성 문제를 일으킴.


2. Stateless(무상태성)

  • 웹 서버 입장에서 매 요청이 어떤 클라이언트(웹브라우저)로 부터 왔는지 알 수 없는 상태를 의미.
  • HTTP는 Stateless 프로토콜이기 때문에 서버는 요청 간의 상태를 기억하지 않음.

Stateless 특징

  • 서버는 클라이언트에 대한 세션 정보를 저장하지 않으므로 최소한의 자원으로 서비스 유지 가능.
  • 대규모 트래픽(수억 명의 동시 사용자)을 효과적으로 처리할 수 있어 확장성(Scalabillty), 캐싱(Cache), 관리 효율성이 높아짐.

Stateless의 한계와 그로 인한 클라이언트의 역할

  • 서버는 기본적으로 클라이언트에 특정한(specific) 데이터를 유지하지 않기 때문에, 클라이언트가 세션 상태를 직접 저장하고 관리해야함.

    • 예: 인증토큰(authentication tokens) 또는 자격 증명(credentials)을 클라이언트 측에서 보관.
  • 클라이언트는 요청할 때마다 필요한 상태 정보를 서버에 전달해야 하며, 이는 JWT(JSON Web Token)와 같은 방식으로 구현

    • 클라이언트가 상태를 관리하는 구조 덕분에 JWT는 Stateless 인증 방식으로 간주.

Stateless와 Stateful의 배경

  • Stateless: 간단하고 독립적인 요청을 처리하는 데 적합.
  • Stateful: 연속적인 상태를 유지하면서 사용자 경험이나 데이터를 관리하는 데 적합.

1. 초기 컴퓨팅 시스템: Stateful 중심

  • 초기 컴퓨팅 환경에서는 서버가 모든 상태를 유지(Stateful)하는 방식이 일반적
  • 사용자가 로그인하면, 서버는 지속적으로 사용자의 상태를 유지하면서 작업을 처리
  • 사용자 경험이 일관됨, 서버 자원의 과부하와 확장성 문제가 있음.

2. 인터넷과 웹의 등장: Stateless 필요성

  • 웹(WWW)이 등장하면서 HTTP라는 프로토콜이 설계

    • HTTP의 특징: 요청(Request) 간 독립성을 보장하기 위해 Stateless 방식으로 설계.

3. 현대 시스템: 두 방식의 결합

Stateless와 Stateful은 각각의 한계를 보완하며 함께 사용됩니다.

Stateless가 기본: 요청 간 독립성을 유지하면서 확장성을 보장.
Stateful을 보완적으로 사용: 사용자 경험을 개선하고 데이터 일관성을 유지.

0개의 댓글