VS시리즈 - Stateful vs Stateless

김현교·2023년 12월 13일
0

VS시리즈

목록 보기
3/12
post-thumbnail

Stateful (상태유지)

  • 상태를 유지하고 저장
  • 시스템이 과거의 상태를 기억하고 이를 기반으로 다음 동작을 수행할 수 있음
  • 시스템이 클라이언트의 데이터를 유지하고, 클라이언트와의 상호작용 동안에도 해당 데이터를 사용
  • 세션 상태, 로그인 정보, 작업 진행 상태 등을 유지하는 데 주로 활용
  • 상태 정보를 저장하기 위해 메모리가 필요
  • 서버의 무리가 가고 플랫폼의 다양화가 불가능
  • Stateless의 모든 기능은 Stateful 방식으로도 구현이 가능
  • 예시 : 전통적인 웹 애플리케이션에서의 서버 측 세션 관리, 데이터베이스 시스템 등

Stateless (무상태)

  • 클라이언트의 상태를 저장하지 않고, 각 요청을 독립적으로 처리
  • 각각의 요청은 이전 요청과 무관하며, 시스템은 요청이 도착할 때마다 새롭게 처리
  • 상태를 저장하지 않기 때문에, 여러 서버에 작업을 분산시키는 데 용이하며 확장성이 좋음
  • 상태를 유지하지 않기 때문에 시스템이 예상치 못한 문제에 대해 더 견고
  • 클라이언트가 추가 데이터 전송해야 함
  • Stateful의 모든 기능은 Stateless 방식으로 구현이 불가능
  • 예시 : RESTful API, 서버리스 아키텍처, HTTP 프로토콜 등

차이점

  • 데이터 유지 여부 : Stateful은 상태를 유지하고 저장하며, Stateless는 상태를 유지X
  • 메모리 사용 : Stateful은 상태 정보를 저장하기 위해 메모리를 사용
                      Stateless는 상태를 저장하지 않으므로 메모리 사용이 적음
  • 확장성 : Stateless가 Stateful보다 확장성이 용이
  • 안정성 : Stateless 시스템은 예상치 못한 문제에 대해 더 견고함
               Stateful은 상태를 유지하기 때문에 상태가 손상될 수 있음

예시

상태유지

* 같은 점원일 경우

* 다른 점원일 경우

무상태

* 같은 점원일 경우

* 다른 점원일 경우

결과

  • 상태 유지는 중간에 다른 점원으로 바뀌면 안됨
  • 무상태는 중간에 다른 점원으로 바뀌어도 됨
  • 단, 무상태일 경우 노트북, 2개, 신용카드라는 추가 데이터 전송을 해야 함

결론

  • 데이터를 유지해야 하는 경우 Stateful이 유용할 수 있지만,
    확장성과 안정성이 중요한 경우 Stateless가 더 적합할 수 있음
  • 일반적으로 브라우저 쿠키와 서버 세션등을 사용해서 상태 유지
  • 상태 유지는 최소한만 사용
  • 대규모 사용자가 실시간으로 사용하는 경우 고성능의 처리능력과 안정성이 보장되어야 하므로
    Stateful Server가 적합
  • 실시간 연동이 상대적으로 덜 필요한 웹 서버는 네트워크 비용을 줄이기 위한 Stateless Server가 적합
profile
내가 공부하면서 궁금했던 걸 올리는 개발 블로그

0개의 댓글