상태 프로토콜 (Stateful)
: client-server 관계에서 서버가 클라이언트의 상태를 보존함을 의미
- 클라이언트의 정보를 기억한다
▶ 어딘가 정보를 저장하고 통신할 때마다 읽는다는 뜻- 보통 브라우저의 쿠키에 저장되거나, 서버의 세션 메오리에 저장되어 상태 유지
- Stateful 구조를 따르는 프로토콜 예로 TCP의 3-way handshaking 과정을 이야기할 수 있음
단점
- 해당 서버가 멈추거나 못쓰게 되면 다른 서버는 해당 서버의 상태값들을 가지고 있기 않기 때문에 대체가 불가능
- 용량 한계 존
무상태 프로토콜 (Stateless)
: 통신에 필요한 모든 상태 정보들을 서버에서 보존하지 않고 클라이언트에서 가지고 있다가 서버와 통신할 때 데이터를 실어보내는 것
- UDP와 HTTP가 대표적인 Stateless
- 서버는 단순히 요청이 오면 응답을 보내는 역할만 수행.
상태관리는 전적으로 클라이언트에게 책임이 있음 - 데이터를 전송할 때마다 연결하고 바로 끊어버림
- 특별한 일이 없다면 무상태를 지향해야 함
장점
- 서버는 단순히 응답만 하기 때문에 상태 유지에 대한 부하가 현저히 줄어듦
- 대량의 트래픽 발생시 서버 확장을 통해 대처를 수월하게 할 수 있음
(상태를 보관하기 않아 서버가 바뀌어도 상관없기 때문)
단점
- Stateful보다 더 많은 데이터가 소모됨
- 매번 요청할 때마다 자신의 부가정보를 줘야 함
(로그인의 경우 상태를 유지하지 않으면 로그인이 풀려버림.
stateless 특징을 유지하면서도 로그인 상태 유지를 가능하게 하는 기술이 바로 JWT토큰)
참고
'Study' 카테고리의 다른 글
[Protocol] HTTP 정리 (0) | 2023.10.16 |
---|---|
[HTTP] HTTP message (0) | 2023.10.13 |
[JSON] JSON 정리 (1) | 2023.10.11 |
[Firebase] Realtime Database & Firestore (0) | 2023.10.10 |