목적: 효율적인 웹 운영과 사용을 위해 데이터가 저장되는 다섯 가지 개념인 쿠키, 세션, 토큰, 캐시, CDN 에 대해 알아봅니다.
- 반복되는 작업을 줄일수록 좋습니다.
- 웹사이트에 접속할때 마다 매번 로그인해야 한다면 웹사이트를 이용하는 것은 스트레스 일 것입니다.
- 때문에 이러한 정보는 한 번 작성하거나 사용한 뒤에는 반복적으로 작업하지 않도록 저장해 두는 것이 효율적입니다.
- 웹 환경에서 이처럼 반복적으로 사용되는 데이터나 정보를 종류와 특성에 맞게 저장하고 재활용하기 위해 여러 방식을 사용합니다.
1. 브라우저에 저장되는 정보 <쿠키>쿠키>
쿠키는 웹 브라우저에 저장되는 작은 텍스트 파일로, 사용자의 웹 활동 정보를 기록합니다. 쿠키는 사용자의 컴퓨터에 설치된 브라우저에 저장되므로 사용자에게 속한 정보라고 볼 수 있습니다.
쿠키의 역할:
- 사용자 편의성 향상:
- 로그인 유지: 쇼핑 사이트 로그인 정보를 저장하여 반복적인 로그인을 생략합니다.
- 장바구니 유지: 쇼핑 사이트 장바구니에 담은 상품을 유지합니다.
- 검색 기록 저장: 검색 기록을 저장하여 이전 검색어를 쉽게 찾아볼 수 있습니다.
- 맞춤형 서비스 제공: 사용자의 선호도를 분석하여 맞춤형 광고나 콘텐츠를 제공합니다.
- 웹사이트 운영:
- 방문자 분석: 웹사이트 방문자 수, 페이지 조회 수 등을 분석합니다.
- 트래픽 추적: 사용자의 웹사이트 이용 경로를 추적합니다.
- 오류 진단: 웹사이트 오류 진단에 도움을 줍니다.
쿠키의 특징:
- 사용자 컴퓨터에 저장: 쿠키는 웹 서버가 사용자 컴퓨터에 직접 저장합니다.
- 소량의 데이터: 쿠키는 작은 텍스트 파일로, 저장할 수 있는 데이터 양이 제한됩니다.
- 만료 기간: 쿠키는 설정된 만료 기간까지 유지되거나 사용자에 의해 삭제될 수 있습니다.
- 제3자 접근: 쿠키는 당사자뿐만 아니라 제3자가 조회할 수 있습니다.
쿠키 종류:
- 당사자 쿠키: 웹사이트 운영자가 직접 생성하는 쿠키입니다.
- 제3자 쿠키: 광고 네트워크와 같은 제3자가 생성하는 쿠키입니다.
쿠키 보안:
- 쿠키는 개인정보를 포함할 수 있으므로 보안에 유의해야 합니다.
- 쿠키 설정을 통해 개인정보 보호 수준을 조정할 수 있습니다.
- 사용하지 않는 쿠키는 삭제하는 것이 좋습니다.
쿠키 활용 예시:
- 웹툰 목록: 읽은 웹툰 목록을 쿠키에 저장하여 다음 방문 시 쉽게 찾아볼 수 있도록 합니다.
- 웹 페이지 다크 모드: 사용자가 선택한 웹 페이지 다크 모드 설정을 쿠키에 저장하여 다음 방문 시 유지합니다.
쿠키 이해의 중요성:
- 쿠키는 세션과 토큰 구현에 중요한 역할을 합니다.
- 쿠키를 이해하면 웹 브라우저 및 웹사이트 작동 방식을 더 잘 이해할 수 있습니다.
2. 서버가 나를 알아보는 방법 <세션>세션>
세션은 사용자가 웹 사이트에 로그인한 후 서버와 사용자 간의 상태를 유지하는 기술입니다. 세션을 사용하면 서버는 사용자를 식별하고 사용자의 이전 행동과 현재 요청을 연결할 수 있습니다.
세션 작동 방식:
- 사용자가 로그인하면 서버는 세션 ID를 생성하고 사용자에게 전달합니다.
- 세션 ID는 쿠키 또는 URL에 포함되어 사용자에게 전달됩니다.
- 사용자가 사이트를 방문할 때마다 세션 ID를 서버에 전송합니다.
- 서버는 세션 ID를 사용하여 사용자 정보 및 이전 행동을 확인합니다.
세션의 장점:
- 사용자 인증 및 권한 관리
- 사용자 맞춤형 서비스 제공
- 웹 사이트 이용 편의성 향상
세션의 단점:
- 서버 부담 증가
- 세션 만료 또는 공격 시 사용 불편
- 확장성 제한
세션 활용 예시:
- 로그인 유지: 사용자가 로그인한 상태를 유지하여 반복적인 로그인을 방지합니다.
- 장바구니 유지: 쇼핑 사이트 장바구니에 담은 상품을 유지합니다.
- 최근 방문 페이지 기록: 최근 방문 페이지를 기록하여 사용자가 쉽게 찾아볼 수 있도록 합니다.
세션 만료:
- 세션은 설정된 시간이 지나면 만료됩니다.
- 사용자가 로그아웃하면 세션은 삭제됩니다.
세션 보안:
- 세션 ID는 암호화되어야 합니다.
- 세션 만료 시간을 적절하게 설정해야 합니다.
- 세션 공격에 대한 예방 조치를 취해야 합니다.
세션 저장 방법:
- 서버 메모리
- 데이터베이스
- 캐시
3. 세션과 또 다른 로그인 유지 방식 <토큰>토큰>
1. 개요
- 세션과 토큰은 웹 애플리케이션에서 사용자 인증 및 상태 유지를 위한 기술입니다.
- 각 기술은 장단점이 있으며 상황에 따라 적합한 기술을 선택해야 합니다.
2. 세션
- 정의: 서버 메모리에 사용자 정보 및 로그인 상태를 저장하는 기술
- 장점:
- 사용자 상태 유지 가능 (최근 방문 페이지 등)
- 개발 편리
- 단점:
- 서버 부담 증가
- 확장성 문제
- 멀티 디바이스 지원 어려움
- CSRF 공격 취약
3. 토큰
- 정의: 클라이언트(브라우저)에 저장되는 사용자 인증 정보
- 장점:
- 확장성 우수 (서버 부담 감소)
- 멀티 디바이스 지원 용이
- stateless 프로토콜(HTTP) 적합
- 단점:
- 클라이언트 토큰 탈취 위험
- stateless 프로토콜만 지원
- 사용자 상태 통제 어려움
4. 세션 vs 토큰
| 구분 | 세션 | 토큰 |
|---|---|---|
| 저장 위치 | 서버 | 클라이언트 |
| 작동 방식 | 서버 측 상태 유지 | 클라이언트 측 상태 유지 |
| 장점 | - 사용자 상태 유지 가능 - 개발 편리 | - 확장성 우수 - 멀티 디바이스 지원 용이 - stateless 프로토콜(HTTP) 적합 |
| 단점 | - 서버 부담 증가 - 확장성 문제 - 멀티 디바이스 지원 어려움 - CSRF 공격 취약 | - 클라이언트 토큰 탈취 위험 - stateless 프로토콜만 지원 - 사용자 상태 통제 어려움 |
5. 적합한 상황
- 세션:
- 사용자 상태 유지가 필요한 경우 (최근 방문 페이지 등)
- 개발 편리성을 중요시하는 경우
- 토큰:
- 확장성이 중요한 경우 (서버 부담 감소)
- 멀티 디바이스 지원이 필요한 경우
- stateless 프로토콜(HTTP) 사용하는 경우
6. 추가 고려 사항
- 보안:
- 세션은 서버 메모리에 저장되어 공격에 취약할 수 있습니다.
- 토큰은 클라이언트에 저장되어 탈취 위험이 있습니다.
- 확장성:
- 세션은 서버 메모리 용량에 따라 확장성이 제한됩니다.
- 토큰은 클라이언트에 저장되어 확장성에 영향을 미치지 않습니다.
- 개발 편의성:
- 세션은 개발 및 사용이 비교적 간편합니다.
- 토큰은 개발 및 사용에 추가적인 작업이 필요할 수 있습니다.
4. 정송량은 줄이고 속도는 높이고 <캐시>캐시>
1. 개요
캐시(cache)는 웹 사이트, 앱 등에서 자주 사용하는 데이터를 임시로 저장하여 속도를 높이고 데이터 사용량을 줄이는 기술입니다.
2. 작동 방식
- 사용자가 처음으로 데이터를 요청하면 서버로부터 데이터를 받아 캐시에 저장합니다.
- 사용자가 같은 데이터를 다시 요청하면 서버로부터 다시 받는 대신 캐시에서 불러와 사용합니다.
3. 장점
- 속도 향상: 서버로부터 데이터를 받는 시간을 줄여 페이지 로딩 속도를 높입니다.
- 데이터 사용량 감소: 반복적으로 사용하는 데이터를 서버로부터 받는 횟수를 줄여 데이터 사용량을 줄입니다.
- 서버 부하 감소: 서버에 대한 요청 횟수를 줄여 서버 부하를 감소시킵니다.
4. 단점
- 캐시 오류 가능성: 캐시 데이터가 손상되거나 만료되면 오류가 발생할 수 있습니다.
- 저장 공간 제한: 캐시에 저장할 수 있는 데이터 공간은 제한되어 있습니다.
- 최신 데이터 불일치 가능성: 캐시된 데이터가 최신 데이터와 일치하지 않을 수 있습니다.
5. 캐시 활용 예시
- 웹 페이지 이미지, 동영상, JavaScript 파일
- 온라인 게임 맵, 캐릭터 모델
- 앱 아이콘, 데이터베이스 쿼리 결과
6. 캐시 유형
- 브라우저 캐시: 웹 브라우저에서 사용하는 캐시
- 앱 캐시: 앱에서 사용하는 캐시
- 서버 캐시: 서버에서 사용하는 캐시
7. 캐시 관리
- 캐시 삭제: 캐시를 삭제하면 저장된 데이터가 모두 삭제됩니다.
- 캐시 만료 시간 설정: 캐시 만료 시간을 설정하면 설정된 시간 이후에는 캐시된 데이터가 삭제됩니다.
쿠키와 캐시 비교
쿠키와 캐시는 모두 웹 브라우저에 정보를 저장하는 기술이지만, 저장 목적, 저장 위치, 사용 방식에서 차이점을 가지고 있습니다.
1. 저장 목적
- 쿠키:
- 사용자 인증 정보 (로그인 여부, 사용자 설정 등)
- 사용자 추적 (방문 기록, 광고 타겟팅 등)
- 캐시:
- 웹 페이지 요소 (이미지, JavaScript 파일, CSS 파일 등)
- 웹 페이지 로딩 속도 향상
2. 저장 위치
- 쿠키:
- 클라이언트(브라우저)
- 캐시:
- 클라이언트(브라우저)
3. 사용 방식
- 쿠키:
- HTTP 요청 헤더에 포함되어 서버에 전송
- 서버는 쿠키 정보를 사용하여 사용자 식별 및 맞춤화 서비스 제공
- 캐시:
- 브라우저가 직접 관리
- 웹 페이지 로딩 시 서버에 요청하지 않고 캐시에서 불러와 사용
4. 장단점 비교
| 구분 | 쿠키 | 캐시 |
|---|---|---|
| 장점 | - 사용자 인증 및 맞춤화 서비스 제공 - 서버 부담 감소 | - 웹 페이지 로딩 속도 향상 - 데이터 전송량 감소 |
| 단점 | - 개인정보 침해 우려 - 보안 취약점 - 서버 부담 증가 | - 저장 공간 제한 - 캐시 오류 가능성 |
| 보안 | - 개인정보 포함으로 취약 | - 비교적 안전 |
| 사용 예시 | - 로그인 유지 - 쇼핑몰 장바구니 - 추천 시스템 | - 웹 페이지 이미지 - 동영상 - JavaScript 파일 |
5. 서버 부담은 줄이고 사용자와는 가깝게
CDN 정리
1. 개요
CDN(Content Delivery Network)은 전 세계 여러 지역에 분산된 서버를 사용하여 웹 콘텐츠를 사용자와 가까운 서버에서 전송함으로써 콘텐츠 로딩 속도를 높이는 기술입니다.
2. 작동 방식
- 사용자가 웹 콘텐츠를 요청하면 CDN 서버가 요청을 처리합니다.
- CDN 서버는 요청된 콘텐츠가 캐시에 있는 경우 캐시에서 제공하고, 캐시에 없는 경우 원본 서버로부터 콘텐츠를 가져와 캐시에 저장 후 제공합니다.
- 사용자는 CDN 서버로부터 콘텐츠를 받아 사용합니다.
3. CDN의 장점
- 사용자 경험 향상: 콘텐츠 로딩 속도를 높여 사용자 경험을 향상시킵니다.
- 서버 부하 감소: 원본 서버의 부하를 줄여줍니다.
- 데이터 사용량 감소: 캐싱을 통해 데이터 사용량을 줄여줍니다.
- 가용성 향상: CDN 서버가 다운되어도 다른 서버에서 콘텐츠를 제공할 수 있어 가용성을 향상시킵니다.
4. CDN의 단점
- 설치 및 운영 비용: CDN 서버를 설치 및 운영하는 데 비용이 발생합니다.
- 보안 문제: CDN 서버에 저장된 콘텐츠가 유출될 위험이 있습니다.
- 복잡한 설정: CDN을 설정하고 관리하는 것이 복잡할 수 있습니다.
5. CDN 활용 예시
- 웹 사이트 이미지, 동영상, JavaScript 파일
- 온라인 게임 맵, 캐릭터 모델
- 앱 아이콘, 데이터베이스 쿼리 결과
6. CDN 제공업체
- Akamai
- Cloudflare
- Amazon CloudFront
- Google Cloud CDN
- Microsoft Azure CDN