-
Notifications
You must be signed in to change notification settings - Fork 1
성능 개선 사항 ‐ Caching
Mingi Kim edited this page May 7, 2024
·
1 revision
- 인-메모리 캐싱
- 분산 캐싱
- DB 캐싱
- 웹 캐싱
- 어플리케이션 캐싱
UserDetails는 사용자 인증 및 프로필 정보에 자주 접근하는 데이터로, 이 데이터의 조회 횟수가 매우 빈번하다. 이를 효율적으로 관리하기 위해, redis에 그 값을 저장하여 db의 접근을 최소화 했다.
항공편 검색 기능은 다수의 사용자에게 빈번하게 사용되며, [웹페이지 이용자 통계](https://www.linkedin.com/pulse/how-important-page-one-search-results-2023-dave-meyer/)에 따르면 90%이상의 사용자가 1페이지만 조회하며, 2페이지는 전체 사용자의 6.6%, 3페이지 이후엔 그보다 더 적은 것으로 보였다. 이러한 서버 리소스의 최적화를 위하여 1,2페이지의 경우에만 캐싱이 되도록 전략을 수립했다.
- 응답 시간 감소: 데이터를 빠르게 검색하여 응답 시간을 크게 단축시킬 수 있다.
- 데이터베이스 부하 감소: 자주 요청되는 쿼리 결과를 캐싱함으로써 데이터베이스 서버의 부하를 줄이고, 리소스 사용을 최적화한다.
- 캐시 일관성: 캐시된 데이터가 최신 상태를 유지하도록 관리해야 한다. 데이터가 변경될 때 캐시도 즉시 갱신되어야 일관성 문제를 방지할 수 있다.
- 메모리 관리: Redis는 메모리를 사용하여 데이터를 저장하므로, 충분한 메모리 할당이 필요하다. 메모리 부족 상황을 방지하기 위한 모니터링과 적절한 메모리 관리 전략이 필요하다.
- 보안 고려: 캐시 데이터가 민감한 정보를 포함할 수 있으므로, 적절한 보안 조치를 취해야 한다.
-
정적 파일 캐싱 적용
nginx에서 css, js 파일을 캐싱
server { listen 80; server_name www.pigonair.shop; location / { root /usr/share/nginx/html; index index.html index.htm; expires 30d; add_header Cache-Control "public"; try_files $uri $uri/ =404; } }