본문 바로가기

Session2

[Delivery] Redis에 session 저장하기 Delivery 프로젝트는 대용량 트래픽을 대비해 Scale-out 환경으로 구축했습니다. Scale-out 환경엔 session 로그인 구현 시 아래 그림과 같은 문제가 생길 수 있는데 로그인을 했음에도 세션이 저장되어 있지 않은 서버가 요청을 받는다면 다시 로그인을 해야 하는 문제입니다. 저는 session storage 방식으로 해결했습니다. 세션을 관리하는 Redis 서버를 별도로 두어 어느 애플리케이션 서버에 요청이 들어와도 로그인은 한 번만 하면 됩니다. UserLoginService @Service @AllArgsConstructor public class UserLoginService { private final HttpSession httpSession; private final User.. 2021. 12. 31.
Scale-out 환경에서 Session 관리하기 Scale-out으로 서버를 확장하는 환경이라면 Session을 신경 써줘야 합니다. 예를들어 한 유저가 A 서버를 통해 로그인을 했는데, 다음 요청이 B 서버에 전달이 되어 또 다시 로그인을 하는 상황이 오기 때문입니다. Scale-out 환경에서 Session을 관리하는 기법을 간단히 소개하겠습니다. 1. Sticky - 처음 접속한 서버에 계속 요청하는 방식입니다. - 간단한 해결책이지만 단점이 존재합니다. 바로 특정 서버에 업무가 과중될 수 있는데요. 새로운 서버가 추가 되었어도 기존의 클라이언트는 기존의 서버에만 요청을 처리 하기 때문입니다. 또는 기존의 서버가 고장나서 복구 시켰을 때에도 복구된 서버은 요청을 못받고 놀 수 가 있는 것이지요. 2. Cluster - 모든 서버의 세션을 복사하는.. 2021. 7. 29.