캐시는 이전에 사용했던 데이터들을 보관하는 사용자의 저장 공간입니다.
웹 사이트나 앱에서 서비스를 이용할 때 재사용할 수 있는 이미지나 HTML 등등 정보들을 캐시에 저장합니다.
서버에 재요청 했을 때 캐시를 이용하면 시간과 비용을 절약할 수 있습니다.
캐시는 컴퓨터의 처리 속도를 더 빠르게 하기 위해서 탄생했습니다.
계산의 결과값이나 재사용할 수 있는 데이터를 CPU 캐시메모리에 저장해 RAM과 CPU의 속도차를 줄이는 방법입니다.
CPU 캐시메모리의 용량이 크면 좋지만 커질수록 전력소모가 커지고 속도가 느려져 용량에 제한을 받습니다.
웹이나 앱에서의 캐시는 저장소에 데이터를 저장하게 해서 빠른 서비스를 제공합니다.
데이터를 사용자에게 저장하게 함으로써 서버에서는 데이터 전송 부하를 낮출 수 있습니다.
데이터베이스가 우리나라와 먼 나라에 있는 기업들은 우리나라에서 데이터를 요청하면 여러 통신사를 거치고 많은 비용과 시간이 소요되고 데이터를 받게 됩니다.
이런 문제점을 해결하기 위해 데이터 저장소(캐시 서버)를 여러 나라에 만들어서 비용과 시간을 절감 할 수 있습니다. 우리나라에 캐시서버가 있다면 사람들이 자주 사용하는 데이터를 캐시서버에 보관하고 사람들이 자주 요청하는 데이터를 이 캐시서버에서 응답해 주고 효율적으로 사용할 수 있습니다.
① 사용자가 웹 서버에 데이터를 요청하면 사용자의 캐시에서 도멘인과 일치하는 캐시 데이터를 찾습니다.
② 사용자의 캐시에 원하는 데이터가 없거나 캐시 기간이 만료되었다면 서버에 데이터를 요청합니다.(Cache Miss)
③ 사용자의 캐시에 요청한 데이터가 존재하면 재검사 설정이 되어있는지 판단합니다. (Cache Hit)
④ 재검사 설정이 되어 있지 않은 캐쉬면 데이터는 최신 버전인지 검사하지 않고 사용자에게 기존에 저장되어 있는 캐시 데이터를 응답합니다.
⑤ 재검사 설정이 되어 있는 캐시면 데이터가 최신 버전인지 서버에 재검사 요청을 합니다.
⑥ 캐시에 존재하는 데어터의 캐시 버전 번호(Etag)와 마지막 수정 날짜를 서버의 데이터와 비교했을 때 일치하므로 사용자에게 응답코드를 주어 사용자의 캐시에 있는 검증된 최신 데이터를 사용하게 합니다.
⑦캐시에 있는 데이터와 캐시 버전 번호나 마지막 수정 날짜가 일치하지 않으므로 서버에 데이터를 요청합니다.
⑧ 서버에서 데이터를 보내서 사용자의 캐시에 저장하게 합니다.
⑨ 사용자 캐시에 원하는 데이터가 있으면 사용자에게 응답합니다.
① 사용자가 사이트에 처음 방문해서 서버에 웹 페이지를 요청합니다.
② 웹 서버에서 쿠키 속성들을 설정하여 사용자에게 전송해서 브라우저가 사용자의 쿠키 저장 공간에 저장하게 합니다.
③ 사용자가 다시 서버에 똑같은 웹 페이지를 요청합니다. 이번에는 사용자가 요청한 웹 페이지의 도메인과 일치하는 쿠키들을 http 헤더에 포함하여 같이 전송합니다.
④ 웹 서버에서는 사용자에게 받은 쿠키를 이용하여 사용자를 파악하고 사용자에게 맞는 서비스를 제공합니다.
서버가 사용자의 접속 상태를 관리하고 서버의 저장소 여유만큼 세션을 저장할 수 있습니다.
로드 밸런싱이란 로드 밸런싱이란 말 그대로 서버가 처리해야 할 업무 혹은 요청(Load)을 여러 대의 서버로 나누어(Balancing) 처리하는 것을 의미한다. 한 대의 서버로 부하가 집중되지 않도록 트래픽을 관리해 각각의 서버가 최적의 퍼포먼스를 보일 수 있도록 하는 것이 목적이다.
① 사용자가 서버에 로그인을 합니다.
② 서버에서는 사용자의 로그인 정보와 데이터베이스에 저장된 사용자의 정보를 비교합니다.
③ 사용자가 존재하면 세션 ID와 사용자의 일부 정보를 서버의 세션 저장소에 보관합니다. 서버에서는 저장한 세션 ID값을 사용자에게 세션쿠키로 전달합니다.
④ 사용자가 서버에 다시 접속할 때 세션 ID를 같이 보내면 서버에서는 세션 저장소에서 세션 ID를 찾아 사용자가 누구인지 판단하고 사용자에게 맞는 서비스를 제공합니다.
캐시는 사용자가 요청한 데이터에 빠르게 응답할 수 있습니다. 서버는 사용자의 모든 요청에 응답하지 않아서 서버의 부하를 낮출 수 있습니다. 캐시는 사용자의 공간에 저장되지만 캐시를 이용했을 때 사용자와 서버가 얻는 장점이 더 크기 때문에 사용합니다.
http 통신의 특성인 무상태와 비연결성 문제를 보완해 주고 서버가 사용자의 정보를 알 수 있게 도와줍니다. 서버가 사용자의 정보를 기억하지 못한다면 사용자는 큰 불편함을 겪을 것입니다. 때문에 쿠키 사용은 필수입니다. 사설 쿠키는 보안에 취약하지만 다른 사람의 봐도 상관없는 데이터를 넣어 사용한다면 서버가 사용자 정보를 받아 알맞은 서비스를 제공할 수 있습니다.
사용자의 개인 정보를 모두 쿠키에 담아 보관하고 서버와 정보를 주고받다가 해커에게 쿠키를 빼앗길 경우 사용자의 아이디, 비밀번호, 이름 등 중요한 정보가 유출될 수 있습니다. 그런데 세션을 이용하면 사용자와 서버가 세션 ID를 주고 받으므로 해커에게 세션 ID만을 빼앗깁니다. 사용자의 개인 정보는 모두 서버에 존재하지 않기 때문에 쿠키보다 보완성이 우수합니다. 또한 사용자의 접속을 서버에서 제어하기 때문에 보안성을 높일 수 있습니다.
참고문헌] 개발자가 되기 위해 꼭 알아야 하는 IT 용어