thumbnail
VSFe - Network
CS / Network
2024.07.15.

VSFe님의 Tech-Interview 레포에서, Network 주제로 나올 수 있는 면접 질문들을 내 방식대로 정리해봤다.
추후 면접 대비할 때 해당 글만 봐도 될 정도로 계속해서 다듬어나갈 예정이다.

1. 쿠키와 세션의 차이에 대해 설명해주세요.

  • 쿠키

    • 웹 사이트 접속 시 사용자의 식별을 위해 사용한다.
    • 만료시간이 지나면 자동으로 삭제된다.
  • 세션

    • 사용자 데이터를 서버 내의 메모리에 객체로서 저장하는 것

세션 방식의 로그인 과정에 대해 설명해 주세요.

  • 클라이언트가 아이디, 비밀번호를 입력하여 로그인에 성공.
  • 서버는 해당 유저 정보를 담은 세션 객체를 서버 내의 메모리에 생성하고, 이를 찾기 위한 세션 아이디를 만들어 쿠키에 담아 클라이언트에게 보낸다.
  • 클라이언트가 서버에 작업을 요청할 때, 세션 아이디가 담긴 쿠키를 같이 보낸다.
  • 서버는 쿠키에 담긴 세션 아이디에 대응되는 세션 객체가 있는지 검사하고, 만약 세션 객체가 있다면 클라이언트의 요청에 대한 응답을 제공한다.

HTTP의 특성인 Stateless에 대해 설명해 주세요.

  • HTTP 서버는 클라이언트에 대한 정보를 유지하지 않는다.

Stateless의 의미를 살펴보면, 세션은 적절하지 않은 인증 방법 아닌가요?

  • HTTP가 stateless 특성을 지닌 것이며, 내가 제공하는 웹 서비스가 클라이언트의 상태 정보를 유지하고 싶다면 세션을 사용하면 된다.
  • 세션을 이용한 인증 방법은 클라이언트의 상태 정보를 서버가 관리하기에 클라이언트의 추적, 관찰, 관리가 쉽다는 장점(장바구니 등)이 있지만, 세션을 저장하기 위한 서버 메모리가 필요하다는 단점이 있다.

규모가 커져 서버가 여러 개가 된다면, 세션을 어떻게 관리할 수 있을까요?

sticky session

  • 유저가 특정 서버에 세션을 생성했다면, 이후 모든 요청은 그 서버로만 보내지게 된다.
  • 로드밸런서가 세션을 생성한 서버로 모든 요청을 리다이렉트한다.
  • 특정 서버에 트래픽이 집중될 위험이 있다.
  • 특정 서버에 장애가 발생하면, 해당 서버를 사용하는 사용자들은 세션 정보를 잃어버리게 된다. (가용성 ↓)

session clustering

  • 특정 서버의 세션 저장소에 세션이 생성, 삭제, 변경되면 변경사항이 다른 모든 서버의 세션 저장소에 복제가 된다.
  • sticky session 대비 가용성이 좋다.
  • 특정 서버에 트래픽이 집중될 위험이 없다.
  • 모든 서버가 동일한 세션 객체를 가져야 하기 때문에 많은 메모리가 필요하다.
  • 대규모의 서버가 클러스터링된 경우, 끝없는 변경사항들로 인해 네트워크 트래픽이 증가한다.
    • 소규모 클러스터에서 좋다.

세션 저장소 분리

  • 기존 서버의 메모리를 세션 저장소로 사용하지 않고, 모든 서버들이 공유하는 별도의 세션 저장소를 사용한다.
  • 특정 서버가 고장나도, 세션을 잃어버리지 않는다.
    • 그러나, 세션 저장소가 고장나면 모든 서버들의 세션을 잃어버릴 수도 있다.

참고자료

Thank You for Visiting My Blog, Have a Good Day 😆
© 2025 Web Developer Shin, Powered By Gatsby.