Cookie / Session / Cache

박태현·2025년 4월 22일

Web & Network

목록 보기
1/6

웹 브라우저에 저장하는 key-value 구조의 데이터

웹사이트와 사용자의 브라우저 사이에 정보를 기록하고 유지하기 위해 사용됩니다

HTTP 프로토콜은 기본적으로 무상태이기 때문에, 쿠키는 서버가 클라이언트를 식별하고, 상태 정보를 유지하는데 사용됩니다.

쿠키의 특징

  • 구성 요소 : 이름 - 값, 만료일( 저장기간 ) , 경로 정보
  • 저장 개수 제한 일반적으로 도메인당 최대 50개 이하 저장 가능, 쿠키의 크기는 최대 4KB

쿠키의 인증 방식

  1. 브라우저( 클라이언트 )가 서버에 요청을 전송
  2. 서버는 클라이언트의 요청에 대한 응답을 작성할 때, 클라이언트 측에 저장하고 싶은 정보를 응답 헤더의 Set-Cookie에 담아 전송합니다.
  3. 이후 해당 클라이언트는 요청을 보낼 때마다, 매번 저장된 쿠키를 요청 헤더의 Cookie에 담아 보내며, 서버는 쿠키에 담긴 정보를 바탕으로 해당 요청의 클라이언트가 누군지 식별하거나 상태 정보를 확인합니다.

장점

HTTP 프로토콜은 기본적으로 무상태이기 때문에, 쿠키는 서버가 클라이언트를 식별하고, 상태 정보를 유지하는데 사용할 수 있음

( 로그인 유지, 상태 정보 유지 등등 )

단점

보안에 매우 취약하고, 용량에 제한이 있기에 많은 정보를 담을 수 없습니다.

브라우저 간의 공유가 불가능합니다.

Session


웹에서 사용자가 웹사이트에 접속한 순간부터 종료할 때까지의 일정 기간 동안, 사용자 관련 정보를 서버에 저장하고 관리하는 기술

세션의 작동 원리

  1. 유저가 웹사이트에서 로그인하면 세션이 서버 메모리( 혹은 데이터베이스 ) 상에 저장됩니다.

    ( 이때, 세션을 식별하기 위한 Session Id를 기준으로 정보를 저장합니다. )

  2. 서버에서 브라우저에 세션 쿠키 형태로 Session Id를 저장합니다.

    세션 쿠키 : 만료 기한을 명시적으로 설정하지 않은 쿠키

    ⇒ 만료 기한이 없으면 브라우저는 해당 쿠키를 현재 세션이 유지되는 동안만 메모리에 저장합니다.

    ⇒ 따라서 사용자가 브라우저 창을 닫거나 종료하면, 브라우저의 이 세션 쿠키도 함께 삭제됩니다

    ⇒ 이후 사용자가 다시 브라우저를 접속해도 서버로 보낼 세션 ID를 가지고 있지 않기에 새로운 사용자라고 인식합니다.

  3. 쿠키에 정보가 담겨있기 때문에 브라우저는 해당 사이트에 대한 모든 Request에 Session Id를 쿠키에 담아 전송합니다.

    서버는 클라이언트가 보낸 Session Id 와 서버 메모리로 관리하고 있는 Session Id를 비교하여 인증을 수행합니다.

Cookie와 Session의 차이


쿠키는 브라우저에 저장되며, 세션은 서버단에서 저장됩니다.

세션, 쿠키 중 어떤걸 사용할까

세션은 서버에 사용자 정보를 저장하지만, 쿠키는 클라이언트에 데이터를 저장하므로 서버의 부하를 줄이고 확장성을 높이기 위해 세션 대신 쿠키를 사용하지만, 데이터에 민감할 경우 JWT + Cookie 조합을 사용하기도 합니다

Cache


나중에 다시 필요할 데이터나 계산 결과를 임시로 저장해 두는 빠르고 작은 저장소

작동 원리

  1. 시스템이 어떤 데이터를 요청합니다.
  2. 먼저 캐시를 확인하여 데이터가 저장되어 있는지 확인합니다
  3. 데이터가 캐시에 있으면( Cache Hit ), DB와 같은 저장소에 접근할 필요 없이 즉시 데이터를 반환합니다.
  4. 데이터가 캐시에 없으면( Cache Miss ), 느린 저장소에서 데이터를 가져와 요청자에게 전달하고, 동시에 그 데이터를 캐시에 복사해 둡니다. ⇒ 다음 요청 시에는 빠르게 응답하기 위함

캐싱이란

데이터나 계산 결과를 캐시에 저장하는 행위

주로 데이터를 반복적으로 가져오거나 계산하는 작업을 최소화하고 성능을 향상시키기 위해 사용합니다.

캐시의 장점

  • 속도 향상 : 데이터를 메모리와 같은 빠른 저장소에 저장하므로 접근 속도가 빨라집니다.
  • 부하 감소 : 데이터베이스, API 서버에 대한 반복적인 요청을 줄여 부하를 크게 줄입니다.

캐시의 종류 ( 다양한 위치에서 사용 )

캐시는 웹 서비스의 다양한 계층에서 사용됩니다.

  • CPU 캐시 : CPU와 메모리 사이에 위치하여 가장 빠른 속도를 제공합니다.
  • 웹 브라우저 캐시 : 사용자가 방문한 웹페이지의 이미지, CSS, JS 파일 등을 로컬에 저장합니다.
  • 프록시/CDN 캐시 : 여러 사용자에게 공통적으로 사용되는 콘텐츠를 사용자와 가까운 위치에 저장합니다.
  • 데이터베이스 캐시 : 자주 사용되는 쿼리 결과를 저장하여 DB 서버의 부하를 줄입니다.
  • 애플리케이션 서버 캐시 ( Redis, Memcached ): 웹 애플리케이션의 세션 데이터, 자주 사용되는 계산 결과 등을 저장하여 애플리케이션의 응답 속도를 높입니다.
profile
꾸준하게

0개의 댓글