다중 서버 환경에서 세션 기반 인증 방식을 사용하는 경우 발생할 수 있는 문제점은 무엇인가요?

박준서·2025년 1월 23일
1

Web

목록 보기
16/16
post-thumbnail

다중 서버 환경에서 세션 기반 인증 방식을 사용하는 경우에는 세션 불일치 문제가 발생할 수 있다. 우리가 만약 서버 A,B를 관리하고 있을 때, 로드밸런서는 사용자의 요청을 상황에 맞게 A와 B 중 한 곳으로 전달한다.

유효한 로그인 요청이 A 서버로 처음 도착하면 사용자에 대한 세션 정보는 A 서버에 저장된다. 이후에 해당 사용자의 또 다른 요청이 로드 밸런서에 도착 했을 때 B 서버로 도착하게 되면 사용자의 세션 데이터가 존재하지 않기 때문에 요청이 제대로 처리되지 않는다.

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

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

스티키 세션 방식

사용자 요청이 항상 사용자 세션 정보가 저장된 서버로 가도록 고정하는 방식이다.

사용자 요청의 쿠키나 IP를 통해서 어느 서버로 고정 시킬지 결정한다.

장점

  • 단순하다.

단점

  • 특정 서버에 트래픽이 집중될 수 있다는 문제점이 있다
  • 사용자 세션 정보를 가지고 있는 서버가 다운되면 해당 서버에 고정된 사용자는 다시 로그인 해야 한다. 즉, 가용성 문제가 있다.

세션 클러스터링 방식

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

장점

  • 여러 서버에 세션 정보를 중복으로 저장하기 때문에, 스티키 세션의 트래픽 몰림 현상과 세션 정보 유실 문제를 해결한다.

단점

  • 세션 정보를 중복 저장한다는 점에서 메모리를 비효율적으로 사용한다.
  • 세션 정보 복제 과정에서 발생하는 네트워크 트래픽 문제가 발생할 수 있다.
  • 세션 정보 복제 지연으로 인한 일시적인 세션 정보 유실 문제가 발생할 수 있다.

세션 스토리지 분리 방식

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

장점

클러스터링 방식, 스티키 세션 방식에서 발생하는 문제를 해결할 수 있다.

단점

  • 스토리지에 대한 단일 장애 지점이 문제가 될 수 있다.
    • 하나뿐인 세션 스토리지에 장애가 발생하면, 모든 서버가 세션 데이터를 정상적으로 사용할 수 없게 된다. ⇒ 보통 세션 스토리지를 여러개로 구성하는 방식으로 해결한다.
  • 클러스터링과 같은 HA 구성으로 단일 장애 지점을 해소해도, 복제 지연으로 인한 일시적인 세션 정보 유실 문제는 발생할 수 있다.
  • 외부 스토리지를 관리하기 위한 추가적인 리소스가 요구될 수 있다.

References

다중 서버 환경에서의 세션 불일치 문제와 해결방법

profile
Back-End Developer

1개의 댓글

comment-user-thumbnail
2025년 1월 23일

오늘도 좋은글 감사합니다~

답글 달기

관련 채용 정보