Server

Session 이란?

Raconer 2024. 2. 24. 17:04
728x90

🌐 Session 개념 및 분산 환경 처리


🧾 Session 정의

  • 네트워크 상에서 두 개 이상의 통신 장치 간에 유지되는 상호 연결 상태
  • 일정 시간 동안 유지되는 정보를 세션이라 함
  • 사용 환경에 따라 의미가 달라짐

예: 웹 브라우저 <-> 웹 서버 간 사용자 로그인 정보 유지

Session


🔐 Web 로그인 세션

  • 웹에서 사용자 인증 상태를 유지하기 위한 기술
  • 브라우저: 쿠키 저장
  • 서버: 쿠키에 해당하는 세션 정보를 저장
  • 로그아웃하거나 세션이 만료될 때까지 유지

Web 로그인 세션

🖥️ Web 로그인 과정

  1. 사용자가 로그인 요청을 보냄
  2. 서버는 사용자 인증 후 세션 ID를 생성하고 저장
  3. 생성된 세션 ID는 클라이언트의 쿠키에 포함되어 저장
  4. 이후 요청 시, 쿠키에 포함된 세션 ID를 통해 인증 처리

로그인 과정

🔄 분산 환경에서의 세션 처리 이슈

문제점

  • 서버가 여러 대인 경우, 세션 정보가 개별 서버에만 저장되면 다른 서버가 알 수 없음
  • 즉, 세션이 유지되지 않음

해결 방법

세션 클러스터링: 여러 서버 간에 세션 정보를 공유


❌ RDB를 통한 세션 저장 (비효율)

항목 평가
관계형 데이터 모델? 불필요 (단순 1:1 맵핑)
영속성 필요? 없음
성능 지속적인 Read/Write로 부하 발생

✅ Redis를 통한 세션 저장 (적합)

항목 평가
구조 Key-Value 구조에 적합
영속성 필요 없음 (In-Memory)
성능 빠른 접근, 분산 처리에 유리
확장성 수평 확장 쉬움

💡 결론

  • Redis는 분산 환경에서 세션 관리에 매우 적합
  • spring-session-data-redis 라이브러리를 통해 Spring에서 손쉽게 적용 가능
  • 빠른 속도, 낮은 복잡성, 간편한 확장성을 모두 만족
// build.gradle 예시
implementation 'org.springframework.session:spring-session-data-redis'
728x90