😀 Jerry/면접 질문

[1분 면접] 다중 서버 환경에서 세션 기반 인증 방식 사용의 문제점

Jerry_K 2025. 3. 12. 11:30

📌 면접 답변

 

다중 서버 환경에서 세션 기반의 인증 방식을 사용하는 경우 세션 불일치 문제가 발생할 수 있다.

예를 들어, 로드 밸런서를 통해 트래픽이 서버 A와 서버 B로 분산되는 환경을 가정해 보자.

 

1. 사용자가 로그인하면, 세션 정보는 최초로 요청을 받은 서버 A에 저장된다.

2. 이후, 사용자가 추가 요청을 보낼 때 로드 밸런서가 서버 B로 요청을 전달할 경우, B 서버에는 해당 사용자의 세션 정보가 존재하지 않기 때문에 인증이 실패한다. 

 

이는 서버 간 세션 공유가 이뤄지지 않았기 때문에 발생한다. 

 

 

 

그렇다면 세션 불일치 문제는 어떻게 해결 할 수 있을까 ?

1. 스티키 세션 방식

  • 사용자의 요청이 항상 사용자 세션 정보가 저장된 서버로 가도록 고정
  • 쿠키나 IP를 통해서 어느 서버로 고정 시킬지 결정
  • 구현이 간단하며 기존 세션 저장 방식 그대로 활용 가능
  • 하지만 특정 서버에 트래픽 집중되는 문제점

 

2. 세션 클러스터링 방식

  • Clustering (클러스터링) 뜻은 "뭉치기" 또는 "군집화"
  • 특정 서버에 세션 정보가 생성될 때, 다른 서버로 정보를 복제 
  • 여러 서버에 세션 정보를 중복으로 저장하여 트래픽 몰림 현상 방지 
  • 하지만 세션 정보를 중복으로 저장하여 메모리 비효울적 사용 
  • 또한 세션 정보 복제 과정에서 네트워크 트래픽과 같은 문제로 세션 정보 유실 문제 발생

 

3. 스토리지 분산 방식

  • 세션 정보를 외부 저장소에 저잘하여 모든 서버가 동일한 세션 데이터 참조
    • Redis, Memcached 등
  • 이 방법으로 스티키, 세션 클러스터링 방식 해결 가능하며, 서버가 추가되어도 세션 유지 가능 
  • 외부 저장소에 의존성이 증가하여, 저장소가 과부화 상태가 되면 성능 저하 발생

 

4. JWT (JSON Web Token) 기반 인증

  • 클라이언트가 자체적으로 토큰을 저장하여, 이를 포함하여 요청을 보냄
  • 이렇게 할 경우 서버 간 세션 공유 문제 해결 가능 ! 

📌 내 답변

다중 서버 환경에서 세션 기반 인증 방식을 할 경우,

각각의 서버가 클라이언트와 같이 공유하는 세션키가 없다는 문제가 발생한다. 

클라이언트와 공유하는 세션키가 없는 경우, 클라우저와의 통신에 장애가 발생하게된다.

 

 

Self 피드백

  • 예시를 들어주면 좋을 것 같다. 
  • 그리고 문제에 대한 해결책도 말해야 할 듯

[출처 및 참고 자료]

 

https://www.maeil-mail.kr/

 

매일메일 - 기술 면접 질문 구독 서비스

기술 면접 질문을 매일매일 메일로 보내드릴게요!

www.maeil-mail.kr

매일메일 면접 질문지

 

 

세션 불일치 문제 해결방법

스케일 아웃으로 서버의 저장소가 여러 대로 분산되면서 로드밸런싱을 통해 부하를 분산 처리해야 하는데, 이 때 세션 불일치 문제가 발생합니다. 이를 해결하는 방법에 대하여 정리해 보았습

velog.io

세션 불일치 해결 방법 그림 출처