일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 코딩테스트
- Programmers
- map함수
- MPA
- 코딩연습
- 자바스크립트
- 코딩
- 코딩문제
- threejs
- axios
- 웹팩
- 코딩입문
- 헬스
- 프레임워크
- 자바스크립
- codingtest
- 반복문
- reduce함수
- Javascript
- React-Three-Fiber
- for문
- 코딩공부
- 리엑트
- 오름차순
- 배열뒤집기
- 프로그래머스
- 머쓱이
- CSS
- 운동
- react
- Today
- Total
SG의 개발 공부로그
Cookie , Session, Cache 차이점 (스토리텔링으로 이해하기) 본문
데이터를 저장하고 그 데이터를 사용하기 위한 저장소라고
간단하게는 알고 있었지만,
이 세가지가 어떻게 다르고 차이점이 그리고 어디에 쓰이는지를
헷갈릴 때가 많아서 한번 더 스토리탤링으로 이해하고 정리하게 되었다.
스토리텔링
나는 사우나를 개업했다. CEO는 처음이었고 미숙했다.
이 사우나에는 회원등록을 하고 입장하는데
여러 내부시설과 음식상점, 보관함 등을 사용한 뒤 마지막에 나갈 때 총결제를 해야 한다.
하지만,
회원이 어떤 음식을 먹었고 어떤 시설을 이용했는지,
사장인 나는 아무것도 없이는 파악하기 어려웠다..
회원 한 명 한명 따라다니면서 외울 수 도 없고..
그래서 사장인 나는 회원들에게 입장할 때 회원들마다
메모할 수 있는 책(쿠키)을 주었고,
시설을 사용하거나 음식결제 사고 싶은 물건 찜해두기 등을 모두 적게 했다.
-
쿠키는 사이트를 방문할 때 브라우저에 저장되고,
브라우저는 오로지 내 컴퓨터에만 나만 가지고 있는 정보이다.
-
하지만 문제가 발생했다..
순진한 사장인 나는 오로지 회원을 믿고 적게 하도록 쿠키북으로만 운영했지만,
임의로 고치거나 지울 수가 있어서 남들이 훔쳐보거나 몰래 빼갈 수 도 있었다.
그래서 몰래 조작하고 음식을 잔뜩 시켜 먹고 지워서 안 사용한 척 속이기도 했다.
정보노출과 임의조작이 쉬웠던 거다.
그래서 사장인 나는 더 이상 쿠키북에만 다 적는 방법을 쓰지 않고,
시설에서 보관하고 관리하는 세션도 함께 사용하기로 했다.
회원이 사우나에 입장하면, (단, 민증을 보고 회원인걸 인증한다(로그인))
그 회원 쿠키북에 매번 다르게 찍히는 바코드(임시 키 같은)를 찍어주었다.
사우나를 돌아다니면서 시설을 이용할 때마다 바코드를 찍게 했다.
그리고 그것을 세션에 저장시켰다.
현재 회원이 내부에 입장해 있는지, 회원은 보관함이 어디 있는지, 어떤 음식을 얼마어치 먹었는지 등
이제는 함부로 조작을 하거나 정보가 노출이 되지 않았다.
잠시 나갔다 들어와도 바코드가 있는 이상, 바코드를 다시 찍고 들어오면,
세션에 정보들이 저장되어 있기 때문에 사우나에서도 정보관리가 편했고,
고객도 안심하고 더 편리한 서비스를 받았다.
-------
쿠키?
사용자의 편의를 위해서 쓰이지만,
지워지거나 조작되거나 훔쳐가더라도 문제 생길일 없을 정도에 정보만 저장할 때 사용 된다.
세션?
노출되면 안 되는 서비스제공자가 직접관리를 해야 되는 정보들은
세션으로 서버 안에서 다루게 된다.
그래서 개발할 때
쿠키에 저장해야할지, 세션에 저장해야 할 지,
적절하게 판단하고 사용해야 한다.
무작정 쿠키를 사용하면 정보노출과 조작이 쉬워질 수 있고,
무작정 세션에 다 넣으면 서버를 쓰다 보니 접속자가 많아지면 서버가 과부하가 될 수 있다.
------
이어서
스토리텔링2
사우나는 흥행했다.. 내부공간도 커졌다..
그래서 내부에 쇼핑도 할 수 있도록 큰 프랜차이즈 상점을 개점했다.
여기는 회원전용 사우나이고,
이상하게도 이 사우나 회원은 우유부단한 회원이 좀 많았다.
살듯 말 듯..
들어왔다가 나갔다가..
어느 회원이 옷을 입어보고 안 산다고 해서 사우나 직원이 다시 창고에 넣어놨는데
10분 뒤에 와서 다시 산다고 해서 직원은 다시 창고에 들어가서 옷을 찾아오고
갑자기 다시 안 산다고 변덕을 부려서 직원은 다시 창고에 다시 넣어놨다.
5분 뒤..
회원은 또 마음이 바뀌었는지 다시 사겠다고,,
직원도 회원도 지치고 시간소모가 심했다.
이런 게 한두 번이여야지..
그래서 생각을 했다.
어떻게 하면 회원이 상점을 이용하는데 더 편리할까?
다시 그 물건을 원위치시켜놓으면 회원이 와서 다시 찾아달라고 할 때,
시간 또 걸리기 때문이다..
그래서 회원이 한번 자세하게 본 상품이나, 자주 봐서 반복되는 상품,
착용해 본 상품은 등은 임시로 캐시백(캐시)에 담아두었다.
회원에 캐시에 잠시 상품을 저장해 두었다가 회원이 찾으면,
창고까지 찾아 올 필요 없이 캐시백에서 그냥 꺼내주면 된다.
이런 방식이 저장공간은 좀 적고 비용이 좀 들기는 했지만
엄청 빨라지고 수월해져서 직원도 회원도 매우 만족했다.
--
회원이 들고 다니는 쿠키
회원을 관리하는 세션
한번 찾았던 상품을 잠시 담아두는 캐시
-------
Cashe 란
자주 사용하는 데이터나 값을 미리 복사해 놓은 임시 장소를 말한다.
저장 공간이 작고 비용이 좀 비싼 대신 빠른 성능을 제공한다.
Cache 사용 시 고려해야 할 점
- 접근 시간에 비히 원래 데이터를 접근하는 시간이 오래 걸리는 경우(서버의 균일한 API 데이터)
- 반복적으로 동일한 결과를 돌려주는 경우(이미지나 썸네일 등)
Cache를 많이 쓸 수 없는 이유
컴퓨터를 구성하는 메모리 저장공간은 속도가 빠를수록 용량이 적고 가격이 높다.
그래서 가격 때문에 캐시에 저장할 적은 양의 정보를 잘 선택하는 것이
비용도 절약하고 효율도 높이는 방법이다.
캐시란 무엇인가 참고 링크
https://mangkyu.tistory.com/69
[Server] Cache(캐시)란?
1. 캐시(Cache)란? [ Cache ] Cache란 자주 사용하는 데이터나 값을 미리 복사해 놓는 임시 장소를 가리킨다. 아래와 같은 저장공간 계층 구조에서 확인할 수 있듯이, 캐시는 저장 공간이 작고 비용이
mangkyu.tistory.com
스토리탤링 참고 유튜브
https://www.youtube.com/watch?v=OpoVuwxGRDI&t=24s