일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Deep Learning
- 제이쿼리
- spring boot
- C++
- data structure
- 구버전
- spring
- transformer
- 자바스크립트
- 하이브리드앱
- log4j2
- 리액트
- jQuery
- 테스트 커버리지
- kotlin
- javascript
- 어노테이션
- 자료구조
- Test Coverage
- Java
- JPA
- 스프링
- ES6
- 스프링 부트
- Machine Learning
- annotation
- cache
- bean
- AWS
- react
- Today
- Total
박서희연구소
Caching(캐싱)이란? 본문
개요
Caching 은 애플리케이션의 Object 가 Cache 라는 임시 저장 영역에 저장되는 기술을 뜻한다.
- Cache 자체는 메모리 내의 데이터 구조로 생각할 수 있음
- Caching 기술은 비용과 시간이 많이 소요되는 작업이나, Static 한 웹 페이지, 백엔드 DB 의 Access 등 다양한 상황에서 활용이 가능
- 동일한 정보를 가져오거나 비용이 많이 드는 반복되는 계산을 실행 해야 하는 요구 사항이 있을 때, Caching 을 활용해 중간 Cache 에 데이터를 저장 및 fetching 하는 작업의 용도로 활용할 수 있음
- 특히 데이터에 대한 빠른 Access 용도로 많이 활용
- 적절한 Caching 은 성능을 향상시키고 리소스 사용량을 줄이며 응답성을 높일 수 있음
- Cache 는 장치의 하드 드라이브 공간을 차지하므로, 더 많이 웹 사이트에 액세스하고 앱을 설치하면 필요한 메모리 양이 늘어남
Cache 의 종류
Cache 에는 여러 유형이 있으며 각각 다른 용도로 사용된다.
1. Memory Cache
3개의 카테고리로 나눌 수 있다.
- Primary Cache L1
- Secondary Cache L2
- Main Memory L3 Cache
위 Cache 중 일부는 CPU 와 직접 작동하고, 나머지는 데이터를 저장하고 필요할 때 쉽게 Access 할 수 있는 External Cache 이다.
[Primary Cache L1]
이 유형은 장치의 CPU 에 있는 프로세서의 일부로 매우 작고, 메모리의 범위는 2~64kb 이다.
Primary Cache 는 많은 데이터를 저장하도록 설계되지 않았으며, Random Access Memory 와 유사하게 작동한다.
- 필요할 때 Instruction 에 Access 할 수 있도록 저장됨
- Instruction 이 더이상 유용하지 않다면 새로운 Instruction 을 위해 삭제
- 주요 이점으로는 프로세서와 거의 동일한 속도로 작동함
[Secondary Cache L2]
이 유형은 장치의 프로세서와 장치의 주 메모리 사이의 중개자로, 메모리의 범위는 256~512kb 이다.
- Cache 누락이 발생하게되면 장치는 이 유형으로 이동하여 원하는 것을 찾을 수 있는지 확인
- Cache Miss 는 Cache 에서 Instruction 을 꺼내려다가 실패한 것을 말함
- Cache Miss 가 발생했을 때, Instruction 이 장치의 Primary Cache 에서 충분히 빨리 로드되지 않아, 대신 Secondary Cache 를 검색하게 되는 과정을 거침
- 프로세서 외부에 보관되므로, high-speed bus 를 사용하여 연결해야 함
[Main Memory L3 Cache]
이 유형은 장치의 메인 메모리보다 빠르면서, CPU 로 부터 떨어져 저장되면서 붙여진 이름이다.
3가지 유형의 CPU 관련 Cache 중 가장 크다.
- 1~8mb 사이에서 작동하는 경향이 있고, 이는 훨씬 더 많은 명령을 저장할 수 있음을 의미
- Multicore 프로세서가 있는 경우 일반적으로 모든 코어를 동시에 처리
2. Web Cache
아마 자주 방문하는 웹 페이지가 이전에 방문한 적이 없는 페이지보다 빠르게 로드되는 경험을 느껴본 적이 있을 것이다.
Web Cache 는 필요한 정보에 빠르게 Access 할 수 있도록 브라우저, 웹 사이트 및 서버의 데이터를 저장한다.
만일 Web Cache 가 없다면, 브라우저는 웹 페이지에 Access 할 때마다 새로운 요청을 보내야 한다.
- 정보가 이미 기기의 Cache 에 있는 경우 웹 사이트에서 Static Content 를 빠르게 전달할 수 있음
- User 가 이전에 본 적이 없는 항목에 Access 할 때, Delay 가 발생함
다양한 종류의 Web Cache 지원으로 인해 브라우저에서 서버에 요청하는 수를 줄일 수 있다.
서버의 요청이 적을 수 록 로딩 시간이 빨라지고 웹 사이트 서버에 가해지는 부하가 줄어든다.
- Site Cache
- Browser Cache
- Micro Cache
- Server Cache
[Site Cache]
Page Cache 라고도 불리는 Site Cache 는 웹 사이트를 처음 방문할 때 웹 사이트에 대한 데이터를 저장한다.
- 웹 사이트로 돌아가면 특정 요소를 더 빠르게 로드할 수 있도록 Site Cache 에서 저장된 데이터를 가져옴
- Site Cache 에 저장된 파일을 사용하면 페이지에서 새로운 요청보다 더 빠르게 Static Web Content 를 표시할 수 있음
- 웹 사이트가 Dynamic 할 수 록 Site Cache 를 덜 사용하므로, Static Content 가 많은 웹 사이트에 가장 적합
- 웹 사이트 소유자는 파일이 Site Cache 에 즉시 지울 수 도, 잔여 시간을 결정하여 지울 수 도 있음
[Browser Cache]
웹 브라우저에 내장된 일종의 Site Cache 이며 마찬가지로 방문하는 대부분의 웹 사이트의 Cached Version 을 저장하므로, 브라우저가 웹 사이트를 더 빠르게 로드하도록 한다.
- HTML, Multimedia Content, Image, CSS 와 같은 웹 사이트의 Element 를 저장하여 작동
- 웹 사이트 Content 와 관련된 다른 파일과 그룹화하여 더 빠른 브라우저 동작을 만듬
- 이미지와 Content 를 표시하기 위해 브라우저에서 다시 다운로드할 필요가 없기에 빠름
- 검색 기록은 Browser Cache 에 저장되므로 삭제하여 검색 데이터를 지울 수 있음
- 웹 사이트 소유자는 파일의 Browser Cache 에 잔여 시간을 결정할 수 있음
[Micro Cache]
Micro Cache 의 사용 예로 주식 웹 사이트를 들 수 있는데, 숫자는 계속 바뀌지만 그래프와 표 다이어그램은 그대로 유지된다.
- Dynamic Content 의 Static Element 를 저장하는 것에 사용되며 최대 10초동안 파일을 저장
- Static Element 로 빠르게 변화하는 Content 를 제공
- Static Element 는 10초마다 Micro Cache 에 저장되고 새로 고쳐지며, 더 많은 Dynamic Element 는 필요할때만 변경
[Server Cache]
여러 유형의 Cache Memory 를 포괄하는 용어로 Object Caching, Opcode Caching, CDN(Content Delivery Networ k) Caching 등을 이야기 한다.
자주 Access 하는 데이터를 웹 사이트 서버에 저장하는 방식이다.
- Server Cache 에 저장된 Content 는 요청 즉시 브라우저로 반환
- 웹 사이트는 더 많은 트래픽을 처리하고, 서버의 부하를 줄이면서 Content 를 더 빠르게 전달할 수 있음
- 서버를 통해 웹 사이트를 탐색하는 데 시간을 소비하지 않고 Cache 에서 데이터를 찾음
3. Applicaction/Software Caches
검색 기록, 비디오 썸네일이나 배경 이미지 같은 것을 저장하며, Content 가 무엇이든 대기 시간을 줄이고 사용자가 자주 Access 하는 효율적인 방법을 제공
4. Data Caching
사용자가 동일한 데이터 집합을 자주 요청하고, 해당 데이터가 시간이 지나도 변경되지 않는 상황에 데이터를 더 빨리 제공하기 위해 사용할 수 있다.
웹 또는 애플리케이션 서버에서 유지 관리되며, 서버에 대한 비용이 감소되므로 비용에 효율적이다.
단, 개발자가 보유하고 있는 데이터가 오래되었거나 쓸모 없게 된 경우 Cache 를 지울 수 있는 정책을 스스로 만들어야 한다.
5. Application/Output Caches
CDN 과 같은 네트워크에서 자주 사용하는 유형이며, 많은 Contentment Management Software Package 에 내장되어 있다.
서버 수준에서 작동하며, Static Content 를 저장해 서버의 Overhead 를 줄일 수 있다.
Static Page 를 더 빠르게 로드할 수 있도록 원시 HTML 을 Cache 해 웹 페이지 로딩 시간을 최대 50%까지 줄일 수 있다.
6. Distributed Caching
거대한 대용량 시스템을 보유하고 있는 상황에 사용되며, 여러 분산 DB 서버에 데이터를 저장할 수 있다. 각 DB 서버의 데이터는 서로 다른 웹 서버에 Caching 된다.
다른 Cache 와 다르게 저장 공간이 넉넉하며, 용량이 부족할 경우 서버를 늘리면 되고, 대용량 트래픽 처리에 좋은 방법이다.
- 끝 -
'○ Programming [Basic] > Theory' 카테고리의 다른 글
Big-O(빅오) 표기법이란? (0) | 2023.03.30 |
---|