728x90
🌐 Session 개념 및 분산 환경 처리
🧾 Session 정의
- 네트워크 상에서 두 개 이상의 통신 장치 간에 유지되는 상호 연결 상태
- 일정 시간 동안 유지되는 정보를 세션이라 함
- 사용 환경에 따라 의미가 달라짐
예: 웹 브라우저 <-> 웹 서버 간 사용자 로그인 정보 유지

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

Web 로그인 세션

🖥️ Web 로그인 과정
- 사용자가 로그인 요청을 보냄
- 서버는 사용자 인증 후 세션 ID를 생성하고 저장
- 생성된 세션 ID는 클라이언트의 쿠키에 포함되어 저장
- 이후 요청 시, 쿠키에 포함된 세션 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
'Server' 카테고리의 다른 글
[Caching] 캐싱의 원리 와 목적 (0) | 2024.02.29 |
---|---|
[Session] Spring Boot에서의 세션 관리 (0) | 2024.02.28 |
동시성 제어 (0) | 2024.02.18 |
[낙관적락/Optimistic Lock]_기본 개념 (비관적 락/PESSIMISTIC 짧은 설명 포함) (0) | 2024.02.15 |
[비관적인락/PESSIMISTIC]_쓰기락 테스트 (0) | 2024.02.06 |