Home 쿠키, 세션, 토큰, 캐시, CDN
Post
Cancel

쿠키, 세션, 토큰, 캐시, CDN

목적: 효율적인 웹 운영과 사용을 위해 데이터가 저장되는 다섯 가지 개념인 쿠키, 세션, 토큰, 캐시, CDN 에 대해 알아봅니다.

  • 반복되는 작업을 줄일수록 좋습니다.
  • 웹사이트에 접속할때 마다 매번 로그인해야 한다면 웹사이트를 이용하는 것은 스트레스 일 것입니다.
  • 때문에 이러한 정보는 한 번 작성하거나 사용한 뒤에는 반복적으로 작업하지 않도록 저장해 두는 것이 효율적입니다.
  • 웹 환경에서 이처럼 반복적으로 사용되는 데이터나 정보를 종류와 특성에 맞게 저장하고 재활용하기 위해 여러 방식을 사용합니다.

1. 브라우저에 저장되는 정보 <쿠키>

쿠키는 웹 브라우저에 저장되는 작은 텍스트 파일로, 사용자의 웹 활동 정보를 기록합니다. 쿠키는 사용자의 컴퓨터에 설치된 브라우저에 저장되므로 사용자에게 속한 정보라고 볼 수 있습니다.

쿠키의 역할:

  • 사용자 편의성 향상:
    • 로그인 유지: 쇼핑 사이트 로그인 정보를 저장하여 반복적인 로그인을 생략합니다.
    • 장바구니 유지: 쇼핑 사이트 장바구니에 담은 상품을 유지합니다.
    • 검색 기록 저장: 검색 기록을 저장하여 이전 검색어를 쉽게 찾아볼 수 있습니다.
    • 맞춤형 서비스 제공: 사용자의 선호도를 분석하여 맞춤형 광고나 콘텐츠를 제공합니다.
  • 웹사이트 운영:
    • 방문자 분석: 웹사이트 방문자 수, 페이지 조회 수 등을 분석합니다.
    • 트래픽 추적: 사용자의 웹사이트 이용 경로를 추적합니다.
    • 오류 진단: 웹사이트 오류 진단에 도움을 줍니다.

쿠키의 특징:

  • 사용자 컴퓨터에 저장: 쿠키는 웹 서버가 사용자 컴퓨터에 직접 저장합니다.
  • 소량의 데이터: 쿠키는 작은 텍스트 파일로, 저장할 수 있는 데이터 양이 제한됩니다.
  • 만료 기간: 쿠키는 설정된 만료 기간까지 유지되거나 사용자에 의해 삭제될 수 있습니다.
  • 제3자 접근: 쿠키는 당사자뿐만 아니라 제3자가 조회할 수 있습니다.

쿠키 종류:

  • 당사자 쿠키: 웹사이트 운영자가 직접 생성하는 쿠키입니다.
  • 제3자 쿠키: 광고 네트워크와 같은 제3자가 생성하는 쿠키입니다.

쿠키 보안:

  • 쿠키는 개인정보를 포함할 수 있으므로 보안에 유의해야 합니다.
  • 쿠키 설정을 통해 개인정보 보호 수준을 조정할 수 있습니다.
  • 사용하지 않는 쿠키는 삭제하는 것이 좋습니다.

쿠키 활용 예시:

  • 웹툰 목록: 읽은 웹툰 목록을 쿠키에 저장하여 다음 방문 시 쉽게 찾아볼 수 있도록 합니다.
  • 웹 페이지 다크 모드: 사용자가 선택한 웹 페이지 다크 모드 설정을 쿠키에 저장하여 다음 방문 시 유지합니다.

쿠키 이해의 중요성:

  • 쿠키는 세션과 토큰 구현에 중요한 역할을 합니다.
  • 쿠키를 이해하면 웹 브라우저 및 웹사이트 작동 방식을 더 잘 이해할 수 있습니다.

2. 서버가 나를 알아보는 방법 <세션>

세션은 사용자가 웹 사이트에 로그인한 후 서버와 사용자 간의 상태를 유지하는 기술입니다. 세션을 사용하면 서버는 사용자를 식별하고 사용자의 이전 행동과 현재 요청을 연결할 수 있습니다.

세션 작동 방식:

  1. 사용자가 로그인하면 서버는 세션 ID를 생성하고 사용자에게 전달합니다.
  2. 세션 ID는 쿠키 또는 URL에 포함되어 사용자에게 전달됩니다.
  3. 사용자가 사이트를 방문할 때마다 세션 ID를 서버에 전송합니다.
  4. 서버는 세션 ID를 사용하여 사용자 정보 및 이전 행동을 확인합니다.

세션의 장점:

  • 사용자 인증 및 권한 관리
  • 사용자 맞춤형 서비스 제공
  • 웹 사이트 이용 편의성 향상

세션의 단점:

  • 서버 부담 증가
  • 세션 만료 또는 공격 시 사용 불편
  • 확장성 제한

세션 활용 예시:

  • 로그인 유지: 사용자가 로그인한 상태를 유지하여 반복적인 로그인을 방지합니다.
  • 장바구니 유지: 쇼핑 사이트 장바구니에 담은 상품을 유지합니다.
  • 최근 방문 페이지 기록: 최근 방문 페이지를 기록하여 사용자가 쉽게 찾아볼 수 있도록 합니다.

세션 만료:

  • 세션은 설정된 시간이 지나면 만료됩니다.
  • 사용자가 로그아웃하면 세션은 삭제됩니다.

세션 보안:

  • 세션 ID는 암호화되어야 합니다.
  • 세션 만료 시간을 적절하게 설정해야 합니다.
  • 세션 공격에 대한 예방 조치를 취해야 합니다.

세션 저장 방법:

  • 서버 메모리
  • 데이터베이스
  • 캐시

3. 세션과 또 다른 로그인 유지 방식 <토큰>

1. 개요

  • 세션과 토큰은 웹 애플리케이션에서 사용자 인증 및 상태 유지를 위한 기술입니다.
  • 각 기술은 장단점이 있으며 상황에 따라 적합한 기술을 선택해야 합니다.

2. 세션

  • 정의: 서버 메모리에 사용자 정보 및 로그인 상태를 저장하는 기술
  • 장점:
    • 사용자 상태 유지 가능 (최근 방문 페이지 등)
    • 개발 편리
  • 단점:
    • 서버 부담 증가
    • 확장성 문제
    • 멀티 디바이스 지원 어려움
    • CSRF 공격 취약

3. 토큰

  • 정의: 클라이언트(브라우저)에 저장되는 사용자 인증 정보
  • 장점:
    • 확장성 우수 (서버 부담 감소)
    • 멀티 디바이스 지원 용이
    • stateless 프로토콜(HTTP) 적합
  • 단점:
    • 클라이언트 토큰 탈취 위험
    • stateless 프로토콜만 지원
    • 사용자 상태 통제 어려움

4. 세션 vs 토큰

구분세션토큰
저장 위치서버클라이언트
작동 방식서버 측 상태 유지클라이언트 측 상태 유지
장점- 사용자 상태 유지 가능 - 개발 편리- 확장성 우수 - 멀티 디바이스 지원 용이 - stateless 프로토콜(HTTP) 적합
단점- 서버 부담 증가 - 확장성 문제 - 멀티 디바이스 지원 어려움 - CSRF 공격 취약- 클라이언트 토큰 탈취 위험 - stateless 프로토콜만 지원 - 사용자 상태 통제 어려움

5. 적합한 상황

  • 세션:
    • 사용자 상태 유지가 필요한 경우 (최근 방문 페이지 등)
    • 개발 편리성을 중요시하는 경우
  • 토큰:
    • 확장성이 중요한 경우 (서버 부담 감소)
    • 멀티 디바이스 지원이 필요한 경우
    • stateless 프로토콜(HTTP) 사용하는 경우

6. 추가 고려 사항

  • 보안:
    • 세션은 서버 메모리에 저장되어 공격에 취약할 수 있습니다.
    • 토큰은 클라이언트에 저장되어 탈취 위험이 있습니다.
  • 확장성:
    • 세션은 서버 메모리 용량에 따라 확장성이 제한됩니다.
    • 토큰은 클라이언트에 저장되어 확장성에 영향을 미치지 않습니다.
  • 개발 편의성:
    • 세션은 개발 및 사용이 비교적 간편합니다.
    • 토큰은 개발 및 사용에 추가적인 작업이 필요할 수 있습니다.

4. 정송량은 줄이고 속도는 높이고 <캐시>

1. 개요

캐시(cache)는 웹 사이트, 앱 등에서 자주 사용하는 데이터를 임시로 저장하여 속도를 높이고 데이터 사용량을 줄이는 기술입니다.

2. 작동 방식

  1. 사용자가 처음으로 데이터를 요청하면 서버로부터 데이터를 받아 캐시에 저장합니다.
  2. 사용자가 같은 데이터를 다시 요청하면 서버로부터 다시 받는 대신 캐시에서 불러와 사용합니다.

3. 장점

  • 속도 향상: 서버로부터 데이터를 받는 시간을 줄여 페이지 로딩 속도를 높입니다.
  • 데이터 사용량 감소: 반복적으로 사용하는 데이터를 서버로부터 받는 횟수를 줄여 데이터 사용량을 줄입니다.
  • 서버 부하 감소: 서버에 대한 요청 횟수를 줄여 서버 부하를 감소시킵니다.

4. 단점

  • 캐시 오류 가능성: 캐시 데이터가 손상되거나 만료되면 오류가 발생할 수 있습니다.
  • 저장 공간 제한: 캐시에 저장할 수 있는 데이터 공간은 제한되어 있습니다.
  • 최신 데이터 불일치 가능성: 캐시된 데이터가 최신 데이터와 일치하지 않을 수 있습니다.

5. 캐시 활용 예시

  • 웹 페이지 이미지, 동영상, JavaScript 파일
  • 온라인 게임 맵, 캐릭터 모델
  • 앱 아이콘, 데이터베이스 쿼리 결과

6. 캐시 유형

  • 브라우저 캐시: 웹 브라우저에서 사용하는 캐시
  • 앱 캐시: 앱에서 사용하는 캐시
  • 서버 캐시: 서버에서 사용하는 캐시

7. 캐시 관리

  • 캐시 삭제: 캐시를 삭제하면 저장된 데이터가 모두 삭제됩니다.
  • 캐시 만료 시간 설정: 캐시 만료 시간을 설정하면 설정된 시간 이후에는 캐시된 데이터가 삭제됩니다.

쿠키와 캐시 비교

쿠키와 캐시는 모두 웹 브라우저에 정보를 저장하는 기술이지만, 저장 목적, 저장 위치, 사용 방식에서 차이점을 가지고 있습니다.

1. 저장 목적

  • 쿠키:
    • 사용자 인증 정보 (로그인 여부, 사용자 설정 등)
    • 사용자 추적 (방문 기록, 광고 타겟팅 등)
  • 캐시:
    • 웹 페이지 요소 (이미지, JavaScript 파일, CSS 파일 등)
    • 웹 페이지 로딩 속도 향상

2. 저장 위치

  • 쿠키:
    • 클라이언트(브라우저)
  • 캐시:
    • 클라이언트(브라우저)

3. 사용 방식

  • 쿠키:
    • HTTP 요청 헤더에 포함되어 서버에 전송
    • 서버는 쿠키 정보를 사용하여 사용자 식별 및 맞춤화 서비스 제공
  • 캐시:
    • 브라우저가 직접 관리
    • 웹 페이지 로딩 시 서버에 요청하지 않고 캐시에서 불러와 사용

4. 장단점 비교

구분쿠키캐시
장점- 사용자 인증 및 맞춤화 서비스 제공 - 서버 부담 감소- 웹 페이지 로딩 속도 향상 - 데이터 전송량 감소
단점- 개인정보 침해 우려 - 보안 취약점 - 서버 부담 증가- 저장 공간 제한 - 캐시 오류 가능성
보안- 개인정보 포함으로 취약- 비교적 안전
사용 예시- 로그인 유지 - 쇼핑몰 장바구니 - 추천 시스템- 웹 페이지 이미지 - 동영상 - JavaScript 파일

5. 서버 부담은 줄이고 사용자와는 가깝게

CDN 정리

1. 개요

CDN(Content Delivery Network)은 전 세계 여러 지역에 분산된 서버를 사용하여 웹 콘텐츠를 사용자와 가까운 서버에서 전송함으로써 콘텐츠 로딩 속도를 높이는 기술입니다.

2. 작동 방식

  1. 사용자가 웹 콘텐츠를 요청하면 CDN 서버가 요청을 처리합니다.
  2. CDN 서버는 요청된 콘텐츠가 캐시에 있는 경우 캐시에서 제공하고, 캐시에 없는 경우 원본 서버로부터 콘텐츠를 가져와 캐시에 저장 후 제공합니다.
  3. 사용자는 CDN 서버로부터 콘텐츠를 받아 사용합니다.

3. CDN의 장점

  • 사용자 경험 향상: 콘텐츠 로딩 속도를 높여 사용자 경험을 향상시킵니다.
  • 서버 부하 감소: 원본 서버의 부하를 줄여줍니다.
  • 데이터 사용량 감소: 캐싱을 통해 데이터 사용량을 줄여줍니다.
  • 가용성 향상: CDN 서버가 다운되어도 다른 서버에서 콘텐츠를 제공할 수 있어 가용성을 향상시킵니다.

4. CDN의 단점

  • 설치 및 운영 비용: CDN 서버를 설치 및 운영하는 데 비용이 발생합니다.
  • 보안 문제: CDN 서버에 저장된 콘텐츠가 유출될 위험이 있습니다.
  • 복잡한 설정: CDN을 설정하고 관리하는 것이 복잡할 수 있습니다.

5. CDN 활용 예시

  • 웹 사이트 이미지, 동영상, JavaScript 파일
  • 온라인 게임 맵, 캐릭터 모델
  • 앱 아이콘, 데이터베이스 쿼리 결과

6. CDN 제공업체

  • Akamai
  • Cloudflare
  • Amazon CloudFront
  • Google Cloud CDN
  • Microsoft Azure CDN

선착순 쿠폰 발급 시스템 (3) LOCUST 부하 테스트 구축

TDD(1장, 2장) 정리