반응형

HTTP, 스테이트풀(Stateful), **스테이트리스(Stateless)**는 웹 애플리케이션의 동작 방식과 상태 관리를 설명하는 중요한 개념입니다. 아래에서 각각을 설명드리겠습니다.


1. HTTP (HyperText Transfer Protocol)

  • 정의:
    HTTP는 웹 브라우저와 서버 간에 데이터를 주고받기 위한 통신 프로토콜입니다.
  • 특징:
    • Stateless(무상태): HTTP는 기본적으로 상태를 저장하지 않기 때문에 클라이언트와 서버 간의 요청은 독립적으로 처리됩니다. 각 요청은 이전 요청의 정보를 알지 못합니다.
    • Request-Response 구조: 클라이언트가 요청(Request)을 보내면 서버가 응답(Response)을 보냅니다.
    • 확장성: HTTP는 다양한 데이터 형식을 지원하며, 버전(HTTP/1.1, HTTP/2, HTTP/3 등)에 따라 성능과 보안이 개선됩니다.
  • 예시:
    사용자가 브라우저를 통해 example.com에 접속하면, 브라우저가 서버에 요청을 보내고 서버는 HTML, CSS, 이미지 등의 데이터를 응답으로 제공합니다.

2. 스테이트풀 (Stateful)

  • 정의:
    스테이트풀 시스템은 클라이언트와의 상호작용에서 상태 정보를 유지합니다. 즉, 이전 요청의 데이터를 기억하고 현재 요청에 반영합니다.
  • 특징:
    • 서버는 클라이언트와의 연결 상태를 지속적으로 추적합니다.
    • 상태 저장을 위해 메모리나 데이터베이스를 사용하며, 세션(Session)이나 쿠키(Cookie) 같은 방식으로 상태를 관리합니다.
    • 복잡한 작업이 가능하지만, 리소스 소모가 큽니다.
  • 장점:
    • 사용자의 연속적인 작업 흐름을 지원합니다.
    • 쇼핑몰의 장바구니와 같이 상태를 기반으로 동작하는 기능 구현에 적합합니다.
  • 단점:
    • 서버에 부하가 많아질 수 있습니다.
    • 상태를 유지하기 위해 서버의 복잡도가 증가합니다.
  • 예시:
    사용자가 쇼핑몰에서 상품을 장바구니에 추가하면, 서버가 그 상태를 기억해 최종 결제 단계에서 보여줍니다.

3. 스테이트리스 (Stateless)

  • 정의:
    스테이트리스 시스템은 클라이언트와의 각 요청을 독립적으로 처리하며, 상태 정보를 저장하지 않습니다.
  • 특징:
    • 각 요청에 필요한 모든 정보를 포함시켜야 합니다.
    • 서버는 이전 요청과 관계없이 처리하므로 단순성과 확장성이 높습니다.
    • 상태 저장이 필요하다면 클라이언트가 정보를 저장하고 요청에 포함합니다.
  • 장점:
    • 서버의 부하가 적어 확장성이 뛰어납니다.
    • 설계와 구현이 상대적으로 간단합니다.
  • 단점:
    • 클라이언트가 요청마다 필요한 데이터를 전달해야 하므로 데이터 오버헤드가 발생할 수 있습니다.
    • 연속성이 필요한 작업에는 적합하지 않습니다.
  • 예시:
    REST API는 스테이트리스 방식의 대표적인 예입니다. 클라이언트가 API를 호출할 때마다 필요한 데이터를 요청에 포함시켜야 합니다.

스테이트풀과 스테이트리스 비교

특징 Stateful(스테이트풀) Stateless(스테이트리스)
상태 유지 여부 유지함 유지하지 않음
서버 리소스 소모 높음 낮음
확장성 제한적 우수
적용 사례 온라인 게임, 채팅, 쇼핑몰 REST API, HTTP 기본 요청 처리

이 세 가지 개념은 상황에 따라 조합해서 사용하기도 합니다. 예를 들어, HTTP는 본질적으로 스테이트리스지만, 애플리케이션 설계에 따라 세션 관리로 스테이트풀의 성격을 추가하기도 합니다.

반응형

'개발 부트캠프 > 네트워크' 카테고리의 다른 글

[Nginx] Load Balancing 설정  (0) 2025.02.17
[IP] 고정 IP  (0) 2024.12.03
[프로토콜] TCP(Transmission Control Protocol)  (0) 2024.12.03
[IP] 바인드 주소(Bind Addresss)  (0) 2024.11.27

+ Recent posts