Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 파이썬 #python #모듈 #module #import #random #time #calendar #sys
- 파이썬 #python #class #클래스 #상속
- 배포
- aws
- 파이썬 #python #docstring
- 파이썬 #python #전역변수 #지역변수 #eval
- 파이썬기본문법 #파이썬 #python
- redis
- 파이썬 #python #예외처리 #exception
- jsonb
- 파이썬 #python #Comprehension
- Git
- 약수 수하기
- 민감 정보 관리
- 파이썬 #python #file #i/o #input #output
- 파이썬 #python #함수 #function
- 파이썬 #python #filter #map #reduce
- EC2
- 파이썬 #python #os #os.path #glob
- docker
- 파이썬 #python #가변매개변수 #키워드가변매개변수 #args #kwargs
- 프로그래머스
- 파이썬 #python #enumerate
- spring boot
- 연산자메서드
- 사용자정의예외
- 파이썬 #python #lambda #람다
- PostgreSQL
- aw3
- 파이썬 #python #지역함수
Archives
- Today
- Total
Yeonnnnny
[TIL] 로컬 캐시 , 외부 캐시 본문
✅ Cache란?
- 데이터의 원래 소스보다 더 빠르고 효율적으로 접근할 수 있는 임시 데이터 저장소이다.
- 캐싱 저장소는 원본보다 빠른 접속 속도를 가진다.
- 사용괴었던 데이터는 다시 사용되어질 가능성이 높다는 개념을 이용해, 다시 사용될 확률이 높은 것은 더 빠르게 접근 가능한 저장소를 사용한다는 개념이다.
운영체제 관점에서 말하자면,
캐시는 빠른 CPU 처리 속도와 상대적으로 느린 메인 메모리에서의 속도 차이를 극복하는 중간 버퍼 역할을 한다. 쉽게 표현해서, CPU는 빠르게 일을 진행하고 있는데, 메모리에서 데이터를 가져오고 가져가는데 느려서 중간에 미리 CPU에 전달될 데이터를 들고 서 있는 형태이다.
✅ 사용하면 좋은 경우
- 단순 데이터
- 동일한 데이터를 반복적으로 제공해야 하는 경우 (자주 조회되는 데이터)
- 데이터의 변경 주기가 빈번하지 않고, 단위 처리 시간이 오래 걸리는 경우 (데이터 갱신으로 DB와 불일치 발생할 수 있기 때문)
- 데이터의 최신화가 반드시 실시간으로 이뤄지지 않아도 서비스 품질에 영향을 거의 주지 않는 데이터
✅ 장점
- 서버 간 불필요한 트래픽을 줄일 수 있으며, 웹 어플리케이션 서버의 부하가 감소된다.
- 캐시에 저장된 데이터를 빠르게 읽어와 어플리케이션을 사용하는 고객에게 쾌적한 서비스 경험을 제공할 수 있다.
✅ 캐싱의 종류
데이터베이스 캐싱
- 데이터 베이스 쿼리는 데이터베이스 서버에서 수행되기 때문에 속도가 느려지고 부하가 몰릴 수 있다.
- 결과값을 데이터베이스에 캐싱함으로서 응답시간을 향상시킬 수 있다.
- 대다수의 데이터베이스 서버는 최적화된 캐싱을 위한 기능을 기본적으로 지원한다.
응답 캐싱
- 웹 서버의 응답을 메모리에 캐싱한다.
- 애플리케이션의 캐시는 로컬 인메모리에 저장(로컬 캐시)되거나 캐시 서버 위에서 실행되는 인메모리 데이터베이스(글로벌 캐싱)에 저장할 수 있다.
HTTP 헤더를 통한 브라우저 캐싱
- 모든 브라우저는 HTML, CSS, 이미지와 같은 파일들을 임시 저장을 위해 HTTP 캐시의 구현을 제공하고 있다.
✅ 응답캐싱
📌Local Cache
- 로컬 장비 내에서만 사용하는 캐시
- 서버마다 캐시를 따로 저장한다.
- Ehcache, Caffeine, ...
장점
- 로컬에서 작동되기 때문에 속도가 빠르다.
- 네트워크 지연, 단절 이슈에서 자유롭다.
- 서버 어플리케이션과 라이프 사이클을 같이 하므로 사용하기 편하다.
단점
- 휘발성 메모리이기 때문에, 애플리케이션이 다운되면, 메모리 데이터는 사라진다.
- 서버 간의 데이터 불일치 가능성이 존재한다. (여러 서버에서의 메모리 캐시가 일치하지 않는 상황)
- 애플리케이션의 메모리가 부족해질 수 있다.
📌Global Cache
- 여러 서버에서 캐시 서버에 접근해 사용하는 캐시
- Memechached, Redis,...
장점
- 데이터를 분산해 저장할 수 있다.
- Replication : 데이터를 복제(두개 이상의 DBMS 시스템을 Master-Slave로 나눠 동일 데이터 저장)
- Sharding : 데이터를 분산해 저장(같은 테이블 스키마를 가진 데이터를 다수의 DB에 분산해 저장)
- 별도의 캐시서버를 이용하기 때문에 서버 간 데이터 공유가 쉽다.
- 여러 서버에서 캐시 서버에 접근하여 참조할 수 있다.
- 확장성이 좋다.
단점
- 네트워크 트래픽을 사용해야 해서 로컬 캐시에 비해 상대적으로 느리다.
- 네트워크 단절 이슈가 있다.
'TIL' 카테고리의 다른 글
[TIL] Window 11에 Docker 설치 (0) | 2025.02.28 |
---|---|
[TIL] NoSQL Database (0) | 2025.02.27 |
[TIL] 영속성 컨텍스트 (0) | 2025.02.24 |
[TIL] AWS S3 버킷 생성과 엑세스키 생성 (0) | 2025.02.19 |
[TIL] Spring MVC 요청 처리 과정 (0) | 2025.02.18 |