---
id: "N0005"
title: "세션 vs JWT 비교"
baseline: null
tags: []
---
# 세션 vs JWT 비교

## 비교표

| 항목 | 세션 | JWT |
|------|------|-----|
| 서버 상태 | Stateful (DB/Redis 저장) | Stateless |
| 즉시 무효화 | 가능 | 불가 (만료 전까지 유효) |
| 수평 확장 | Redis 공유 필요 | 쉬움 |
| 토큰 크기 | 작음 (세션 ID만) | 큼 (payload 포함) |
| 탈취 위험 | 세션 고정 공격 | 만료 전 재사용 가능 |

## 언제 세션을 써야 하는가

- 즉각적인 로그아웃이 필요한 경우 (보안 사고 대응)
- 단일 서버 또는 공유 스토리지 환경
- 관리자 대시보드 등 높은 보안 요구 서비스

## 언제 JWT를 써야 하는가

- 마이크로서비스 간 인증 (서비스마다 세션 공유 어려움)
- API 서버 + 다양한 클라이언트 환경
- 만료 시간 짧게 유지 가능한 경우

## 결론

> "JWT는 세션의 대체재가 아니라 다른 문제의 해결책이다."

세션이 더 단순한 경우가 많음. JWT 취약점 복잡도를 감당할 만한 이유가 있을 때만 선택.

→ see N0001 (OAuth2에서의 토큰 선택)
→ see N0002 (저장 정책)
→ see N0003 (JWT 취약점 상세)
