쿠키, 세션, 토큰, 캐시 그리고 CDN

Dorinn·2022년 6월 17일
0

web-study

목록 보기
2/2

반복되는 작업은 줄일수록 좋다. 웹에 들어갈 때 마다 매번 로그인 해야한다면 번거로울 것임!
그래서 반복적으로 작업하지 않도록 저장해 두는 것이 효율적이다.

이처럼 반복적으로 사용되는 데이터나 정보를 특성에 맞게 저장하고 재활용하기 위해 다양한 방식을 사용한다. 그것이 쿠키, 세션, 토큰, 캐시, CDN이다.


브라우저에 저장되는 정보 : 쿠키🍪

쿠키에는 사용자에게 맡겨도 되는 정보만 저장한다.
예를들면 쇼핑몰의 장바구니, 검색 기록의 검색어 ==> 웹 서핑 내역이 마케팅&광고에 활용됨

쿠키는 크롬, 사파리와 같은 브라우저에 저장되는 작은 테스트 조각이다.
브라우저는 컴퓨터에 설치된 SW이므로 사용자가 갖고있는 정보!!

사용자는 브라우저의 설정 화면, 개발자 도구에서 쿠키를 확인하고 수정, 삭제할 수 있다.
하지만 당사자 뿐만 아니라, 제 3자가 조회하는 것도 가능하므로
남에 의해 조작되어도 크게 문제되지 않을 정보를 저장함으로서 웹사이트 이용을 편리하게 해준다.


서버가 나를 알아보는 정보 : 세션🎸

웹사이트에 로그인하면 회원에게만 허용된 기능(ex. 리뷰, 마이페이지)을 사용할 수 있다.

이처럼 세션은 로그인 여부 등 사용자와 서버의 관게가 기억되어 보존되고 있는 상태지만 이들은 클릭시 매번 새로 보내지기 때문에 이전 행동들과 연결되어 있지 않다.

이와 같은 이유로 사용자가 사이트에 로그인한 상태를 서버에 인증하지 못하면
클릭할 때마다 여러번 로그인 정보를 서버에 제공해야 한다.

이러한 번거로움을 해결하기 위해 사용하는 것이 세션이다.

로그인 --> 서버는 세션 아이디 생성 --> 사용자에게 전달
ex) 놀이공원 티켓

사용자는 서버로 부터 받은 세션 아이디를 쿠키로 저장 --> 모든 요청에 함께 전달
ex) 놀이기구 탈 때 티켓 제출

서버는 세션 아이디를 확인하여 보관하고 있는 아이디 중에 동일한 정보가 있는지 찾아보고 누구의 계정인지도 알아냄


세션과는 또 다른 로그인 유지 방식 : 토큰🎲

세션은 안전하고 효과적이지만 사용자의 아이디를 메모리라는 '책상'에 올려둔다.
데이터를 빠르게 확인할 수 있지만 공간이 한정되어 있고 동시 접속자가 많아지면
메모리 공간이 부족해져서 부하가 걸리게 된다.

그래서 로그인한 사용자에게 세션 아이디 대신 토큰을 발급해 주는 것이다.
** 상태를 저장하지 않고도 로그인 여부를 파악할 수 있도록 함

여러기기에서 로그인을 제한하기 위해 서버가 강제로 로그아웃을 시킬 수 있어야 하는데
토큰에서는 이것이 불가능하다.

유효기간이 끝나기 전까지 통제할 수 없기때문에 토큰 정보를 탈취당할 가능성이 높다.
하지만 만료 기간을 정할 수 있어서 만료 시간을 짧게 지정하여 피해를 줄일 수 있다.

토큰방식은 쿠키와 세션을 적절히 섞은 것과 비슷한다.



전송량은 줄이고 속도는 높이고 : 캐시💸💰

우리는 대량의 데이터를 서버로부터 전송받는다. 이러한 과정에서 시간 뿐만 아니라 통신비도 지출된다. 하지만 한 번 전송받은 데이터는 저장해놨다가 다시 사용할 때 꺼내 쓴다면

서버에 데이터 전송을 반복적으로 요청할 필요가 없다. 이때 사용되는 기술이 캐시(cache)이다.
이로서 우리는 반복적으로 사용하는 콘텐츠를 빠르게 이용할 수 있고 데이터 사용량도 줄일 수 있다.

일반적으로 사용자 입장에서 가장 가까이 접하는 캐시는 브라우저 캐시이고 쿠키처럼 조작해 비울 수 있다.
캐시 덕분에 사용자는 같은 사이트를 다시 방문하거나 동영상을 다시 시청할 때 추가 비용, 로딩없이 콘텐츠를 이용할 수 있다.

✅쿠키와 캐시의 차이
쿠키와 캐시 모두 정보를 저장하여 재활용하는 기술이지만, 쿠키는 사용자의 수고를 덜어주는 데 목적을 두고 캐시는 데이터의 전송량을 줄이고 서비스 이용 속도를 높이는 데 목적을 둡니다.


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

캐시없는 정보 전송 --> 사용자의 불편 & 서버 부담
이러한 문제를 해결하기 위해 사용하는 것이 CDN(콘텐츠 전송 네트워크)이다.
지리적으로 분산된 여러 개의 서버를 이용해 웹 콘텐츠를 사용자와 가까운 서버에 전송함으로서 전송 속도를 높인다.
ex) 치킨 체인점 --> 가까운 가게 분산!


서버가 데이터를 전 세계 각지에 세워진 캐시 저장 및 전달용 컴퓨터(CDN 업체 소유)들에 보내면 사용자는 본 서버가 아닌 본인에게서 가장 가까운 캐시 서버로 요청을 보내고 데이터를 받아온다.


✅CDN은 여러 지역에 설치된 캐시 서버들을 사용하여 본 서버로 들어오는 요청들을 분산 처리하는 서비스
전 세계 캐시 서버를 운영하는 대표적인 CDN 업체 : AWS의 CloudFront나 CloudFlare, Akamai 등
한국 서비스에 최적화된 국내 CDN 업체들 : GS 네오텍, SK 브로드밴드, KT 등

서비스의 특성과 사용자 규모, 대상 지역에 따라 적합한 CDN 업체와 상품을 선택함으로써 안정적으로 서비스를 제공할 수 있다.

profile
자세히 보아야 예쁘다-

0개의 댓글