개인공부/CS 공부

쿠키 vs 세션 vs 토큰 vs 캐시 VS CDN

소소한필통 2022. 11. 28. 15:42

이번 국민은행 1차 면접때 옆 지원자가 이 관련 질문을 받았었다.

만약 나에게 이 질문이 왔으면 대답할 수 있었을까, 하며 알아보기 시작했다.

비연결성과 비상태성

위의 내용을 알아보기에 앞서 HTTP 프로토콜에 비연결성과 비상태성이라는 특징을 알아야한다.

서버의 자원을 절약하기 위해 모든 사용자의 요청마다 연결과 해제의 과정을 거치기 때문에 연결 상태가 유지되지 않고, 연결 해제 후에 상태 정보가 저장되지 않는다는 것입니다.

HTTP의 비연결성과 비상태성을 보완하여 웹환경에서 반복적으로 사용되는 데이터나 정보를 종류와 특성에 맞게 저장하고 재활용하기 위해 사용하는 방식들이라는 것이다.

쿠키

정의 : 쿠키는 브라우저에 저장되는 작은 텍스트 조각

  • 브라우저는 사용자의 컴퓨터에 설치된 소프트웨어이므로 쿠키는 사용자가 갖고 있는 정보이다.
  • 데이터 형태
    • KEY와 VALUE로 구성되고 String 형태로 이루어져 있음

목적

  • 세션 관리
    • 로그인, 사용자의 닉네임, 접속 시간, 장바구니 등의 서버가 알아야할 정보들을 저장
  • 개인화
    • 사용자마다 다르게 그 사람에 적절한 페이지를 보여줄 수 있음
  • 트래킹
    • 사용자의 행동과 패턴을 분석하고 기록

주의점

  • 개인 정보를 담은 내용이나 보안 상 민감한 정보는 저장하면 안된다.
    • 쿠키는 사용자가 수정, 삭제할 수 있고, 제 3자가 조회하는 것도 가능하기 때문에

예시

  • 웹툰 목록, 웹페이지 다크모드 설정여부

세션

정의 : 로그인 여부 등 사용자와 서버의 관계가 기억되어 보존되고 있는 상태

  • 세션은 데이터들이 접속 중인 웹 서버에 저장된다.
  • 쿠키보다 상대적으로 안전하다(서버에서 세션 내용을 관리 할 수 있다)

특징

  • 웹서버에 웹 컨테이너의 상태를 유지하기 위한 정보를 저장
  • 웹서버에 저장되는 쿠키(=세션쿠키)
  • 브라우저를 닫거나, 서버에서 세션을 삭제했을 때 삭제되므로, 쿠키보다 보안이 좋다.
  • 저장데이터에 제한이 없다
  • 각 클라이언트의 고유세션ID를 부여한다.
  • 세션ID로 클라이언트를 구분하여 각 클라이언트 요구에 맞는 서비스를 제공한다.

주의점

  • 서버에 데이터를 저장하므로 세션 양이 많아질 수록 서버에 부하가 커지므로 부하를 생각해야한다.

세션 동작순서

  1. 클라이언트 요청
  2. 서버는 접근 클라이언트의 Request-Header필드인 cookie를 확인하여, 클라이언트가 해당 세션ID를 보냈는지 확인
  3. 세션ID가 존재하지 않는다면, 서버는 세션ID를 생성해 클라이언트에게 전송
  4. 서버에서 클라이언트로 준 세션 ID를 쿠키를 사용해 서버에 저장한다.
  5. 클라이언트는 재접속시, 이 쿠키를 이용하여 세션ID값을 서버에 전달한다.

토큰방식

정의

  • 해당 서버만이 만들 수 있는 토큰을 발급함으로써 상태를 저장하지 않고도 사용자의 로그인 여부를 파악할 수 있도록 하는 것

주의점

  • 한 번 로그인한 사용자의 상태는 토큰이 만료 될 때까지 제어가 불가능함.
    • 이를 방지하기 위해서 토큰의 만료 시간을 짧게 지정해 피해를 줄일 수 있음(하이)

장점

  • 서버에 자체적인 알고리즘이 있기 때문에 상태를 따로 기억해 둘 필요가 없음

캐시(cache)

정의

  • 한 번 전송받은 데이터는 저장해 놨다가 다시 사용할 때 꺼내 쓸 수 있게 하는 것

쿠키와 비교

  • 공통 : 모두 정보를 저장하여 재활용하는 기술
  • 차이 : 쿠키 -> 사용자의 수고를 덜어주는데 목적, 캐시 -> 데이터의 전송량을 줄이고 서비스 이용 속도를 높이는 데

CDN

정의

  • 여러 지역에 설치된 캐시 서버들을 사용하여 본 서버로 ㄷ르어오는 요청들을 분산 처리하는 서비스