카테고리 없음

캐시(cache)를 왜 쓰나 ?

라임오렌지원 2022. 8. 18. 13:36

매번 데이터베이스를 조회하게 되면

매번 네트워크를 타야하고 동시접속자가 많아졌을 때 엄청난 부하가 발생할 수 있다.

 

적합한 해결 방법으로 '캐시(Cache)'

 

캐시(Cache) 란

자주 사용되는 데이터 또는 계산결과 등을 저장해놓는 저장소

 

애플리케이션과 데이터베이스 사이에 캐시를 두어, 한 번 조회된 내용을 캐시에 쏙 하고 넣는다.

 

그러면, 데이터베이스 조회 없이도 캐시를 통해 데이터를 가져올 수 있고

캐시서버 또한 네트워크를 탄다 하더라도 데이터베이스 내에서 조회하는 과정이 생략되고 가져오기만 하면 된다.

직접 조회보다 효과적이다.

 

캐시의 종류로

Local Cache

- 각각의 애플리케이션 서버 자원을 사용하는 캐시

- 서버의 자원을 바로 사용해서 네트워크 트래픽을 유발하지 않아, 처리속도가 빠르다

- scale-out 시 서버간의 정합성 문제 발생할 수 있다.

- 대표적으로 Caffeine, EhCahe 등이 있다. (Caffeine 은 캐시 구현체 또한 제공)

 

Global Cache

- 별도의 캐시 서버 운영 방식

- 여러서버가 같은 서버를 참조할 수 있어 정합성 문제 해결

- 네트워크 트래픽을 발생시켜 로컬 캐시에 비해 처리 속도가 느리다.

- Redis, MemCached 등

 

단순 데이터 처리일 경우, 로컬 캐시가 낫다.

 

*데이터 정합성

데이터가 서로 모순 없이 일관되게 일치해야 한다.

 

*캐싱

데이터베이스에 쿼리를 한 번씩 날려 데이터를 조회해서 담는다.

 

*scale-out

기존의 서버와 같은 사양 또는 비슷한 사양의 서버 대수를 증가시키는 방법으로 처리 능력을 향상시키는 것.

여러 대의 서버가 분산(나누어)처리할 수 있도록 요청을 나누어주는 서비스

 

 

 

 

https://velog.io/@soongjamm/Caffeine-Cache-%EB%A5%BC-%EC%A0%81%EC%9A%A9%ED%95%B4%EB%B3%B8-%EA%B2%BD%ED%97%98

 

반복되는 DB 조회를 줄이기 위해 Caffeine Cache 를 적용한 경험

현재 배달의민족 서버를 클론하는 Blue-Delivery 를 제작 중입니다.ENUM을 통해 카테고리를 관리할지, DB에 저장하여 관리할지 고민한 경험을 정리했습니다.기존에 카테고리는 아래와 같이 enum 클래

velog.io

 

https://blog.naver.com/PostView.naver?blogId=remocon33&logNo=222479119313&parentCategoryNo=53&categoryNo=&viewDate=&isShowPopularPosts=true&from=search 

 

[DB] 무결성과 정합성의 차이

용어정의 *데이터 무결성 (data integrity) : 데이터 값이 정확한 상태 *데이터 정합성 (data consistenc...

blog.naver.com

 

https://junghyungil.tistory.com/151

 

[Infra] 스케일 업(Scale-up) vs 스케일 아웃(Scale-out)

스케일 업 (Scale-up) 성능이나 용량 증강을 목적으로 하나의 서버에 디스크를 추가하거나 CPU나 메모리를 업그레이드시키는 것을 말한다. 하나의 서버의 능력을 증강하기 때문에 수직 스케일링(ver

junghyungil.tistory.com

 

728x90