기술면접

다중 서버 환경에서 세션 기반 인증 방식의 문제

하루우울루 2025. 1. 16. 12:36

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

 

세션 불일치 문제가 생길 수 있는데, 로그인 했을 대는 서버 A에 세션이 생성되었고 다음 요청에서는 로드 밸런서가 서버B로 보내버리면, 서버B에서는 해당 세션에 대한 정보가 없기 때문에 인증일 불가능하다.

이 문제를 세션 불일치라고 한다.

 

세션 불일치는 크게 3가지 방법으로 해결할 수 있다.

 

스티키 세션 방식, 세션 클러스터링 방식, 스토리지 분리 방식이 있다.

 

스티키 세션 방식은 사용자 요청이 항상 사용자 세션 정보가 저장된 서버로 가도록 고정시켜두는 것이다.

세션 동기화 필요성을 줄일 수 있지만, 서버 장애시 문제가 있다. 단수하다고 볼 수 있고 특정 서버에 트래픽이 몰릴 수 있다는 단점이 있다.

 

세션 클러스터링 방식은 특정 서버에 사용자 세션 정보가 생성될 때, 다른 서버로 정보를 복제하는 방법이다. 

트래픽과 정보 유실문제를 더는 장점이 있지만, 중복 저장한다는 점에서 메모리를 비효율적으로 사용하게 된다.

 

스토리지 분리 방식은 세션 정보를 저장하는 공간을 외부로 분리하는 방식이다. 

세션 클러스터링, 스티키 세션 방식에서 발생하는 문제를 해결할 수 있다. 외부 스토리지를 관리하기 위한 추가적인 리소수가 요구될 수도 있다.

 

JWT같은 토큰 기반인증으로 전환해서 사용하면 클라이언트가 인증 정보를 직접 가지고 있어 서버 상태와 무관하게 동작함으로 JWT를 사용해도 좋을 것 같다.