웹 기술 기초

로드 밸런서 뒤에 애플리케이션 서버 3대를 두고, 요청을 차례로 각 서버에 분배하고 있다(라운드 로빈). 로그인한 이용자의 세션 정보는 로그인을 처리한 서버의 메모리에만 저장하고 있다. 일어나기 쉬운 문제와 대책의 조합으로 적절한 것은?

  1. A다른 서버로 분배되면 세션을 찾지 못해 로그인이 끊긴 것처럼 보인다. 세션을 모든 서버가 사용할 수 있는 공유 장소에 둔다
  2. B서버 3대가 같은 세션 ID를 따로따로 발급하여 충돌한다. 세션 ID를 짧은 일련번호로 하여 이용자가 ID를 기억하기 쉽게 한다
  3. C로드 밸런서는 Cookie를 읽을 수 없으므로 HTTPS를 사용할 수 없게 된다. 로드 밸런서와 서버 사이의 통신을 암호화하지 않도록 한다
정답과 해설 보기

정답: A. 다른 서버로 분배되면 세션을 찾지 못해 로그인이 끊긴 것처럼 보인다. 세션을 모든 서버가 사용할 수 있는 공유 장소에 둔다

세션 정보가 서버 한 대의 메모리에만 있으면, 다음 요청이 다른 서버로 분배되었을 때 그 서버는 이용자를 구별할 수 없습니다. 대책 중 하나는 세션을 어느 서버에서든 읽고 쓸 수 있는 공유 저장소(인메모리 데이터 스토어나 데이터베이스)에 두는 것입니다. 또 하나는 같은 이용자의 요청을 계속 같은 서버로 분배하는 세션 유지(스티키 세션)이지만, 그 서버가 멈추면 세션이 사라지고 부하도 치우치기 쉬워집니다. 서버가 상태를 가지지 않게 해 두면 서버 대수를 늘리거나 줄이기 쉬워집니다.

이 분야 연습하기 분야로 돌아가기

웹 기술 기초의 다른 문제

  1. 서명을 붙인 일반적인 JWT(JSON Web Token)에 대한 설명으로 올바른 것은?
  2. 사진 인화 서비스 앱이 이용자의 허락을 받아, 다른 회사의 사진 보관 서비스에 있는 이용자의 사진을 읽어 온다. OAuth 2.0에서 이용자에게 허락을 구하는 화면을 보여 주고, 이용자가 허락하면 앱에 액세스 토큰을 발급하는 역할은?
  3. OAuth 2.0과 OpenID Connect의 관계에 대한 설명으로 올바른 것은?
  4. REST의 사고방식에 따른 웹 API 설계로 적절한 것은?
  5. 브라우저에서 https://www.example.com:8443/docs/guide.html?lang=ja#install을 열었다. 이 URL 중 서버로 보내는 요청에는 포함되지 않고, 페이지를 읽어 들인 후 브라우저 안에서만 사용되는 부분은?