캐시의 사용 이유
캐시 : 데이터나 값을 미리 복사해 놓는 임시 장소
보통 기본적으로 3Tier 아키텍처 구조를 많이 사용한다.
작은 서비스라면 문제가 없지만 사용자가 많아지고 서비스가 커진다면 클라이언트가 많아지고 요청이 많아저서 DB에 대한 부하도 증가 하게 된다. 그러한 DB의 부하를 줄이기 위해 캐시를 도입한다.
약 80%의 결과가 20%의 원인으로 부터 온다는 법칙
이런 법칙을 캐시에도 적용을 시켜 이해해 보면 직관적으로 빠른 이해를 할 수 있다.
캐시에 자주 사용되는 약 20%의 데이터를 미리 캐싱해 둔다면 효과적인 성능 향상을 기대할 수 있다.
공간적 지역성과 시간적 지역성
공간적 지역성 :참조된 주소와 인접한 주소의 내용이 다시 참조되는 특성
시간적 지역성 : 사용 되었던 데이터가 빠른 시일 내에 다시 사용될 가능성이 높다.
캐시의 전략 패턴
크게 읽기 전략과 쓰기 전략이 있다.
읽기 전략 : look aside, read through
쓰기 전략 : Write Around, Write Back, Write Through
읽기 전략
look aside(옆(캐시) 곁(DB))
장점 : 캐시에 문제가 생기는 경우 DB로 요청을 위임
단점 : 캐시, DB의 데이터 정합성 유지 어려움, 첫 조회시 DB에 과부하 발생
read through(항상 캐시를 통해서 읽는다)
장점 : 캐시, DB간의 데이터 정합성 보장
단점 : 캐시가 죽으면 어플리케이션에 문제 발생
쓰기 전략
Write Around(쓰기 우회,캐시를 기본적으로 안쓰며 읽기 쓰기와 혼합)
장점 : 성능이 좋고 빠르다
단점 : 캐시,DB의 데이터 정합성 유지가 어렵다
Write Back(나중에 쓴다.)
장점:쓰기 횟수 비용을 줄일 수 있다.
단점 :캐시의 데이터 유실 문제
Write Through( 항상 캐시를 통해서 저장)
장점 :데이터 정합성이 보장됨
단점 :두 번의 쓰기가 항상 진행 되기 때문에 성능 고려
캐시 사용시 주의 사항
- 자주 사용되면서 변경이 되지 않는 데이터
- 유실되어도 크게 문제가 없는 데이터
- 데이터베이스와 함께 사용할 때 데이터 정합성 문제 고려
'외부활동 > immersion' 카테고리의 다른 글
주문 재고 요청시 동시성 제어테스트 [트랜잭션/격리수준/LOCK/REDIS] (0) | 2024.05.28 |
---|---|
JMeter 부하 테스트 (0) | 2024.05.28 |
포트원 결제 연동 플로우 정리 [노마드코더] (1) | 2024.04.27 |
AWS와 Slack 간단 연동하고 에러로그 알람 받기 [Cloudwatch, chatbot,Simple Notification Service ] (0) | 2024.04.19 |
Redis와 분산 락(Distributed Lock) (0) | 2024.03.18 |