Stateless
무상태(Stateless)란 서버가 클라이언트의 이전 요청 정보를 저장하지 않고, 각 요청을 독립적으로 처리하는 통신 방식입니다.
핵심 개념
- 서버는 요청이 끝나면 클라이언트와의 연결 정보를 즉시 잊어버림
- 매 요청은 필요한 모든 정보를 스스로 포함해야 함
- 대표적인 무상태 프로토콜: HTTP
상태 유지(Stateful) vs 무상태(Stateless)
[Stateful 예시 - 점원이 기억하는 경우]
고객: 아메리카노 하나 주세요
점원: (기억) 알겠습니다
고객: 아이스로요
점원: (기억) 아이스 아메리카노요?
고객: 결제할게요
점원: (기억) 아이스 아메리카노 4,500원입니다
[Stateless 예시 - 점원이 매번 바뀌는 경우]
고객: 아메리카노 하나 주세요
점원A: (기억 못함) 알겠습니다
고객: 아이스로요
점원B: ??? ← 무엇을 아이스로 하라는 건지 모름
고객: 아이스 아메리카노 1잔 결제할게요 ← 모든 정보를 포함해야 함
점원C: 네, 4,500원입니다 O
HTTP가 무상태인 이유
| 항목 | 설명 |
| 확장성 | 서버가 상태를 저장하지 않으므로 어떤 서버든 요청 처리 가능 → 서버 증설(Scale-Out)에 유리 |
| 단순성 | 서버 설계가 단순해지고 자원 소모 감소 |
| 한계 | 로그인 등 상태 유지가 필요한 경우 별도 보완 필요 (쿠키, 세션, 토큰) |
Stateful vs Stateless 비교
| 항목 | Stateful | Stateless |
| 상태 저장 | 서버가 저장 | 저장하지 않음 |
| 서버 확장 | 어려움 (같은 서버로 연결 필요) | 용이 (아무 서버나 처리 가능) |
| 장애 복구 | 상태 유실 위험 | 영향 적음 |
| 예시 | TCP, FTP, 세션 기반 인증 | HTTP, REST API, JWT 인증 |
면접 포인트
- REST API가 무상태를 권장하는 이유는, 서버 간 상태 공유 없이 수평 확장이 가능하기 때문입니다.
- 무상태의 한계를 보완하기 위해 쿠키·세션·JWT 같은 메커니즘을 사용하며, 이 중 JWT는 상태 정보를 토큰 자체에 포함시켜 서버의 무상태성을 유지합니다.