매번 데이터베이스를 조회하게 되면
매번 네트워크를 타야하고 동시접속자가 많아졌을 때 엄청난 부하가 발생할 수 있다.
적합한 해결 방법으로 '캐시(Cache)'
캐시(Cache) 란
자주 사용되는 데이터 또는 계산결과 등을 저장해놓는 저장소
애플리케이션과 데이터베이스 사이에 캐시를 두어, 한 번 조회된 내용을 캐시에 쏙 하고 넣는다.
그러면, 데이터베이스 조회 없이도 캐시를 통해 데이터를 가져올 수 있고
캐시서버 또한 네트워크를 탄다 하더라도 데이터베이스 내에서 조회하는 과정이 생략되고 가져오기만 하면 된다.
직접 조회보다 효과적이다.
캐시의 종류로
Local Cache
- 각각의 애플리케이션 서버 자원을 사용하는 캐시
- 서버의 자원을 바로 사용해서 네트워크 트래픽을 유발하지 않아, 처리속도가 빠르다
- scale-out 시 서버간의 정합성 문제 발생할 수 있다.
- 대표적으로 Caffeine, EhCahe 등이 있다. (Caffeine 은 캐시 구현체 또한 제공)
Global Cache
- 별도의 캐시 서버 운영 방식
- 여러서버가 같은 서버를 참조할 수 있어 정합성 문제 해결
- 네트워크 트래픽을 발생시켜 로컬 캐시에 비해 처리 속도가 느리다.
- Redis, MemCached 등
단순 데이터 처리일 경우, 로컬 캐시가 낫다.
*데이터 정합성
데이터가 서로 모순 없이 일관되게 일치해야 한다.
*캐싱
데이터베이스에 쿼리를 한 번씩 날려 데이터를 조회해서 담는다.
*scale-out
기존의 서버와 같은 사양 또는 비슷한 사양의 서버 대수를 증가시키는 방법으로 처리 능력을 향상시키는 것.
여러 대의 서버가 분산(나누어)처리할 수 있도록 요청을 나누어주는 서비스
https://junghyungil.tistory.com/151