-
어떤 캐싱을 도입할까? feat. 로컬캐시, Redis, 웹캐시개발/Infra 2023. 1. 7. 18:23
캐시란?
- 복잡한 연산이나 시간이 오래 걸리는 연산을 미리 수행한 후, 그 결과 값을 저장하여 필요시 빠르게 가져와 사용할 수 있게 하는 것
캐시의 종류
- 로컬캐시
- Redis
- DB내부 캐시
- 웹캐시
- CDN 등
종류별 특징
- 로컬캐시: 서버의 리소스(Memory, Disk) 내 결과값을 저장한다. (Caffeine cache, EHcache)
- 장점
- 타 서버간 통신비용이 발생하지 않는다.
- 서버 인스턴스 메모리에 저장하기 때문에 가져오는데 속도가 빠르다.
- 단점
- 서버가 여러대로 클러스터링 되어있는 경우, 동기화가 되지 않는다.
- 캐시 데이터가 커질수록 서버 메모리가 부족해 지며 이에 따라 애플리케이션 성능이 저하 될 수 있다.
- 장점
- Redis: 데이터 영속성을 지원하는 In-memory 저장소 (스냅샷 기능을 통해 Disk에 캐시데이터를 저장할 수 있기 때문)
- 장점
- 서버 복제 지원. Master-slave 구조로 여러대의 복제본을 만들 수 있다.
- 트랜잭션 지원
- 여러 데이터 자료형 지원(문자열, 숫자, boolean 등)
- 단점(?)
- 싱글스레드로 동작하기 때문에 병목현상이 발생할 수 있다.
- 로컬캐시에 비해 서버 <-> 레디스 간 통신 비용이 발생한다.
- 장점
- 웹캐시: 웹 사용자에 의해 빈번히 요청되는 데이터를 웹캐시 서버(Nginx 등)에 보관함으로써 응답한다.
- Client - Nginx proxy server - server 구조 일 때, 요청이 nginx 서버에 캐시되어 있다면 실제 요청은 server에 전달되지 않고 Client에게 반환한다.
- 장점
- 요청이 실제 서버로 넘어가지 않기 때문에 부하 자체를 줄여줄 수 있다.
- 단점
- 별도의 웹캐시용의 서버 구성 필요
- Client에서 Server로 요청하는 과정에 Proxy 서버가 중간에 끼게 되는 형태인데, 통신 과정이 늘어나니까 당연히 소요시간이 길어질 수 있다.
'개발 > Infra' 카테고리의 다른 글
[Kubernetes] Canary 배포 환경 구성 (0) 2022.12.30