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 기반 무상태 인증으로 전환하는 것이 권장됩니다.
반응형