무상태성 = 서버가 대화 상태를 보관하지 않음
그래서 클라는 요청을 보내야만 바뀐 자원(A′)을 얻고, 각 요청은 필요한 정보를 전부 포함해야 함
그 보상으로 확장성·캐싱·독립성이 좋아지고, 실시간 푸시는 별도 채널로 보완

| 시나리오 | 설명 | 해결방법 |
|---|---|---|
| 🧱 Stateful 서버 (세션 저장) | A 서버가 로그인 정보를 기억하고 있는데, 다음 요청이 B 서버로 가면 로그인 상태를 몰라서 오류 (세션이 A에만 있음) | 해결하려면 모든 서버가 세션을 공유해야 해서 |
| Redis 같은 “세션 스토리지”를 추가해야 함 (복잡해짐) | ||
| 🌐 Stateless 서버 (JWT 사용) | 사용자가 JWT 토큰을 갖고 있으므로, 어떤 서버(A든 B든 C든)에게 요청해도 동일하게 인증됨 서버는 매번 토큰 검증만 하면 됨 | 서버는 그냥 “토큰 유효한지”만 확인하면 되니까 |
| 서버 개수를 늘려도 아무 문제 없음 |
서버가 여러 대로 나뉘어도(=인스턴스 확장)
사용자 상태가 서버에 묶이지 않아 → 부하 분산과 **수평 확장(Scale Out)**이 쉬움
REST API는 요청(Request)이 있을 때만 응답(Response)을 보낸다.
즉,

왼쪽(클라이언트)이 A를 요청해야,
오른쪽(서버)에서 A를 받아올 수 있는 구조죠.