Development(개발)/개발 Core

stateful, stateless 구분짓기

버터젤리 2025. 7. 13. 14:56

 

✅ 명확한 정의를 내리고 기억하자!

Stateful (상태 저장) vs Stateless (상태 비저장)

 

  stateful stateless
정의 이전 요청에서의 상태를 기억하고 다음 요청에 반영함 이전 요청과 관계없이 모든 요청을 독립적으로 처리함
특징 세션/컨텍스트를 유지함 요청마다 필요한 모든 정보를 포함해야 함
예시 로그인 후 세션 유지, DB 연결 세션, TCP REST API, DNS, HTTP, UDP

 

 

이전 요청에 대한 정보를 들고있는지 아닌지에 따른 구분.

관념적인 개념이고 때문에 여러 상황에서 응용되어 사용됨. -> 반드시 개념적의미를 구분지어 알고 있어야한다.

 

🛠 실무 적용 예시

✅ 1. 웹 애플리케이션

  • Stateful: 로그인 세션을 서버에서 저장하고, 이후 요청마다 사용자 정보 유지 (예: JSP + Tomcat 세션 기반)
  • Stateless: JWT 기반 인증처럼 클라이언트가 매 요청에 토큰을 보내 서버는 상태를 저장하지 않음 (예: REST API)

✅ 2. 네트워크 프로토콜

  • Stateful: TCP
    → 연결을 설정하고 패킷의 순서, 재전송 등을 관리하며 상태를 유지함  -- 채팅, 요청/응답
  • Stateless: UDP
    → 연결 없이 메시지를 전송하며, 전달 여부나 순서를 관리하지 않음

✅ 3. 클라우드 인프라

  • Stateful 서비스: 데이터베이스, 캐시, 세션 서버 등
    → VM이 재시작되면 상태 복구 필요
  • Stateless 서비스: 웹 프론트엔드 서버, API 서버 등
    → 서버 교체나 재배포에도 영향을 최소화 (Kubernetes Pod 교체 등)