본문 바로가기

Backend study/Backend theory

세션(Session), 쿠키(Cookie), 캐시(Cache)

1. 세션(Session)

세션은 서버와 클라이언트 간의 상태를 유지하는 방법 중 하나이다. 웹은 기본적으로 무상태(stateless) 프로토콜인 HTTP를 사용하기 때문에, 서버는 클라이언트의 이전 요청이나 상태를 기억하지 못한다. 따라서, 세션은 서버 측에서 사용자와의 상호작용 상태를 유지하기 위한 중요한 기법이다.

  • 세션의 동작 방식:
    1. 사용자가 웹사이트에 처음 접속하면, 서버는 그 사용자에게 고유한 세션 ID를 생성한다.
    2. 이 세션 ID는 일반적으로 쿠키를 통해 클라이언트에 저장된다.
    3. 사용자가 동일한 서버에 다시 요청을 보내면, 쿠키에 저장된 세션 ID를 서버에 전송하여 서버는 해당 사용자의 상태를 유지할 수 있게 된다.
    4. 세션은 주로 서버의 메모리나 데이터베이스에 저장되며, 로그인 정보나 장바구니 정보와 같은 상태를 저장한다.
    5. 세션은 일정 시간이 지나면 만료된다. (예: 30분 동안 활동이 없으면 자동 로그아웃)
  • 특징:
    • 서버에 데이터를 저장하므로, 서버 부담이 있을 수 있다.
    • 클라이언트 측에 저장된 정보는 최소화되고, 중요한 데이터는 서버에서 관리한다.
    • 상태 유지를 위해 매번 클라이언트에서 세션 ID를 서버로 전송해야 한다.

 

2. 쿠키(Cookie)

쿠키는 클라이언트 측에서 데이터를 저장하는 방식으로, 짧은 텍스트 파일 형태로 사용자의 브라우저에 저장된다. 서버는 사용자의 요청을 받을 때마다 쿠키를 함께 전달받고, 이를 통해 사용자에 대한 정보를 유지할 수 있다.

  • 쿠키의 동작 방식:
    1. 서버는 특정 데이터를 쿠키에 저장하도록 클라이언트에 지시한다.
    2. 쿠키에는 만료 기간, 도메인, 경로 등의 정보가 포함될 수 있다.
    3. 클라이언트는 쿠키를 브라우저에 저장하며, 이후 같은 도메인으로 요청을 보낼 때 쿠키를 자동으로 함께 전송한다.
    4. 서버는 쿠키 정보를 읽어, 사용자의 상태를 추적하거나 맞춤형 서비스를 제공한다.
  • 특징:
    • 클라이언트 측에 저장되며, 브라우저를 닫아도 정보가 유지된다(만료 기간이 설정되지 않는 한).
    • 데이터 용량 제한이 있으며, 일반적으로 쿠키당 약 4KB 정도의 크기를 가진다.
    • 민감한 정보를 쿠키에 저장하면 보안 위험이 있을 수 있으므로, 중요한 정보는 일반적으로 저장하지 않는다.
    • 사용자는 쿠키를 삭제하거나 차단할 수 있다.

 

3. 캐시(Cache)

캐시는 클라이언트 측에서 웹 리소스(이미지, CSS, JavaScript 파일 등)를 일시적으로 저장하여, 동일한 리소스에 대한 재요청 시 더 빠르게 접근할 수 있게 해주는 메커니즘이다.

  • 캐시의 동작 방식:
    1. 사용자가 웹사이트에 처음 방문할 때, 서버로부터 요청한 리소스(예: 이미지, CSS 파일 등)가 로드된다.
    2. 브라우저는 이러한 리소스를 캐시에 저장하고, 설정된 기간 동안 재방문 시 같은 리소스를 서버에 다시 요청하지 않고 캐시에서 가져온다.
    3. 캐시는 설정된 만료 기간이 지나거나, 리소스가 변경되면 새롭게 갱신된다.
  • 특징:
    • 클라이언트의 브라우저 또는 서버 측에서 관리된다.
    • 페이지 로딩 속도를 크게 개선할 수 있다.
    • 사용자의 요청을 서버로 다시 보내지 않으므로, 서버 부하를 줄일 수 있다.
    • 캐시가 오래된 데이터를 제공할 경우, 데이터 동기화 문제가 발생할 수 있다.

세션, 쿠키, 캐시의 차이점

구분 세션(Session) 쿠키(Cookie) 캐시(Cache)

저장 위치 서버 측에서 관리 클라이언트(브라우저) 측에 저장 클라이언트(브라우저) 또는 서버 측
저장 데이터 사용자 상태 정보 (로그인, 장바구니 등) 사용자 정보 및 설정 (짧은 텍스트 데이터) 웹 리소스 (이미지, CSS 파일 등)
만료 시점 일반적으로 일정 시간이 지나면 만료 설정된 만료 기간까지 유지 설정된 만료 기간 또는 리소스 갱신 시
보안 서버 측에 중요한 정보가 저장되므로 비교적 안전 쿠키에 저장된 정보는 탈취 위험이 있음 민감한 정보를 저장하지 않음
용도 로그인 상태 유지, 장바구니, 개인 설정 사용자 설정 저장, 간편 로그인 페이지 로딩 속도 개선

 

  • 세션은 서버가 사용자의 상태를 기억할 수 있도록 하는 서버 측 상태 관리 방법이다. 주로 사용자 인증 정보, 장바구니 정보와 같은 중요한 데이터를 다룬다.
  • 쿠키는 클라이언트 측에 작은 데이터를 저장하여, 사용자의 세션 ID나 사이트 설정 등을 관리한다.
  • 캐시는 웹 페이지의 리소스(이미지, 스크립트 등)를 브라우저에 저장하여, 페이지를 빠르게 로드할 수 있도록 한다.

이 세 가지는 모두 웹 애플리케이션의 성능과 사용자 경험을 향상시키기 위해 사용되며, 목적과 사용되는 위치에 따라 차이점이 있다.

728x90

'Backend study > Backend theory' 카테고리의 다른 글

HTTP Content-Type  (1) 2024.09.13
비동기(Asynchronous)와 동기(Synchronous)  (0) 2024.09.11
REST API  (0) 2024.09.09
컨테이너 오케스트레이션  (3) 2024.09.06
Docker - Docker Compose  (0) 2024.09.06