마스터클래스 질의응답 모음
Cache
- 어떤 상황에 캐시를 해야 좋을까?
- 어떤 캐시가 있을까?
- HTTP 캐시
- DB 캐시
- Client 캐시
- localStorage
- 메모리 캐시
- Server 캐시
- Redis
- 메모리 캐시
- …
CPU ⇒ 레지스트리 ⇒ CPU 내부 캐시 ⇒ 캐시 ⇒ 메모리 ⇒ 파일시스템
i3, i5, i7 ⇒ 교수님 피셜
똑같이 멀티코어를 사용한다고 가정했을 때
왜 i7이 제일 좋을지 → 캐시 메모리가 많아서
서버에서 redis에다가 어쨌든 “요청(HTTP)”을 해야됨
Node 서버에 메모리 캐시 ⇒ 10대가 다 다름
10명의 사용자가 요청을 보냈는데, 10대에 서버에 다 캐시가 없으면? 무조건 리얼 데이터를 히트
Node 서버가 10대 ⇒ redis 1대 공유
redis 서버가 1대 (분산 서버에 캐시를 달아놓을 때 적합)
⇒ 10명에 사용자가 요청을 보내도 항상 캐시 반환
굉장히 많은 데이터를 한 번에 가져올 때
- 사용자에게 요청이 들어올 때 ⇒ 캐시 데이터가 없네? ⇒ 데이터 가져오고 ⇒ 캐시에 올리고 ⇒ 반환
- 문제가 뭘까?
- 첫 요청이 항상 느리다
- 캐시를 언제 갱신할지 모른다
- 캐시 수명을 정해놓을 순 있음
- 캐시가 없으면?
- 다시 사용자가 요청해야 캐시가 만들어짐
- 주기적으로 데이터 가져오고 ⇒ 캐시에 올리고 ⇒ 사용자가 요청 보내면 캐시만 반환
- 항상 일관적인 속도로 응답을 보내줄 수 있음
스케쥴(주기적으로 실행하기)
- cron?
- 정해진 시간에 실행
- 1초마다
- 5초마다
- 1분마다 ( 1분 정각이 되었을 때, 2분 정각이 되었을 때 )
- timer?
- 현재 시점 기준으로 주기적으로 10초마다 실행
- 현재 시간이 18시 26분 36초인데,
- 10초 마다 실행하면?
- 46초
- 56초
- 1분 6초
- 1분 16초
API 호출 최소화하기
- SSR을 할 수도 있고
- 서버에서 미리 데이터 가져올 수도 있고