Contents
Stateful한 HTTP 통신
기본적으로 HTTP는 Stateless 프로토콜입니다. 이는 서버가 클라이언트의 각 요청을 독립적으로 처리하며, 이전 요청의 상태나 정보를 기억하지 않는다는 것을 의미합니다. 예를 들어, 클라이언트가 로그인한 후 서버에 다른 요청을 보낼 때, 서버는 클라이언트가 이미 로그인했는지 알지 못합니다. 이러한 Stateless 특성은 HTTP가 단순하고 확장 가능하도록 만드는 장점이 있지만, 상태 정보를 유지해야 하는 애플리케이션에서는 추가적인 메커니즘이 필요합니다.

Stateful한 HTTP 통신
HTTP 통신을 Stateful하게 만들기 위해, 서버가 클라이언트의 상태를 기억하고, 요청 간에 상태 정보를 유지해야 합니다. 이를 위해 일반적으로 **세션(session)**을 사용합니다.

세션(Session)과 세션 저장소
- 세션: 세션은 클라이언트와 서버 간의 상태 정보를 유지하는 메커니즘입니다. 클라이언트가 서버에 처음 요청을 보낼 때, 서버는 고유한 세션 ID를 생성하고, 이 세션 ID를 클라이언트에 전달합니다. 이후 클라이언트는 이 세션 ID를 포함하여 서버에 요청을 보내며, 서버는 세션 ID를 통해 해당 클라이언트의 상태 정보를 확인할 수 있습니다.
- 세션 저장소: 세션 데이터는 서버의 메모리나 데이터베이스에 저장됩니다. 이 세션 저장소에는 각 세션 ID에 해당하는 사용자 정보, 인증 상태, 장바구니 내용 등 클라이언트의 상태 정보가 포함될 수 있습니다.
결론
- Stateless: 서버는 클라이언트의 상태를 기억하지 않으며, 각 요청은 독립적으로 처리됩니다.
- Stateful: 서버는 세션을 통해 클라이언트의 상태를 유지하며, 이를 위해 세션 ID와 세션 저장소를 사용합니다.
- 세션 관리 방식에는 서버 측 세션 저장소, 클라이언트 측 JWT, 쿠키 등을 사용할 수 있습니다.
Share article