웹 기술 기초
로드 밸런서 뒤에 애플리케이션 서버 3대를 두고, 요청을 차례로 각 서버에 분배하고 있다(라운드 로빈). 로그인한 이용자의 세션 정보는 로그인을 처리한 서버의 메모리에만 저장하고 있다. 일어나기 쉬운 문제와 대책의 조합으로 적절한 것은?
- A다른 서버로 분배되면 세션을 찾지 못해 로그인이 끊긴 것처럼 보인다. 세션을 모든 서버가 사용할 수 있는 공유 장소에 둔다
- B서버 3대가 같은 세션 ID를 따로따로 발급하여 충돌한다. 세션 ID를 짧은 일련번호로 하여 이용자가 ID를 기억하기 쉽게 한다
- C로드 밸런서는 Cookie를 읽을 수 없으므로 HTTPS를 사용할 수 없게 된다. 로드 밸런서와 서버 사이의 통신을 암호화하지 않도록 한다
정답과 해설 보기
정답: A. 다른 서버로 분배되면 세션을 찾지 못해 로그인이 끊긴 것처럼 보인다. 세션을 모든 서버가 사용할 수 있는 공유 장소에 둔다
세션 정보가 서버 한 대의 메모리에만 있으면, 다음 요청이 다른 서버로 분배되었을 때 그 서버는 이용자를 구별할 수 없습니다. 대책 중 하나는 세션을 어느 서버에서든 읽고 쓸 수 있는 공유 저장소(인메모리 데이터 스토어나 데이터베이스)에 두는 것입니다. 또 하나는 같은 이용자의 요청을 계속 같은 서버로 분배하는 세션 유지(스티키 세션)이지만, 그 서버가 멈추면 세션이 사라지고 부하도 치우치기 쉬워집니다. 서버가 상태를 가지지 않게 해 두면 서버 대수를 늘리거나 줄이기 쉬워집니다.