Stateful와 Stateless
애플리케이션 설계, 통신 프로토콜, 또는 컴퓨터 시스템에서 상태를 관리하는 방법에 따라 분류되는 개념이다.
Stateful
Stateful 시스템은 이전 요청 또는 작업의 상태를 저장하고, 이를 바탕으로 이후 요청을 처리한다.
특징
- 클라이언트와 서버 간의 연결 지속성이 중요하다.
- 상태 정보는 서버 또는 클라이언트에 저장된다.
- 이전 요청과 다음 요청 간의 컨텍스트를 유지한다.
- 요청 처리 속도는 상태를 참조해야 하므로 다소 느릴 수 있다.
장점
- 사용자 경험이 부드럽고, 연속적인 작업을 쉽게 처리할 수 있다.
- 상태를 유지하므로 복잡한 작업 처리에 유리하다.
단점
- 서버의 리소스를 많이 소비한다(예: 메모리 사용 증가).
- 서버가 중단되면 상태 정보가 유실될 수 있다.
- 클라이언트와 서버 간의 세션 관리가 필요하다.
예시
- FTP (File Transfer Protocol): 파일 전송 상태를 유지하며 중단된 파일 전송을 재개 가능.
- 온라인 게임: 플레이어 상태, 위치, 진행 상황을 유지.
- 은행 거래 시스템: 사용자의 세션에 따라 거래 상태를 추적.
Stateless
Stateless 시스템은 각 요청을 독립적으로 처리하며, 이전 요청의 상태를 저장하지 않는다.
특징
- 클라이언트와 서버 간 연결 지속성이 필요하지 않다.
- 요청 시 필요한 모든 정보를 포함해야 한다.
- 서버는 각 요청을 완전히 별개로 간주한다.
장점
- 서버 리소스를 적게 소비한다.
- 확장성이 뛰어나며, 서버 간 로드 밸런싱이 용이하다.
- 상태 관리에 따른 복잡성이 줄어든다.
단점
- 상태를 클라이언트가 포함해야 하므로 요청이 커질 수 있다.
- 상태를 유지하지 않으므로 연속된 작업을 처리하기 어려울 수 있다.
예시:
- HTTP (HyperText Transfer Protocol): 웹 브라우저가 서버에 요청 시 항상 새로운 연결로 간주.
- RESTful API: 각 요청에 필요한 데이터를 포함하여 독립적으로 처리.
Stateful vs Stateless
특징 | Stateful | Stateless |
상태 저장 여부 | 상태 저장 (연속된 작업 가능) | 상태 저장 안 함 (각 요청 독립적) |
리소스 사용량 | 서버 리소스 사용량 많음 | 서버 리소스 사용량 적음 |
확장성 | 상대적으로 낮음 | 매우 높음 |
연결 지속 여부 | 연결 지속 필요 | 필요 없음 |
복잡성 | 세션 관리 등으로 복잡 | 설계 및 관리가 간단 |
사용 예시
- Stateful: 지속적인 상태 관리가 필요한 경우 (게임, 채팅, 트랜잭션 시스템).
- Stateless: 대규모 분산 시스템이나 클라이언트/서버 간 확장성과 독립성을 요구하는 경우 (RESTful 서비스, 웹 서버).
'Network' 카테고리의 다른 글
[Network] HTTP와 HTTPS (0) | 2024.11.27 |
---|---|
[Network] HTTP 버전별 특징 (0) | 2024.11.24 |
[Network] 프로토콜과 OSI 7 Layer (0) | 2024.11.24 |
[Network] 멱등성이란? (0) | 2024.11.24 |
REST API 란? (0) | 2024.10.21 |