-
컴퓨터 공학을 전공했거나 개발을 조금 해보신 분이라면 캐시라는 단어는 굉장히 익숙하실겁니다. 그리고 우리는 캐시가 애플리케이션의 처리 속도를 높여준다는 것을 알고 있습니다. 사용률이 높은 데이터를 캐시에 저장해두었다가 필요시에 빠르게 꺼내쓸 수 있도록 해서 처리속도를 높이죠. 과연 캐시는 구체적으로 어떻게 처리속도를 높일까요?
1. 웹캐시, 어디에 쓰나?
구체적으로 웹캐시에 대해 알아보기 전에 웹 캐시를 왜 쓰는지부터 살펴보고자 합니다. 그리고 결론부터 말씀드리자면 일반적으로 사용자가 만드는 데이터 보다는 서비스에서 제공하는 컨텐츠(뉴스,허브,실시간 검색어 등)와 같이 서버에서 반복적으로 제공되는 데이터를 사용자에게 보여주고자 할 때 사용합니다. 그리고 실제로 사용할 땐, 아래의 조건을 만족한다면 캐시 사용을 한 번 고려해보는 것이 좋습니다.
-
서버 개발을 하면서 반복적으로 동일한 결과를 돌려주는 작업이 있는 경우
-
각 작업의 시간이 오래 걸리거나 서버에 부담을 주는 경우 (외부 API/DB 데이터호출 등)
2. 웹에서의 캐시의 종류?
웹에는 두 가지 종류의 캐시가 존재합니다. 바로, 브라우저 캐시와 서버용 캐시입니다. 브라우저 캐시란 말 그대로 브라우저의 속도 개선을 위해 사용되는 캐시로서 비디오, 이미지, 사운드 등을 Client의 내부 디스크에 저장하고, 일정 기간동안 같은 리소스 요청이 오면 캐시에 있는 내용을 반환합니다.
반면, 서버에서의 캐시는 DB를 조회하는 비용을 줄이기 위해서 서버에서 사용하는 캐시입니다. 브라우저를 새로 로드 할 때마다 상품 리스트를 보내줘야 하는 경우를 생각해봅시다. 만일, 유저에게 상품리스트를 보여줄 때, 매번 DB에 접근하여 데이터를 가져오는 경우와 해당 상품리스트를 따로 저장해뒀다가 유저가 요청할 때마다 새롭게 보내주는 경우를 생각해볼 때, 과연 어떤게 더 빠를까요? 당연히 캐시에 저장하는 경우일겁니다. 왜냐하면 매번 DB에 접근하려면 여러 경로를 거쳐야 하고, 그만큼 많은 트랜젝션이 발생하게 됩니다. 하지만 캐싱을 해두면 요청이 올 때마다 캐시에 접근해서 데이터를 가져오면 되기 때문에 처리속도가 훨씬 빠르게 됩니다.
3. 웹 캐시의 구조
출처 : <https://mingrammer.com/translation-the-hidden-components-of-web-caching/>
1) Response Cache
웹 서버는 Application Host로 동일한 요청이 전송되지 않도록 제어하고, Response Cache를 통해 비용이 높은 DB쿼리나 자주 요청되는 파일을 캐시하여 동일 요청이 왔을 때, Application Host를 통하지 않고, 캐시된 데이터를 Client에게 전송되도록 할 수 있습니다.
2) Application Cache
Application Cache는 모든 사용자들이 자주 요청할만한 웹페이지나 파일 등을 저장하고 있다가 클라이언트가 해당 데이터를 요청할 때 빠르게 응답하여 Application의 처리속도를 높이기 위해 사용하는 캐시입니다. 즉, 서버에서 많이 쓰일 것이라고 예상되는 데이터들을 서버에서 빠르게 대응할 수 있도록 저장하는 공간이죠.
3) 브라우저 캐시
브라우저 캐시란, 클라이언트의 내부 저장소에 웹페이지를 탐색할 때 다운로드 한 데이터가 계속 저장되는 공간을 말합니다. 웹 페이지에 대한 데이터를 저장하고 있기 때문에 트래픽을 절약하고 브라우저 속도를 높일 수 있습니다. 또한, 페이지를 완전히 다시 로드할 필요가 없고 변경된 항목만 리로드 되기 때문에 속도면에서 이득을 볼 수 있습니다.
전반적으로 웹 캐시는 위와같은 구조로 작동하게 됩니다. 그리고 각 단계별로 존재하는 캐시들을 통해 여러 클라이언트로부터 받은 요청들을 빠르게 처리하고 대응할 수 있습니다.
-