🥹 서론
하나하나 차근차근
🙂 본론
캐시란?
자주 사용되는 결과 데이터를 미리 캐시 공간에 저장해서 다음 호출 때 빠르게 결과를 전달
캐시를 사용하는 이유
캐시를 사용하는 이유는 속도에 있습니다.
기본적으로 데이터가 저장되는 공간은 Disk입니다.
이유는 다른 Registers, Cache, Memory 들에 비해 저렴하고, 용량이 크기 때문입니다.
하지만, 그림에서 보시다시피 속도가 제일, 매우 느린 편에 속합니다.
엄청 잘 되는 서비스 같은 경우 디스크에서만 계속 불러오게 되면 속도가 따라주지 못해 결국 병목현상이 발생할 수 있습니다.
그럼 모든 데이터를 캐시에 넣어?
캐시는 휘발성을 띕니다. 이 말은, 컴퓨터를 껐다가 켜면 저장된 데이터가 전부 날아간다는 걸 의미합니다.
그리고, 가격 측면에서 디스크에 비해 매우 매우 비쌉니다.
캐시를 이야기할 때 꼭 나오는 법칙이 있습니다.
파레토(Pareto) 법칙 / 롱테일(Long Tail) 법칙
20:80 법칙이라고도 부릅니다.
캐시뿐 아니라 다양한 학문에서 사용하는 말로,
컴퓨터 공학에서는 20%의 요구사항이 80%의 리소스를 잡아먹는다는 의미로 사용됩니다.
실제 서비스에서 자주 호출되는 20%의 리소스를 캐싱함으로써 리소스 사용량을 대폭 줄이고, 성능을 대폭 향상할 수 있게 됩니다.
어떨 때 캐시를 쓰면 좋을까?
대부분 자주 변경되지 않는 데이터 혹은 접근이 많은 데이터인 경우에 하면 좋습니다.
자주 변경되지 않는 경우는 이미지 주소, 입출력이 일정한 데이터 등이 있을 수 있고,
접근이 많은 경우는 예를 들어 1초에 1만 명이 접근하는 리소스를 캐싱하여 1번만 호출되게 할 수 있게 됩니다.
캐싱된 데이터는 DB에 있는 데이터와 불일치가 발생할 수 있습니다.
그렇기 때문에 잦은 Update가 발생하는 데이터는 캐싱하지 않는 것이 적합합니다.
캐시 종류
- Local Cache
- Local 장비 내에서만 사용된다.
- Local 장비의 Resource를 사용한다. (Memory, Disk)
- Local 내에서만 사용하기 때문에 속도가 빠르다.
- Local 장비에 저장하기 때문에 모놀로식 아키텍처에서 사용할 수 있다.
- Global Cache
- 별도의 Cache Server를 사용한다.
- 별도의 Cache Server를 사용하기 때문에 멀티 서버에서 사용할 수 있다.
- 네트워크 트래픽을 사용하기 때문에 Local Cache 보다는 느리다.
- 데이터를 분산하여 저장할 수 있다.
- Replication: 두 개의 이상의 DBMS 시스템을 Master / Slave로 나눠서 동일한 데이터를 저장하는 방법
- Sharding: 여러 데이터베이스에 동일한 테이블의 스키마를 분산하여 저장하는 방법
- 별도의 Cache Server를 두기 때문에 마이크로서비스 아키텍처에서 사용할 수 있다.
😎 결론
Cache를 바람직하게 사용하면, 성능개선에 큰 도움을 얻을 수 있습니다.
참조
https://velog.io/@tyjk8997/%EC%BA%90%EC%8B%9C%EC%99%80-%EA%B6%81%EA%B8%88%ED%95%9C%EC%A0%90
https://mangkyu.tistory.com/69?category=925341
https://sabarada.tistory.com/103
https://namu.wiki/w/%EB%A9%94%EB%AA%A8%EB%A6%AC%20%EA%B3%84%EC%B8%B5%20%EA%B5%AC%EC%A1%B0
https://dahye-jeong.gitbook.io/til/spring/2020-04-09-cache
https://velog.io/@jude0124/DatabaseRedis
https://dev-jj.tistory.com/entry/%EC%BA%90%EC%8B%9CCache-Local-Cache-Global-Cache
'Network' 카테고리의 다른 글
[인증/인가] 세션 / 토큰(JWT) 어떤걸 사용할까? (2) | 2022.06.21 |
---|