[WEB] 쿠키 | 세션 | 토큰 | 캐시 | CDN

목차
1. 쿠키 (Cookie)
2. 세션 (Session)
3. 토큰 (Token)
4. 캐시 (Cache)
5. CDN (Contents Delivery Network)
효율적인 웹 운영과 사용을 위해서 제목의 5가지 개념에 대해 알아본다.
1. 쿠키 : 사용자의 브라우저에 저장되는 정보
- 브라우저(크롬, 사파리, 파이어폭스, 엣지 등)에 저장되는 작은 텍스트 조각이다.
- 쿠키는 사용자가 갖고있는 정보이다.
- 쿠키에는 사용자에게 맡겨도 되는 정보만 저장한다. (민감한 정보는 저장하지 않는다.)
ex) 쇼핑몰 장바구니에 담은 상품, 웹사이트 검색내역, 웹 페이지 다크모드 설정 여부 등등의 간단한 정보
- 사용자가 쿠키를 확인, 수정, 삭제 할 수 있다.
- 쿠키는 당사자 뿐 아니라 제 3자가 조회하는 것도 가능하다.
2. 세션 : 서버가 사용자를 기억하고 있는 상태
- 사용자가 사이트에 로그인하면 유효기간까지 다시 ID/PW를 입력하지 않도록 서버로부터 이미 사용자가 인증받았음을 증명해주는 세션이라는 증서가 필요하다.
- 사용자가 서버에 ID/PW 입력 후 로그인에 성공하면, 서버는 세션 아이디(영어+숫자 혼합)라는 데이터를 만든다.
- 서버는 생성된 세션 아이디를 사용자에게 전달하고, 서버 메모리에 세션 아이디 사본을 보관한다.
- 사용자는 전달받은 세션 아이디를 쿠키로 저장한다. 그리고 앞으로의 모든 요청에 세션 아이디를 함께 서버에 전달한다.
ex) 사용자가 마이 페이지를 클릭할 때, 댓글 작성/삭제/수정 할 때, 친구 목록 볼 때, 택배 배송상태 확인 할 때 등등
- 서버는 사용자에게서 받은 요청(예. 택배 배송상태 확인)을 받으면 요청과 함께 온 세션아이디를 검증한다.
- 서버에 저장된 세션 아이디와 동일한 정보이면, 동일한 사용자라고 인식하고 요청에 응답(예. 택배 배송상태 확인)한다.
단점
- 세션방식은 안전하지만, 사용자의 요청마다 함께 오는 세션 아이디를 메모리에 무한정 올려둘 수 없다.
즉, 서버에 동시 접속자가 몰리면 메모리 공간이 부족해져서 서버에 부하가 온다.
비교
| 쿠키 | 세션 | |
| 저장소 | 사용자 브라우저 | 서버 (세션 쿠키는 제외) |
| 관리 주체 | 사용자 | 서비스 제공자 |
| 저장 대상 | 가벼운 편의를 위한 정보 | 서버가 관리할 정보 (예: 로그인) |
| 요청 속도 | 빠름 | 느림 (왜? 서버 처리 필요함) |
| 보안 | 취약 (로컬에 저장) | 좋음 (브라우저 메모리에 저장) |
3. 토큰 : 서버가 기억할 필요없이 사용자 스스로가 증명할 수 있는 수단
- 메모리 공간을 많이 차지하는 세션 방식의 대안으로 로그인한 사용자에게 세션 아이디 대신 토큰(Token)을 발급한다.
- 토큰은 특수한 수학적 알고리즘으로 적용되어 있다.
- 토큰을 발급받은 사용자가 이를 쿠키로 저장해둔다.
- 사용자가 서버에 요청을 할 때마다 토큰을 서버에 제시하면, 서버는 토큰을 검증한 후 요청을 허가(응답)해준다.
- 세션 아이디를 메모리에 올리는 방식보다 서버 부하를 덜 받는다.
- 해당 서버만이 발급할 수 있는 토큰을 생성함으로써 상태 저장 없이 사용자의 로그인 여부 등을 파악할 수 있다.
단점
- 로그인된 사용자를 서버가 강제로 로그아웃 시킬 수 없다.
- 한 번 발행한 토큰은 유효기간이 지나지 않으면 통제할 방법이 없다. (유효기간을 짧게 지정하면 해결가능하다)
- 세션에 비해서 토크 정보를 탈취당할 가능성이 있다.
비교
| 세션 | 토큰 | |
| 장점 | 사용자 상태 통제 가능 | 사용자 상태 기억할 필요 없음 |
| 단점 | 메모리에 로그인된 사용자 상태를 보관해야 함 | 한 번 로그인된 사용자는 토큰 만료전까지는 제어 불가능 |
4. 캐시 : 데이터를 다시 가져오지 않도록 저장하는 기술.
- 유튜브를 이용할 때 많은 데이터를 서버로 부터 받는다. 이 데이터는 시간과 비용이 든다.
- 한 번 받은 데이터를 저장해 놓으면 다시 서버에 데이터를 전송 요청할 필요가 없다.
- 이 때 캐시(cache) 기술이 사용된다.
- 캐시는 여러번 사용하는 컨텐츠를 빠르게 이용할 수 있게 하고, 데이터 사용량도 줄이게 해준다.
- 여기서의 캐시는 하드웨어의 CPU 캐시가 아니라 브라우저 캐시를 말한다.
- 네이버에서 특정 검색어를 입력하면, 받아온 데이터는 브라우저에 캐시 형태로 저장된다.
- 캐시도 쿠키와 같이 브라우저 설정에서 삭제할 수 있다.
비교
| 쿠키 | 캐시 | |
| 공통점 | 정보를 저장하여 재활용 하는 기술 | |
| 차이점 | 사용자의 수고를 덜어줄 목적 | 데이터 전송량 줄이기 & 속도 높이는 목적 |
5. CDN : 서버 부하를 분산 시키기위해 캐시 서버를 두는 기술.
- 서버를 여러 개 분산해서 사용자와 가까운 서버에서 웹 콘텐츠를 전송 하도록해서 전송 속도를 높인다.
- 즉, 본 서버로 들어오는 많은 요청들을 분산 처리하는 서비스이다.
ex) AWS의 CloudFront, CloudFlare, SK Broadband, KT etc...
캐시서버 캐시서버
캐시서버 ∋ 본서버 ∈ 캐시서버
캐시서버 캐시서버
참고
출처 : 혼자 공부하는 얄팍한 코딩 지식 (hanbit.co.kr) 저자: 고현민
간단하게 알아보자! Cookie, Session, Token, JWT, Cache 👍 (tistory.com)