서버의 동작 방식과 상태 관리는 웹 서버가 요청을 처리하는 과정과 세션/쿠키 같은 상태 관리 방식을 말한다.

1. 개념 설명 (Concept)
웹 서버 동작 흐름:
클라이언트(브라우저) → HTTP 요청 → 서버(Controller → Service → Repository → DB) → 응답 반환
- 서버는 기본적으로 Stateless(무상태): HTTP는 요청과 응답 후 연결을 끊기 때문에, 이전 요청의 상태를 기억하지 않음.
- 하지만 로그인/장바구니 같은 기능을 위해 상태 관리가 필요 → 이를 위해 **쿠키(Cookie), 세션(Session), 토큰(Token)**을 사용.
실제 서비스 예시:
- 로그인 시도 → 서버에서 사용자 인증 → 세션 ID를 발급
- 세션 ID는 브라우저 쿠키에 저장됨
- 이후 요청마다 쿠키를 포함해 서버에 전달 → 서버가 세션 저장소에서 사용자 정보 확인
2. 올바른 용어 (Terminology)
- Stateless (무상태): HTTP 특성. 서버는 이전 요청 기억 X
- Cookie (쿠키): 클라이언트 브라우저에 저장되는 작은 데이터
- Session (세션): 서버 메모리/DB에 저장되는 사용자 상태 정보
- Token (토큰): 상태를 서버가 기억하지 않고 클라이언트가 인증 정보를 담아 보내는 방식 (ex. JWT)
- Session Store (세션 저장소): 서버 클러스터 환경에서 세션을 공유하기 위한 저장소 (Redis 등)
3. 잘못 쓰기 쉬운 표현 + 실제 맥락 (Misuse & Context)
❌ 잘못된 표현:
- “HTTP는 상태를 유지한다” → 틀림, HTTP는 기본적으로 Stateless임
- “세션은 클라이언트에 저장된다” → 일부만 맞음, 실제 데이터는 서버에 있고 클라이언트에는 세션 ID만 저장됨
✅ 현업 맥락:
- 개발자들끼리는 “세션 유지(Session 유지)”라고 표현하지만, 정확히는 서버가 상태를 추적하는 방식을 말하는 것임
- “토큰 기반 인증”은 **세션 없는 인증(stateless)**을 뜻함
4. 면접 예시 (Interview Q&A)
Q1. HTTP가 무상태(stateless)라는 것은 무슨 의미인가요?
👉 서버가 요청 간 상태를 기억하지 않으며, 각 요청은 독립적으로 처리된다는 의미입니다.
Q2. 세션(Session)과 토큰(Token)의 차이는 무엇인가요?
👉 세션은 서버가 상태를 저장하고 추적하며, 토큰은 클라이언트가 인증 정보를 직접 포함해 stateless하게 처리합니다.
4일차 확인 퀴즈
Q1. (OX)
HTTP 프로토콜은 기본적으로 상태를 기억하는 프로토콜이다.
👉
정답: X
HTTP는
Stateless(무상태)
프로토콜이에요. 각 요청은 독립적으로 처리되고, 이전 요청과 연결되지 않습니다.
Q2.
세션(Session)과 쿠키(Cookie)의 저장 위치를 각각 올바르게 설명한 것은?
- 세션은 클라이언트, 쿠키는 서버
- 세션은 서버, 쿠키는 클라이언트
- 세션과 쿠키 모두 서버
- 세션과 쿠키 모두 클라이언트
👉 정답: 2번 (세션은 서버, 쿠키는 클라이언트)
세션 데이터: 서버 메모리/DB에 저장 쿠키: 브라우저(클라이언트)에 저장
Q3.
다음 중 토큰(Token) 기반 인증의 특징으로 옳지 않은 것은?
- 서버가 상태를 직접 저장하지 않는다.
- 클라이언트가 매 요청마다 토큰을 포함한다.
- 서버는 토큰의 유효성을 검증한다.
- 로그아웃 시 서버가 토큰을 즉시 무효화할 수 있다.
👉 정답: 4번
1, 2, 3은 모두 맞습니다. 하지만 로그아웃 시 서버가 토큰을 즉시 무효화할 수 없다 → ❌ → 토큰은 이미 발급되어 클라이언트가 가지고 있기 때문에, 일반적으로 만료시간(exp)까지 유효합니다. (대안: 블랙리스트 저장, 짧은 만료시간 + Refresh Token 사용)
Q4.
아래 상황에서 필요한 개념은?
- 사용자가 로그인한 뒤 브라우저를 닫았다가 다시 열었는데 자동 로그인됨.
👉 ( ) 덕분에 가능하다.
👉 정답: 쿠키(Cookie) 세션은 브라우저 닫으면 기본적으로 끊어집니다. 자동 로그인을 유지하려면 브라우저가 세션 ID(혹은 토큰)를 쿠키에 저장해두고, 다시 접속할 때 서버에 보내야 합니다.
경훈님 답변은 “세션 저장소에 저장된 세션”이었는데, 이건 현재 로그인 유지 중일 때 맞는 설명이에요. 브라우저 닫았다 열어도 유지되는 건 쿠키 덕분이에요.
Q5. (주관식)
세션(Session) 방식과 토큰(Token) 방식 인증의 가장 큰 차이점은 무엇인가요?
👉 정답 포인트: 상태를 서버가 관리하느냐(세션) vs 클라이언트가 관리하느냐(토큰)
세션: 서버 메모리/DB에 사용자 상태 저장 → 서버 부하 ↑ 토큰: 클라이언트가 인증 정보 자체를 매번 포함 → 서버 확장성 ↑
제 답변인은 “서버측 DB/메모리 사용 유무”
요약
- HTTP = Stateless
- 세션 = 서버 저장 / 쿠키 = 클라이언트 저장
- 토큰은 서버가 상태를 기억하지 않고 클라이언트가 인증 정보 포함
- 자동 로그인 = 쿠키 덕분
- 세션 vs 토큰 = 상태 관리 주체의 차이
'2025 Dev Log > 2025.Backend' 카테고리의 다른 글
| [#3][다시, 처음부터 #6]JWT를 활용한 실전 적용과 필터 기반 인증 흐름 (2) | 2025.09.26 |
|---|---|
| [#3][다시, 처음부터 #5]JWT(Json Web Token) 기반 인증 (0) | 2025.09.23 |
| [#3][다시, 처음부터 #3]HTTP 상태 코드(HTTP Status Code) 와 API 응답 설계 (0) | 2025.09.11 |
| [#3][다시, 처음부터 #2] HTTP & REST 기본기 (0) | 2025.09.09 |
| [#3][다시, 처음부터 #1] 백엔드란+ 서버/클라이언트 기본 개념 (0) | 2025.09.06 |