본문 바로가기
INFRA

세션 클러스터링(Session Clustering) - 레디스(Redis)

by place-g 2023. 6. 26.
반응형

1. 세션이란

세션(Session)이란 서버와 특정 브라우저 사이의 "상태(state)"를 유지 시키는 것이다.

기본적으로 웹 통신은  HTTP로 통신하는데, HTTP는 상태가 없는(stateless) 통신이다.

그런 HTTP를 이용하여 서버와 브라우저 사이에 상태를 만들기 위한 한 방법(사용자의 정보를 저장하는 방법)으로 세션이 사용된다.

 

세션은 쿠키를 사용한다.

클라이언트(브라우저)에서 서버로 요청을 보내면, 서버에서는 클라이언트를 식별하는 session id를 생성한다.

서버는 session id를 가지고 클라이언트를 식별하며, 클라이언트의 정보를 key-value로 서버에 저장한다.

서버는 session id를 저장하고 있는 쿠키를 생성하여 클라이언트로 전송한다. 

(session id에 대한 클라이언트 정보는 서버에서 관리된다.)

클라이언트는 요청 할 때마다 session id를 저장하고 있는 쿠기를 서버로 전송한다.

 

 

참조 사이트

더보기

https://m.boostcourse.org/web316/lecture/16801

 

웹 프로그래밍(풀스택)

부스트코스(boostcourse)는 모두 함께 배우고 성장하는 비영리 SW 온라인 플랫폼입니다.

m.boostcourse.org

 

http://www.tcpschool.com/php/php_cookieSession_session

 

코딩교육 티씨피스쿨

4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

tcpschool.com

 

https://opentutorials.org/module/3630

 

Node.js - Cookie & 인증

수업소개 이 수업은 웹서버의 정보를 웹브라우저에 저장해서 개인화, 인증, 사용자 추적 등의 기능을 구현할 수 있도록 해주는 쿠키(cookie)를 알려드리는 수업입니다. 또 인증 기능을 구현하는

opentutorials.org

 

https://opentutorials.org/course/3400

 

세션과 인증 - 생활코딩

수업소개 이 수업은 Node.js 웹프래임웍인 Express에서 Session을 이용해 인증을 구현하는 방법을 알려드리는 수업입니다.  수업대상 로그인/로그아웃/접근제한과 같은 인증 기능을 구현하고 싶은 분

opentutorials.org

 

https://developer.mozilla.org/ko/docs/Learn/Server-side/Django/Sessions

 

Django Tutorial Part 7: Sessions framework - Web 개발 학습하기 | MDN

이 튜토리얼에서는 LocalLibrary website을 확장시킬 것입니다. 방문 수를 셀 수 있는 session-based 기능을 더한 홈페이지입니다. 이것은 상대적으로 간단한 예제인데, 이는 당신의 홈페이지에서 익명의

developer.mozilla.org

 

https://developer.mozilla.org/ko/docs/Web/HTTP/Cookies#%EC%BF%A0%ED%82%A4_%EB%A7%8C%EB%93%A4%EA%B8%B0

 

2. 세션 클러스터링(Session clustering)

클러스터링이란 하나의 데이터를 여러 개의 부분집합(clusters)으로 분할하는 것을 의미한다. (동일한 데이터를 여러 서버로 분할)

세션 클러스터링이란 여러 대의 서버에서 세션을 동일하게 가지고 있는 것을 말한다.

 A, B, C서버가 있을 때, "홍길동"이란 사용자의 세션정보는 A, B, C 서버에 모두 저장된다.

 

클라이언트에서 세션은 보통 쿠키로 관리되며, 

서버에서 세션은 FILE, DB, 메모리 등에서 관리될 수 있다.

 

이번 글에서는 DB중에 하나인 레디스(REDIS)를 통해 세션 클러스터링을 설명한다.

 

3. 레디스

레디스는 Remote Dictionary Server의 약자로서, "Key-Value" 구조의 비정형 데이터를 저장하고 관리하기 위한 오픈 소스 기반의 비관계형 데이터베이스 관리 시스템이다.

모든 데이터를 메모리로 불러와서 처리하는 메모리 기반 DBMS이다.

 

Oracle, Mysql과 같은 일반적인 DBMS보다 빠른 처리속도로 응답받을 수 있기 때문에, 스프링에서는 Redis로 세션 관리하는 기능을 제공하고 있다.

 

참조 사이트

 


4. 스프링부트(Spring Boot) - 레디스 세션 클러스터링(Redis Session Clustering)

스프링부트에서 레디스를 통해 세션을 관리하는 방법을 작성한다.

 

1. 라이브러리 설치

그래들로 프로젝트를 구성한 경우에는 build.gradle 파일에 라이브러리 정보를 설정한다.

 

build.gradle

implementation("org.springframework.session:spring-session-data-redis")

 

2. 스프링 부트 설정

세션 저장소 유형 및 세션 관련 정보를 설정한다.

 

application.properties

############################################################
# 세션정보설정 
############################################################
spring.session.store-type=redis # 세션 저장소 유형.
# 내부적으로 Spring Boot에서 @EnableRedisHttpSession 을 수동으로 추가하는것과 동일한 동작

server.servlet.session.timeout= # 세션 시간 초과. 기간 접미사가 지정되지 않은 경우 초가 사용됩니다.
spring.session.redis.flush-mode=on_save # 세션 플러시 모드.
spring.session.redis.namespace=spring:session # 세션을 저장하는 데 사용되는 키의 네임스페이스.


############################################################
# REDIS 연결 구성 
############################################################
spring.data.redis.host=localhost # 레디스 서버 호스트.
spring.data.redis.password= # redis 서버의 로그인 비밀번호.
spring.data.redis.port=6379 # Redis 서버 포트.

 

 

 

참조 사이트

더보기

 

 

5. 세션 클러스터링 테스트

 

세션 클러스터링 테스트는 직접 하지 못해봤기 때문에, 참조 사이트를 남긴다.

 

참조 사이트

 

반응형

'INFRA' 카테고리의 다른 글

[리눅스] 배치 실행 스크립트  (1) 2025.02.28
NAS서버 동기화 문제  (0) 2025.02.28
[Nginx] SSL 통신 오류  (0) 2025.02.27
vi 커멘트  (0) 2025.02.27
Firebase  (0) 2023.11.06