CS/GENERAL

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

Harimad 2022. 6. 23. 16:56

목차

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)