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
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로 세션 관리하는 기능을 제공하고 있다.
참조 사이트
https://ko.wikipedia.org/wiki/%EB%A0%88%EB%94%94%EC%8A%A4
레디스 - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. 레디스(Redis)는 Remote Dictionary Server의 약자로서[4], "키-값" 구조의 비정형 데이터를 저장하고 관리하기 위한 오픈 소스 기반의 비관계형 데이터베이스 관리 시스
ko.wikipedia.org
Redis
Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache, and message broker
redis.io
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 서버 포트.
참조 사이트
https://docs.spring.io/spring-session/reference/guides/boot-redis.html
Spring Session - Spring Boot :: Spring Session
After adding the required dependencies, we can create our Spring Boot configuration. Thanks to first-class auto-configuration support, setting up Spring Session backed by Redis is as simple as adding a single configuration property to your application.prop
docs.spring.io
https://kitty-geno.tistory.com/m/188
Spring Boot | Redis로 세션 클러스터링 적용하기
프로젝트에 세션 로그인 처리가 되어있는 가정하에 진행되었습니다. Spring Boot | 로그인 구현하기 (Spring Security) 들어가기에 앞서.. 다양한 방식의 세션 클러스터링 방법이 있지만 해당 프로젝트
kitty-geno.tistory.com
https://zzang9ha.tistory.com/442
Spring 분산 환경에서 세션 관리하기 (Redis Session Clustering)
🔗 Spring 분산 환경에서 세션 관리하기(세션 클러스터링) 안녕하세요, 이번 포스팅에서는 여러 서버 환경에서 세션을 관리하는 방법에 대해 살펴보겠습니다. (코드는 깃허브에서 확인하실 수 있
zzang9ha.tistory.com
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 |