-
캐시(Cache)와 CDN(Content Delivery Network) 정리시스템 설계 2021. 9. 21. 13:16
< 캐시 (Cache) >
애플리케이션은 데이터베이스 쿼리를 통해 필요한 데이터를 가져온다.
하지만 빈번한 데이터베이스 호출은 성능 문제를 야기할 수 있으며 이는 캐시를 통해서 문제를 완화할 수 있다.
1. 캐시 계층
데이터가 잠시 보관되는 곳으로 데이터베이스보다 훨씬 빠르다.
캐시 계층을 둠으로써 성능을 개선시킬 수 있고, 데이터베이스로 가는 부하도 줄일 수 있다.
캐시계층은 다음과 같은 방식으로 동작한다.
클라이언트에서 요청을 받으면 요청을 받은 웹서버는 캐시에 응답이 저장되어 있는지 보고,
저장되어 있으면 클라이언트에게 반환하고, 없다면 데이터베이스에 쿼리를 보내 데이터를 찾은 후 반환한다.
대표적인 캐시 오픈소스로 memcached와 redis가 있다.
2. 캐시 사용의 유의점
- 데이터 갱신은 자주 일어나지 않지만, 참조가 빈번하게 일어나는 경우에 사용한다.
- 캐시는 휘발성 메모리에 두므로, 영속적으로 저장되어야할 데이터는 캐시에 적합하지 않다.
- 캐시 만료 기한을 잘 정해야 한다. 만료 기한이 길면, 원본과 차이가 날 수도 있고, 만료 기한이 짧으면 DB를 자주 읽게 될 수 있다.
- 데이터의 일관성을 위해 저장소의 원본을 갱신하는 연산과 캐시를 갱신하는 연산이 단일 트랜잭션으로 처리되어야 한다.
- 캐시 서버를 한 대만 두면 SPOF 발생 가능성이 있으므로, 캐시 서버를 분산시킨다.
- 캐시 메모리는 과할당하는게 좋다. 캐시 메모리는 작으면 데이터가 너무 자주 캐시에서 밀려 캐시의 성능이 떨어지게 된다.
< CDN (Content delivery network) >
정적 컨텐츠를 전송하는데 쓰이는 지리적으로 분산된 서버 네트워크로 이미지, 비디오, css등을 캐시할 수 있다.
CDN은 다음과 같은 방식으로 동작한다.
1. 클라이언트가 URL을 통해서 image.png에 접근한다. 이 때 URL은 CDN 서비스 사업자가 제공하는 URL이다.
2. CDN 서버의 캐시에 해당 이미지가 없는 경우, 원본 서버에 요청을 보내 이미지를 가져온다.
3. 원본 서버로부터 이미지를 받은 CDN 서버는 파일을 캐시하고, 클라이언트에게 반환한다.
CDN은 다음과 같은 장점을 갖는다.
1. 지리적으로 가까운 CDN 서버를 통해 요청 응답 시간을 줄일 수 있다.
2. 캐시를 이용해서 전달하므로 불필요한 데이터베이스 쿼리를 줄일 수 있다.
반응형'시스템 설계' 카테고리의 다른 글
분산 환경에서의 장애감지: Gossip Protocol (1) 2022.08.28 분산 환경에서의 일관성 처리: 정족수 합의 (0) 2022.08.28 안정 해시 설계 (0) 2022.08.02 처리율 제한 장치(Rate Limiter) 설계 (0) 2022.07.31 대규모 시스템에서 데이터베이스 사용 (0) 2022.07.24