무상태(stateless) 서비스는 요청 간에 클라이언트 상태를 저장하지 않는(각 요청이 독립적) 반면, 상태 유지(stateful) 서비스는 상태를 유지합니다. 무상태성은 확장성에 중요합니다 — 무상태 서비스가 수평으로 훨씬 쉽게 확장됩니다.
stateless vs stateful
STATELESS → 서비스가 요청 간에 클라이언트 상태를 전혀 유지하지 않음:
→ 각 요청이 필요한 모든 정보를 담음; 어떤 서버든 어떤 요청을 처리 가능
→ 필요하면 상태는 다른 곳에 있음 (데이터베이스, 캐시, 클라이언트, 토큰)
STATEFUL → 서비스가 요청 간에 상태를 유지함:
→ 특정 서버가 클라이언트 상태를 보유 (메모리의 세션 등)
→ 요청이 같은 서버로 가야 함 (또는 상태를 공유/동기화해야 함)
무상태성이 확장성에 도움이 되는 이유
STATELESS 서비스는 수평 확장이 쉬움:
→ 어떤 서버든 어떤 요청을 처리 → load balancing이 단순 (아무 서버나 동작)
→ 서버를 자유롭게 추가/제거; 실패한 서버가 상태를 잃지 않음 → 복원력 있음
→ sticky session이나 상태 동기화 불필요
STATEFUL 서비스는 확장이 어려움:
→ 요청이 특정 서버에 묶임 (sticky session); 서버 장애 시 상태 손실;
확장 시 상태 공유/replication 필요 → 복잡성
→ 확장성을 위해 STATELESS 서비스 선호 (핵심 디자인 원칙).
