2022-03-22 T.I.L

정종훈·2022년 3월 22일
0

임시

목록 보기
11/11

캐시

데이터를 미리 복사해 놓은 임시 장소이다.
CPU보다는 느리고 메모리보다는 빠른 캐시를 사이에 위치시켜 CPU의 데이터 접근 시간을 줄임.
결과가 나올 때마다 메모리에 저장하는 것보다, 캐시에 저장, 한 번에 메모리를 최신화하는 것이 효율 적
근본적으로 캐시에 데이터를 미리 복사해 놓고, 계산이나 접근 시간 없이 더 빠른 속도로 데이터에 접근하기 위함.

하드웨어 캐시인 CPU안에 캐시, GPU 캐시가 있고

페이지 캐시나 웹 캐시처럼 정해져있지 않은 소프트웨어 캐시도 있다.
나무위키

캐시의 동작 방식

  1. 데이터 요청이 들어옴 => 캐시에서 데이터 탐색

2-1 캐시가 없거나(cache miss) 오래된 경우 원본 데이터가 저장된 곳에서 데이터 조회 후 캐시에도 대이터를 복사 / 갱신 , 오래된 데이터는 삭제

2-2 캐시에 데이터가 있으면(cache hit) 캐시의 저장된 데이터를 제공

ㅇㅇ 캐시의 역할이 뭔지 알겠음 대략적으로 근데 우리는 백엔드 지망생이잖아? 하드웨어 만드려는게 아라고!! 그러면 웹 캐시에 대해 알아야하는데 그전에 잠깐 프록시 서버를 보자

프록시 서버

클라이언트가 자신을 통해서 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해주는 컴퓨터 시스템이나 응용 프로그램을 가리킴.

서버와 클라이언트 사이에 중계기로서 대리로 통신을 수행하는 것을 가리켜 "프록시"

그 중계 기능을 하는 것을 "프록시 서버" 라고 함.

종류에는 두가지가 있는데 클라이언트를 감추는 포워드 프록시(익명으로 인터넷 가능, 일반적임)

서버의 IP를 감추는 리버스 프록시

위키백과 프록시 서버

웹 캐시란?

웹 캐시 또는 HTTP 캐시는 서버 지연을 줄이기 위해 웹 페이지, 이미지, 기타 유형의 웹 밀티미디어 등의 웹 문서들을 임시 저장하기 위한 정보 기술
위키백과 웹 캐시

웹 캐시의 종류

  1. 브라우저 캐시 : 브라우저 또는 HTTP 요청을 하는 클라이언트에 의해 내부 디스크 캐시 되는것

브라우저 back 버튼 또는 이미 방문한 페이지를 재 방문하는 경우

  1. 프록시 캐시 : 1과 동일하지만 네트워크 상에서 동작

  2. 게이트웨이 캐시

링크

웹 캐시의 동작 방식


1. 브라우저가 웹 캐시와 TCP 연결을 설정하고 웹 캐시에 있는 객체에 대한 HTTP 요청을 보낸다.

  1. 웹 캐시는 객체의 사본이 캐시(프록시 서버)에 저장되어 있는지 확인

2-1 저장되어 있다면 브라우저로 HTTP 응답 메세지와 객체를 함께 보냄

2-2 저장되어있지 않다면 origin 서버로 TCP 연결 설정.
이 연결로 브라우저가 요청한 객체에 대한 HTTP 요청을 보낸다.
origin 서버는 웹 캐시로 HTTP 응답 메세지와 함께 객체를 보낸다.

웹 캐시가 origin 서버로부터 객체를 수신할 때, 객체를 저장 장치에 복사하고 객체의 사본을 HTTP 응답 메세지와 함께 브라우저로 보낸다.

참고

웹 캐시 이용시 주의점

웹서버에는 최신인 정보가 웹캐시서버에서는 동기화가 되어 있지 않다면?

클라이언트에게는 내용이 반영되지 않게 됨 => 이게 서비스 장애..

그러면 웹 캐시 서버는 자신이 메모리나 디스크에 저장한 컨텐츠가 유효한지 아닌지를 체크해야 하는 숙제가 있음.

웹 캐시 서버 제품별로 컨텐츠가 유효한지 아닌지 체크하는 알고리즘이 있고, 이를 계산할 수 있게 HTTP 헤더에 관련된 정보들을 줌.

참조

웹 캐시의 장점

  • 애플리케이션 성능 개선
    캐시 메모리는 디스크보다 속도가 빨라 빠른 데이터 액세스로부터 애플리케이션의 전반벅인 성능을 개선 => 그러면 디스크 말고 다 캐시 메모리로 교체하면 되지 않나?

  • 데이터베이스 비용 절감
    캐시를 이용하면 첫번째 서버 응답은 캐시에 보관되므로
    캐시된 사본이 뒤이은 요청들에 대한 응답은 원서버가 보내주지않아도 되기 때문에 불필요한 트래픽 낭비 감소 => 데이터베이스 비용 절감.

  • 네트워크 병목 줄여줌.

  • 백엔드 부하 감소

  • 예측 가능한 성능
    충돌이나 네트워크 분할, 다른 이슈등으로 인해 원격 서버를 사용할 수 없는 시나리오에서 클라이언트는 프록시에서 캐시된 복사본을 얻을 수 있음.

웹 캐시 단점

  • 캐시 미스일때 추가 프록시 처리로 액세스 대기 시간 증가

  • 그리고 아까 캐시가 업데이트가 되지 않는 문제!

스택오버플로우 질문

캐싱의 단점

웹서비스에서 캐시에 적용되는 예제

클라이언트: HTTP 캐시 해더, 브라우저

네트워크 : DNS 서버(DNS 캐시), HTTP 캐시 헤더, CDN(클라우드플레어), 리버스 프록시

서버 및 데이터베이스 : Redis

참조

profile
괴발개발자에서 개발자로 향해보자

0개의 댓글