☂️ 메모이제이션 (Memoization)
💡 용어 설명
동일한 계산을 반복해야 할 때, 이전에 계산해 둔 결과값을 메모리에 저장해 두었다가 똑같은 요청이 오면 연산을 생략하고 저장된 값을 즉시 반환하는 최적화 기법.
🔁 로직의 흐름
[Step 1] 캐시 히트(Cache hit) 검증
- 메모리에 현 요청에 대한 결과값이 저장되어 있는지 확인.
- 저장 유/무에 따라 메모리에 저장된 결과를 반환 또는 [Step 2] 실행.
[Step 2] 캐시 미스(Cache miss) 처리
- DB 조회 및 로직을 수행하고 결과를 메모리에 저장 및 반환.
☂️ HTTP 캐시와 CDN
💡 용어 설명
- 프록시(Proxy): 서버와 클라이언트 사이를 중계하며 요청을 대신 전달하거나 이미 캐싱된 결과를 바로 반환해주는 중간 서버.
- CDN: 프록시 서버들을 전 세계 곳곳에 깔아둔 글로벌 네트워크. 요청자의 가장 가까운 CDN 프록시 캐시 서버에서 데이터를 광속으로 받아가게 해주는 핵심 인프라.
🔁 로직의 흐름
[Step 1] 최초 사용자 접속
- CDN에 데이터가 X. 원본 서버까지 트래픽이 도달하여 데이터를 생성. CDN은 이를 전달받으면서 유통기한(s-maxage)를 확인하고 해당 기한만큼 캐싱.
[Step 2] 두번째 사용자 접속
- 유통기한 이내 접속. 원본 서버까지 가지 않고, CDN의 캐싱 데이터를 사용자에게 전송.
[Step 3] 세번째 사용자 접속
- 유통기한이 지났으나
stale-while-revalidate 옵션이 켜져있다면, 유예기간 동안은 CDN이 즉시 사용자에게 stale 데이터를 우선 전송하여 화면을 즉시 렌더링 시킴.
- 후에 백그라운드로 원본 서버에서 새롭게 전송된
fresh 데이터를 새롭게 갱신(revalidate) => 사용자는 로딩 창을 볼 필요가 없어짐.
[Step 4] 네번째 사용자 접속
- 유통기한과 유예기간이 모두 끝난 상태. 캐싱된 데이터는 완전히 폐기 되며, [Step 1] 상태로 돌아가 작업을 수행.