SG의 개발 공부로그

Cookie , Session, Cache 차이점 (스토리텔링으로 이해하기) 본문

Server

Cookie , Session, Cache 차이점 (스토리텔링으로 이해하기)

DebeloperSG 2023. 1. 28. 17:37
728x90

데이터를 저장하고 그 데이터를 사용하기 위한 저장소라고

간단하게는 알고 있었지만, 

 

이 세가지가 어떻게 다르고 차이점이 그리고 어디에 쓰이는지를

헷갈릴 때가 많아서 한번 더 스토리탤링으로 이해하고 정리하게 되었다.

 

 

스토리텔링

나는 사우나를 개업했다. 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

728x90