Network
Sticky Session
창욱씨
2021. 3. 9. 14:59
반응형
Sticky Session (스티키 세션)
Sticky Session이란 로드 밸런서가 특정 클라이언트의 요청을 항상 동일한 서버로 라우팅하는 기법입니다.
🔧 동작 원리
클라이언트 A ──────► 로드 밸런서 ──────► 서버 1 (항상)
클라이언트 B ──────► 로드 밸런서 ──────► 서버 2 (항상)
클라이언트 C ──────► 로드 밸런서 ──────► 서버 2 (항상)
로드 밸런서는 쿠키 또는 IP 해싱 방식으로 클라이언트를 특정 서버에 "고정(stick)"합니다.
📌 구현 방식
| 방식 | 설명 |
|---|---|
| 쿠키 기반 | 로드 밸런서가 쿠키를 발급하여 이후 요청을 같은 서버로 전달 |
| IP 해싱 | 클라이언트 IP를 해싱하여 특정 서버에 매핑 |
| URL 파라미터 | 요청 URL의 특정 파라미터로 서버를 결정 |
✅ 장점
- 세션 상태 공유 불필요 — 서버 메모리에 저장된 세션을 공유 스토리지 없이 유지 가능
- 구현 단순 — 별도의 세션 스토리지(Redis 등) 인프라 불필요
- 레거시 시스템 호환 — 세션 외부화가 어려운 기존 애플리케이션에 유용
❌ 단점
- 부하 불균형 — 특정 서버에 트래픽이 집중될 수 있음
- 서버 장애 시 세션 유실 — 고정된 서버가 다운되면 세션 정보가 사라짐
- 수평 확장 어려움 — Auto Scaling 환경에서 새 서버 투입 시 기존 세션 처리 복잡
- 무상태(Stateless) 설계 원칙에 위배
🆚 Sticky Session vs 세션 외부화
| 비교 항목 | Sticky Session | 세션 외부화 (Redis 등) |
|---|---|---|
| 구현 복잡도 | 낮음 | 높음 |
| 서버 장애 내성 | 낮음 | 높음 |
| 확장성 | 낮음 | 높음 |
| 인프라 비용 | 낮음 | 높음 |
💡 언제 사용하나?
- 레거시 애플리케이션처럼 세션을 외부화하기 어려운 경우
- 소규모 서비스에서 빠르게 로드 밸런싱을 적용할 때
- 장기적으로는 세션 외부화(Redis, Memcached) 또는 JWT 기반 무상태 인증으로 전환하는 것이 권장됩니다.
반응형