<aside> 💡 가비지 컬렉션의 의미에 대해 생각해보자

</aside>

(참고: https://ko.javascript.info/garbage-collection)

Cache??? Caching???

캐시는 일반적으로 일시적인 특성을 가지고 있는 데이터들을 저장하기 위한 목적으로 존재하는 **고속의 데이터 저장 공간(고속의 데이터 스토리지 계층)**이다. 그러므로, 이후에, 다시 해당 데이터에 대한 요청이 들어온 경우, 데이터의 기본스토리지보다 훨씬 빨리 엑세스하여, 요청을 처리할 수 있다.

따라서, 캐시는 데이터저장공간, 캐싱이란 것은 캐시 영역으로 접근하여 데이터를 가져와 요청하는 것을 의미한다. 캐싱을 사용하게 되면, 이전에 검색한 기록이나 계산했던 데이터를 빠르게 접근 할 수 있다.

캐싱은 어떻게 작동하는가??

캐시의 데이터는 일반적으로 RAM과 같이 빠르게 엑세스 할 수 있는 하드웨어에 저장되게 된다. 이렇게 RAM과 같은 공간에 저장을 함으로써, 엑세스속도가 느린 기본스토리지 계층에 엑세스해야 하는 필요자체를 줄이면서 데이터의 검색성능을 높이는 것이 캐싱의 주요 목적이다.

캐시의 장점은???

  1. 애플리케이션의 성능 개선 메모리(RAM)은 디스크보다 훨씬 속도가 빠르기 때문에, 인메모리 캐시에서 데이터를 읽는 속도가 매우 빠르게 된다. 이렇게 빠른 속도로 데이터를 읽음으로써, 애플리케이션의 성능을 개선할 수있다.
  2. 데이터베이스 비용 절감 단일 캐시 인스턴스의 IOPS(초당 입출력 작업량)는 수십만건이다. 이러한 성능을 바탕으로 수많은 데이터베이스 인스턴스를 대체 할 수 있다. 특히나, 처리량 기준으로 데이터베이스 비용이 생기는 경우, 많은 비용을 절감 할 수 있다.
  3. 백엔드의 로드 감소 캐싱은 읽기부분의 상당부분을 데이터베이스에서 인메모리 캐시로 리다이렉션함으로써, 데이터베이스의 로드를 줄일 수 있다.
  4. 예측가능한 성능 데이터베이스에 대한 사용량이 일정시기에 갑자기 많이 늘어나게 되면, DB에서 데이터를 가져오는데 지연이 생기게 되고, 이러한 점은 성능 저하를 불러오게 된다(예측불가한 성능). 하지만, 높은 처리량을 가진, 인메모리 캐시를 활용함으로써 이 문제를 해결 할 수 있게 된다.
  5. 데이터베이스의 핫스팟 제거가능 데이터베이스에서 자주 검색이 되는 항목 같은 경우, 일반적인 데이터보다 훨씬 많은 엑세스가 발생하게 되는데, 이로인해 데이터베이스 핫스팟이 발생할 수 있다. 이런경우, 데이터요구 처리량에 따라 데이터베이스 리소스를 초과해서 공급(프로비저닝, provisioning)해줘야 하는 경우가 있다. 이렇게 자주 검색이 되는 경우, 인메모리 캐시에 공통키를 저장함으로써, 데이터베이스의 핫스팟을 제거하여 초과 프로비저닝의 가능성을 줄일 수 있다.
  6. 읽기처리량(IOPS) 증가 인메모리 시스템은 유사한 디스크 기반 데이터베이스에 비해 훨씬 높은 IOPS를 가지게 된다. 특히나 단일 인스턴스로 캐시를 이용하게 되는 경우, IOPS가 수십만건이 넘게 된다.