캐싱은 웹 서비스에서 성능을 향상하고 응답 시간을 줄이는 데 있어 필수적인 기술이다. 데이터를 일시적으로 저장하는 방식을 통하여 서비스가 각 요청마다 데이터를 재생성하지 않고도 빠르게 데이터를 검색/제공할 수 있도록 한다. 이는 서버의 부하를 줄일 뿐 아니라 사용자 경험의 향상도 이끌어낸다.
웹 서비스에 사용되는 캐시는 여러 유형이 있으며 각각 고유한 장점을 갖는다. 빠른 액세스를 위해 서버의 램에 데이터를 저장하는 메모리 캐시부터 서버를 향하는 요청 수를 줄이기 위해 사용자의 장치에 데이터를 저장하는 브라우저 캐시까지 각 유형의 캐시는 성능 향상을 위해 중요한 역할을 한다.
먼저, 웹 서비스에서 사용되는 메모리 캐시, 디스크 캐시, CDN 캐시 그리고 브라우저 캐시에 대해 알아본다. 그리고 속도와 효율성 및 데이터 크기 같은 다양한 요인을 고려하여 웹 서비스에 적합한 캐시를 선택하는 방법에 대해서도 알아본다.
1. Memory Cache (RAM Cache)
RAM 캐시라고도 하는 메모리 캐시는 Server의 RAM에 데이터를 저장하는 캐시 유형이다. 그렇기에 RAM에 저장된 데이터에 빠르게 액세스 할 수 있어 가장 빠르고 효율적인 캐시 유형이다. 메모리 캐시는 일반적으로 DB Query 결과와 같이 자주 액세스하게 되는 데이터를 저장하여 Web Application의 응답 시간을 단축하는 데 이용된다.
메모리 캐시 사용의 장점
- 속도: 메모리에 저장된 데이터의 특성상 빠른 액세스가 가능하다
- 효율적인 리소스 사용: 메모리에 데이터를 캐싱하면 서버가 각 요청에 대해 데이터를 다시 생성할 필요가 없어 서버의 부하가 줄어든다.
- 성능 향상: 자주 액세스하는 데이터를 캐싱할 시 웹 서비스가 사용자 요청에 보다 빠르게 응답하여 전반적으로 성능이 향상된다.
- DB 부하 감소: 캐싱을 통해 DB를 향하는 요청 수를 줄여 DB에 가해지는 부하를 줄여 성능을 향상할 수 있다.
- 확장성 향상: 서버 로드를 줄이고 더 많은 요청을 처리할 수 있도록 하여 서비스의 확장에 도움을 준다.
- 대기 시간의 감소: 메모리 캐시를 이용 시, 디스크 혹은 네트워크 저장 장치와 같이 느린 저장 장치에서 데이터를 검색하는 것에 비해 빠르게 데이터를 검색할 수 있어 대기 시간을 감소시킬 수 있다.
메모리 캐시의 사용 예시
- Database Query 결과: DB Query 결과를 캐싱하여 데이터 검색에 드는 시간을 줄이고 웹 서비스의 응답 시간을 빠르게 한다.
- Session Data: 사용자 정보, 장바구니 내용 등 세션 데이터를 캐싱하여 웹 서비스의 속도와 효율성을 높일 수 있다.
- API Response: 동일 응답을 캐싱하여 서버 부하를 줄이고 응답 시간을 개선할 수 있다.
2. Disk Cache
디스크 캐시는 서버의 Disk Drive에 데이터를 저장하는 캐싱 방식이다. 서버의 RAM에 데이터를 저장하는 메모리 캐시와는 달리 보다 느린 저장 장치에 저장하는 단점을 갖지만, 훨씬 더 많은 양의 데이터를 저장할 수 있는 장점을 가지고 있다.
디스크 캐시 사용의 장점
- 보다 큰 저장 용량: 디스크 캐시는 서버의 가용 RAM 양에 의해 제한되는 메모리 캐시에 비해 훨씬 더 많은 양의 데이터를 저장할 수 있다.
- 영구 저장소: 디스크 캐시의 데이터는 서버가 다시 시작되어도 보존될 수 있기 때문에, 서버 세션의 수명을 넘어 지속되어야 할 데이터를 저장할 수 있다.
- 향상된 확장성: 메모리 캐시와 마찬가지로, 데이터의 재생성을 방지하여 서버의 로드를 줄이고 확장성의 향상에 도움이 된다.
- 비용의 효율성: 디스크 드라이브는 SSD(solid state drive)나 NAS 장치와 같은 다른 유형의 스토리지 장치보다 저렴하다
- 관리의 효율성: 쉽게 쓰고 읽을 수 있으며, 필요에 따라 드라이브를 쉽게 추가/교체할 수 있다.
디스크 캐시의 사용 예시
- 대용량 데이터: 이미지, 동영상, 오디오 파일과 같은 대용량 데이터셋을 디스크 캐시에 저장하여 서버 부하를 줄이고 서비스의 응답 시간을 향상할 수 있다.
- 자주 접근하지 않는 데이터: 보관된 기록과 같이 자주 접근하지 않는 데이터는 디스크 캐시에 저장하여 서버 부하를 줄이고 서비스의 성능을 향상할 수 있다.
- 백업 저장소: 디스크 캐시는 백업 저장소로도 이용될 수 있다.
3. CDN Cache
CDN(Content Delivery Network)은 여러 위치에 분산된 서버 네트워크를 의미한다. CDN은 이미지, 비디오, 오디오 파일과 같은 콘텐츠를 사용자와 가까운 서버에 캐싱하여 웹 서비스의 성능과 가용성을 향상하는 데 이용된다. CDN 캐싱을 이용하면 사용자에게 콘텐츠를 전달하는 대기 시간을 줄이고 원본 서버의 부하를 줄이는 데 이용된다.
CDN 캐시 사용의 장점
- 성능의 향상: CDN 캐시는 사용자와 가까운 서버에 콘텐츠를 저장하여 사용자에게의 전달 대기 시간을 줄여 웹 서비스의 성능을 향상하는데 도움이 된다.
- 가용성의 향상: CDN 캐시는 콘텐츠의 여러 복사본을 저장하고 있기 때문에 하나 이상의 CDN 서버가 실패하더라도 다른 CDN에 의해 사용자에게 콘텐츠가 지속적으로 전다로 딜 수 있다.
- 원본 서버의 부하 감소: CDN 캐시는 원본 서버가 직접 사용자에게 콘텐츠를 전달하지 않기 때문에 원본 서버에 가해지는 부하가 줄어들게 된다.
- 보안의 향상: 분산된 서버 네트워크 콘텐츠를 제공하여 단일 지점에서의 붕괴를 막고 DDoS 공격의 영향을 완화하여 보안을 향상하는 데 도움이 될 수 있다.
- 비용 절감: CDN 공급자는 일반적으로 콘텐츠 호스팅 및 전달 비용을 가정하여 원본 서버에서 발생하는 비용을 줄인다. 따라서, 콘텐츠 제공 비용을 줄이는 데 도움이 된다.
CDN 캐시의 사용 예시
- 대용량 파일 전달: 이미지, 동영상, 오디오 파일과 같은 대용량 파일을 전달하는 데 자주 사용되어 원본 서버의 부하를 줄일 뿐 아니라 사용자에게 전달되는 속도를 향상하는 데 이용된다. Netflix, Youtube와 같은 스트리밍 비디오 서비스, Steam, Xbox Live, PlayStation Network와 같은 게임 다운로드 서비스, MS Update, Apple App Store 등 소프트웨어 제공 서비스, 전자상거래 웹사이트의 이미지 및 정적 콘텐츠 전달 등이 이와 같은 방식으로 이용된다.
- 트래픽이 많은 웹 사이트의 제공: 뉴스 웹사이트, 전자상거래 웹사이트 및 소셜 미디어 웹사이트와 같이 트래픽이 많은 웹사이트의 성능과 가용성을 개선하는데 이용된다.
- 글로벌 콘텐츠 제공: 다양한 지리적 지역에 있는 사용자에게 콘텐츠를 제공하는 데 자주 사용된다. 지리적으로 사용자에게 가까운 CDN 서버로 캐싱되어 웹 서비스가 지연 시간이 짧아지게 된다.
4. Client-side cache(Browser Cache)
브라우저 캐시 혹은 클라이언트 측 캐시는 클라이언트의 웹 브라우저에 저장되는 캐시이다. 클라이언트 캐시는 이미지, 스크립트 및 스타일시트와 같이 자주 액세스하는 콘텐츠를 웹 브라우저에 로커롤 저장하여 네트워크를 통해 전송해야 하는 데이터의 양을 줄이고 웹 서비스의 성능을 향상한다. 또한, 오프라인 상태에서도 캐시 된 콘텐츠에 액세스 할 수 있도록 한다.
클라이언트 캐시 사용의 장점
- 성능의 향상: 클라이언트 캐시는 네트워크를 통해 전송해야 할 데이터의 양을 줄여 웹 서비스의 성능을 향상한다.
- 서버 부하의 감소: 클라이언트의 웹 브라우저가 원본 서버에 콘텐츠를 요청하는 대신 캐시에서 콘텐츠를 제공하기 때문에 원본 서버에 부하가 줄어든다.
- 오프라인 접근성: 클라이언트 캐시를 통해 사용자는 오프라인인 경우에도 캐시 된 콘텐츠에 접근할 수 있어 서비스의 접근성이 향상된다.
- 데이터 사용량의 감소: 캐시에서 콘텐츠를 제공하기 때문에 요금제가 제한되어 있거나 인터넷 연결이 느린 사용자를 위한 서비스의 성능이 향상될 수 있다.
- 향상된 사용자 경험: 대기 시간과 데이터 사용량을 줄여 전반적인 사용자 경험의 개선(빠른 응답 등)에 도움이 된다.
클라이언트 캐시의 사용 예시
- 자주 액세스되는 콘텐츠: 이미지, 스크립트, 스타일시트와 같이 자주 액세스되는 콘텐츠를 저장하는 데 자주 사용되어 웹 서비스의 성능을 향상한다. 전자상거래 웹사이트, 뉴스 웹사이트 등에서 브라우저 캐시에 이미지, 비디오 등을 저장하여 응답성을 향상할 뿐 아니라 네트워크가 느린 경우에도 캐시 된 데이터를 이용하여 볼 수 있다. 소셜 미디어 웹사이트 등에서는 프로필, 이미지 및 자주 액세스하는 콘텐츠를 저장하여 응답성을 향상하는 데 이용된다.
- PWA(Progressive Web App): PWA는 클라이언트 캐시를 사용하여 클라이언트의 웹 브라우저에 콘텐츠를 로컬로 저장한다. 따라서, 오프라인으로 PWA가 작동하여 성능과 접근성이 향상된다.
5. 적절한 캐시의 선택
웹 서비스가 최적의 성능과 사용자 경험을 제공하려면 올바른 캐시 전략을 가져가는 것이 중요하다. 다음의 요소들을 고려하여 적절한 캐시 전략을 선택하는 것이 중요하다.
- 콘텐츠의 만료: 콘텐츠가 변경되는 빈도를 결정하고 콘텐츠 유형별로 적절한 만료 시간을 설정한다. 이렇게 하면 캐시가 최신 상태로 유지되고 사용자는 항상 최신 버전의 콘텐츠를 제공받을 수 있다.
- 사용자 경험: 캐시 전략에 따라 사용자 경험에 미치는 영향이 다르다. 예를 들어 서비스가 실시간 데이터에 의존하는 경우 장기간 데이터를 저장하는 형태의 캐시는 적절하지 않다.
- 네트워크 속도: 사용자가 연결하는 네트워크의 속도를 고려하고 네트워크 상태에 최적화된 캐시 전략을 선택하는 것이 필요하다. 사용자가 느린 네트워크에 있는 경우 장기간 데이터를 저장하는 형태의 캐시가 유용할 수 있다.
- 캐시의 크기: 캐시에 필요한 디스크/메모리 공간의 양을 고려하고 사용 가능한 리소스에 최적화된 캐시 전략을 선택해야 한다.
- 성능: 다양한 캐시 전략의 성능 장단점을 전체적으로 고려해야 한다. 디스크 캐시는 보다 많은 디스크 공간을 제공하고 확장성이 높지만 메모리 캐시만큼 빠르지 않을 수 있다.
- 비용: 추가되는 하드웨어 비용, 증가되는 데이터 전송 비용과 같이 다양한 비용 요소를 고려해야 한다.
https://aws.amazon.com/ko/caching/
캐싱이란 무엇이고 어떻게 작동합니까 | AWS
다양한 캐싱 사용 사례 알아보기 데이터베이스 캐싱 속도와 처리량 면에서, 데이터베이스가 제공하는 성능은 애플리케이션 전체 성능에 무엇보다 크게 영향을 미칠 수 있습니다. 또한 오늘날
aws.amazon.com
https://managewp.com/blog/types-of-web-cache
4 Types of Web Cache (And When to Use Them) - ManageWP
Are you confused by the types of web cache you can use for your website? In this post, we'll explain each as well as when and how to use them!
managewp.com
https://mygumi.tistory.com/275
메모리 캐시 vs 디스크 캐시 :: 마이구미
이 글은 메모리 캐시와 디스크 캐시에 대해 다룬다.(2018.01.07 수정)웹 개발 시 캐시에는 크게 2가지로 나눌 수 있다.클라이언트 측 또는 서버측을 활용한 캐시 사용이다.서버를 통한 캐시 활용은
mygumi.tistory.com
https://www.cloudflare.com/ko-kr/learning/cdn/what-is-caching/
https://www.section.io/engineering-education/understanding-browser-caching/
Understanding Browser Caching
In this article, we will explore the basics of browser caching in web browsing and understand how it works. We will go through the main headers used in caching and highlight some of the limitations of this phenomenon.
www.section.io