본문 바로가기
컴퓨터/네트워크

[네트워크] 세션 클러스터링 | 이중화 시 서버들이 사용자를 기억하는 방법

by 버니케이 2025. 5. 3.
반응형


🌟 세션 클러스터링 (Session Clustering)


로그인한 사용자 정보(세션)를 여러 서버가 같이 기억하는 방법

여러 서버가 같이 기억해야 되냐면
서버가 여러 대니까.

→ 어떤 서버에 연결돼도 "나 로그인했어" 상태가 유지돼야 하니까

 

🛠️ 방법은 두 가지

1. 톰캣 설정으로 세션 클러스터링

2. 토큰 기반 세션 유지 (JWT 같은 거)

 

 

 


 

1. 톰캣 설정으로 세션 클러스터링

서버끼리 세션 내용을 실시간으로 동기화하는 방식

 

 

톰캣 같은 웹 서버(WAS)들이 서로 세션 정보를 주고받는다.

그래서 서버 A에서 로그인했어도, 서버 B로 요청이 가도 로그인 상태를 알게된다.

이걸 하려면 톰캣에 Cluster 설정을 해야 한다.

(ex: server.xml 파일에 <Cluster> 태그 추가)

 

장점

기존 세션 로직 거의 안 건드려도 됨.

 

단점

서버 간 트래픽(복사/동기화)이 부담됨. 서버 수가 많아질수록 힘들어짐.

 

 

 

2. 토큰 기반 세션 유지 (JWT 같은 거)

서버는 사용자 정보를 저장하지 않고, 클라이언트가 직접 들고 다니게 하는 방식

 

 

사용자가 로그인하면, 서버가 "이 사람 인증했어요!" 라는 토큰(JWT) 을 만들어준다.

클라이언트(브라우저, )가 이 토큰을 계속 들고 다님.

서버는 매번 토큰을 검증만 하면 됨. (토큰 안에 사용자 정보가 있음)

 

장점

서버가 세션 관리 안 해도 됨. 서버 여러 대여도 부담 없음.

수평 확장(Scale-out)이 쉬움.

 

단점

토큰 탈취되면 위험할 수 있음 (보안 주의!)

토큰에 변경사항이 생기면(: 강제 로그아웃) 토큰을 폐기하는 게 쉽지 않음.

 

 

 

 

💬 그래서 보통

트래픽이 별로 없으면톰캣 세션 클러스터

트래픽이 많거나 글로벌 서비스면 → JWT 같은 토큰 방식

(기업 규모나 시스템 아키텍처 따라 결정)

반응형

댓글