캐시 쿠키 그리고 세션

서수·2022년 12월 15일
1

Computer Science

목록 보기
6/6
post-thumbnail

캐시(Cache)

캐시의 정의

캐시는 이전에 사용했던 데이터들을 보관하는 사용자의 저장 공간입니다.
웹 사이트나 앱에서 서비스를 이용할 때 재사용할 수 있는 이미지나 HTML 등등 정보들을 캐시에 저장합니다.
서버에 재요청 했을 때 캐시를 이용하면 시간과 비용을 절약할 수 있습니다.

캐시에 대해 알아보자

컴퓨터에서의 캐시 메모리

캐시는 컴퓨터의 처리 속도를 더 빠르게 하기 위해서 탄생했습니다.
계산의 결과값이나 재사용할 수 있는 데이터를 CPU 캐시메모리에 저장해 RAM과 CPU의 속도차를 줄이는 방법입니다.
CPU 캐시메모리의 용량이 크면 좋지만 커질수록 전력소모가 커지고 속도가 느려져 용량에 제한을 받습니다.

웹이나 앱에서의 캐시

웹이나 앱에서의 캐시는 저장소에 데이터를 저장하게 해서 빠른 서비스를 제공합니다.
데이터를 사용자에게 저장하게 함으로써 서버에서는 데이터 전송 부하를 낮출 수 있습니다.

글로벌 기업은 캐시를 어떻게 사용중인가

데이터베이스가 우리나라와 먼 나라에 있는 기업들은 우리나라에서 데이터를 요청하면 여러 통신사를 거치고 많은 비용과 시간이 소요되고 데이터를 받게 됩니다.
이런 문제점을 해결하기 위해 데이터 저장소(캐시 서버)를 여러 나라에 만들어서 비용과 시간을 절감 할 수 있습니다. 우리나라에 캐시서버가 있다면 사람들이 자주 사용하는 데이터를 캐시서버에 보관하고 사람들이 자주 요청하는 데이터를 이 캐시서버에서 응답해 주고 효율적으로 사용할 수 있습니다.

캐시 사용 예시


① 사용자가 웹 서버에 데이터를 요청하면 사용자의 캐시에서 도멘인과 일치하는 캐시 데이터를 찾습니다.

② 사용자의 캐시에 원하는 데이터가 없거나 캐시 기간이 만료되었다면 서버에 데이터를 요청합니다.(Cache Miss)

③ 사용자의 캐시에 요청한 데이터가 존재하면 재검사 설정이 되어있는지 판단합니다. (Cache Hit)

④ 재검사 설정이 되어 있지 않은 캐쉬면 데이터는 최신 버전인지 검사하지 않고 사용자에게 기존에 저장되어 있는 캐시 데이터를 응답합니다.

⑤ 재검사 설정이 되어 있는 캐시면 데이터가 최신 버전인지 서버에 재검사 요청을 합니다.

⑥ 캐시에 존재하는 데어터의 캐시 버전 번호(Etag)와 마지막 수정 날짜를 서버의 데이터와 비교했을 때 일치하므로 사용자에게 응답코드를 주어 사용자의 캐시에 있는 검증된 최신 데이터를 사용하게 합니다.

⑦캐시에 있는 데이터와 캐시 버전 번호나 마지막 수정 날짜가 일치하지 않으므로 서버에 데이터를 요청합니다.

⑧ 서버에서 데이터를 보내서 사용자의 캐시에 저장하게 합니다.

⑨ 사용자 캐시에 원하는 데이터가 있으면 사용자에게 응답합니다.

쿠키 ( Cookie )

쿠키의 속성 및 특징

  • 최대 4KB의 문자열
  • 도메인 당 최소 50개까지 지원. 브라우저당 최소 3000개 보관 가능
  • 도메인과 경로는 사용자가 사이트에 접속했을 때 쿠키정보에 있는 도메인과 경로의 하위 경로에서만 접속이 가능하도록 허용하는 것입니다.
  • 유효 날짜와 만료시간
  • 안전 설정 : 암호화 된 쿠키 사용 설정입니다. ( Https 에서 쿠키를 전송 가능하게 만듭니다. )
  • HttpOnly : 쿠키를 http에서만 사용하게 하여 XSS(Cross Site Scripting) 같은 자바스크립트를 이용한 쿠키 탈취를 방지합니다.
  • Samesite : 다른 도메인에 쿠키 전송 허용을 설정할 수 있습니다. CSRF ( Cross Site Request Forgery ) 같은 공격을 방지합니다.

종류

  • 퍼스트 파티 쿠키 : 쿠키의 도메인과 접속한 도메인이 일치하는 쿠키입니다.
  • 세션 쿠키 : 세션에서 사용자의 세션 ID값을 가지고 있는 쿠키입니다.
  • 보안 쿠키 : https 로 암호화하여 사용자와 서버가 주고받는 쿠키입니다.
  • 서드 파티 쿠키 : 사용자가 접속한 사이트 정보를 얻어서 사용자에게 맞춤 광고를 제공할 때 사용하는 쿠키입니다. ( 크롬에서 2023년에 사용을 중단한다고 발표하여 없어질수도 있는 쿠키)

웹 사이트에서 쿠키를 사용하는 과정

① 사용자가 사이트에 처음 방문해서 서버에 웹 페이지를 요청합니다.
② 웹 서버에서 쿠키 속성들을 설정하여 사용자에게 전송해서 브라우저가 사용자의 쿠키 저장 공간에 저장하게 합니다.
③ 사용자가 다시 서버에 똑같은 웹 페이지를 요청합니다. 이번에는 사용자가 요청한 웹 페이지의 도메인과 일치하는 쿠키들을 http 헤더에 포함하여 같이 전송합니다.
④ 웹 서버에서는 사용자에게 받은 쿠키를 이용하여 사용자를 파악하고 사용자에게 맞는 서비스를 제공합니다.

세션

특징

서버가 사용자의 접속 상태를 관리하고 서버의 저장소 여유만큼 세션을 저장할 수 있습니다.

장점

  • 세션 ID를 사용자와 서버가 주고받으므로 중간에 세션 ID를 뺏겨도 세션 ID만으로는 사용자의 개인 정보를 알 수 없고 세션은 일정 기간이 지나면 사라지기 때문에 보안성이 좋습니다.
  • 서버에서 사용자 접속을 관리할 수도 있습니다.

단점

  • 세션을 서버가 관리하므로 사용자가 많이질수록 부하가 생깁니다.
  • 세션을 이용하면 서버의 데이터베이스에서 매번 사용자 조회를 해야합니다.
  • 로드 밸런싱처럼 여러 개의 서버를 사용하면 세션의 관리가 어렵습니다. 사용자의 세션 값을 여러개의 서버가 공유해야 하는 문제가 발생하기 때문입니다.

    로드 밸런싱이란 로드 밸런싱이란 말 그대로 서버가 처리해야 할 업무 혹은 요청(Load)을 여러 대의 서버로 나누어(Balancing) 처리하는 것을 의미한다. 한 대의 서버로 부하가 집중되지 않도록 트래픽을 관리해 각각의 서버가 최적의 퍼포먼스를 보일 수 있도록 하는 것이 목적이다.

사용 과정

① 사용자가 서버에 로그인을 합니다.
② 서버에서는 사용자의 로그인 정보와 데이터베이스에 저장된 사용자의 정보를 비교합니다.
③ 사용자가 존재하면 세션 ID와 사용자의 일부 정보를 서버의 세션 저장소에 보관합니다. 서버에서는 저장한 세션 ID값을 사용자에게 세션쿠키로 전달합니다.
④ 사용자가 서버에 다시 접속할 때 세션 ID를 같이 보내면 서버에서는 세션 저장소에서 세션 ID를 찾아 사용자가 누구인지 판단하고 사용자에게 맞는 서비스를 제공합니다.

캐시/쿠키/세션을 사용하는 이유

캐시

캐시는 사용자가 요청한 데이터에 빠르게 응답할 수 있습니다. 서버는 사용자의 모든 요청에 응답하지 않아서 서버의 부하를 낮출 수 있습니다. 캐시는 사용자의 공간에 저장되지만 캐시를 이용했을 때 사용자와 서버가 얻는 장점이 더 크기 때문에 사용합니다.

쿠키

http 통신의 특성인 무상태와 비연결성 문제를 보완해 주고 서버가 사용자의 정보를 알 수 있게 도와줍니다. 서버가 사용자의 정보를 기억하지 못한다면 사용자는 큰 불편함을 겪을 것입니다. 때문에 쿠키 사용은 필수입니다. 사설 쿠키는 보안에 취약하지만 다른 사람의 봐도 상관없는 데이터를 넣어 사용한다면 서버가 사용자 정보를 받아 알맞은 서비스를 제공할 수 있습니다.

세션

사용자의 개인 정보를 모두 쿠키에 담아 보관하고 서버와 정보를 주고받다가 해커에게 쿠키를 빼앗길 경우 사용자의 아이디, 비밀번호, 이름 등 중요한 정보가 유출될 수 있습니다. 그런데 세션을 이용하면 사용자와 서버가 세션 ID를 주고 받으므로 해커에게 세션 ID만을 빼앗깁니다. 사용자의 개인 정보는 모두 서버에 존재하지 않기 때문에 쿠키보다 보완성이 우수합니다. 또한 사용자의 접속을 서버에서 제어하기 때문에 보안성을 높일 수 있습니다.

참고

참고문헌] 개발자가 되기 위해 꼭 알아야 하는 IT 용어

profile
패션디자인과 출신 비전공자가 개발자로 성장하려 만든 노트

0개의 댓글