데이터베이스 성능 최적화
NoSQL, RDBMS선택 장단점 고려 해서 선택하기
동시성 제어, 트랜잭션 관리 중점 -> RDBMS
확장성, 탐색 성능 -> NoSQL
주요 전략 중 하나는 인덱싱을 효과적으로 사용하는 것
JPA 사용 시 @Index 주석을 사용하여 인덱싱 작업을 쉽게 적용할 수 있다.
추가적으로 여러 조건을 동시에 검색하는 경우에는 여러 개의 인덱스를 묶어서 mutliIndexing 사용 시 추가적인 용량을 사용하지만 더 높은 성능향상을 노릴 수 있다.
캐싱 전략
- 애플리케이션 수준 캐싱:
- 정의: 애플리케이션 수준 캐싱에는 자주 액세스하는 데이터를 애플리케이션의 메모리 또는 캐시 저장소 내에 저장하는 작업. 캐시 된 데이터는 여러 요청에서 재사용될 수 있으므로 데이터베이스나 외부 서비스에서 동일한 데이터를 반복적으로 가져올 필요성이 줄어둚
- 장점:
- 데이터베이스 또는 외부 서비스 호출과 관련된 대기 시간을 줄여 애플리케이션 성능을 향상
- 데이터베이스 및 외부 서비스의 부하를 줄여 확장성과 리소스 활용도를 향상
- 특정 애플리케이션 요구 사항에 맞는 캐싱 논리 및 만료 정책에 대한 더 많은 제어 기능을 제공
- 단점:
- 캐시 된 데이터가 최신 상태로 유지되고 정보 소스와 동기화되도록 하려면 캐시 일관성을 주의 깊게 관리해야 한다.
- 특히 광범위한 캐싱 요구 사항이 있는 대규모 애플리케이션의 경우 메모리 사용량이 늘어난다.
- 데이터 업데이트 및 변경 사항을 효과적으로 처리하기 위해 캐시 무효화 전략이 복잡해짐.
- HTTP 캐싱:
- 정의: HTTP 캐싱에는 클라이언트 브라우저, 중간 캐시(예: 프록시), 콘텐츠 전송 네트워크(CDN)를 비롯한 다양한 수준에서 HTTP 응답을 캐싱하는 작업이 포함. 캐시 된 응답은 동일한 매개변수 또는 URL을 사용하는 후속 요청에 재사용될 수 있음.
- 장점:
- 클라이언트 또는 중간 캐시에서 직접 캐시된 응답을 제공하여 서버 로드 및 네트워크 대기 시간을 줄인다. 특히 이미지, 스타일시트, JavaScript 파일과 같은 정적 또는 반정적 리소스의 경우 콘텐츠를 더욱 빠르고 효율적으로 전달하여 사용자 경험을 향상한다.
- 클라이언트가 지정된 기간 동안 응답을 캐시 할 수 있도록 허용하여 오프라인 검색과 네트워크 오류에 대한 복원력을 지원한다.
- 단점:
- 클라이언트 브라우저 및 중간 캐시의 캐싱 동작에 대한 제어가 부족하여 캐시 된 콘텐츠에 불일치가 발생할 수 있다.
- 최신 상태와 성능의 균형을 맞추려면 캐시 제어 헤더 및 만료 정책을 신중하게 구성해야 한다.
- 캐시 무효화 메커니즘이 효과적으로 구현되지 않으면 오래된 콘텐츠가 제공될 수 있다.
- 데이터베이스 쿼리 캐싱:
- 정의: 데이터베이스 쿼리 캐싱에는 자주 실행되는 데이터베이스 쿼리의 결과를 메모리 또는 전용 캐시 저장소에 저장하는 작업이 포함된다. 후속 동일한 쿼리는 데이터베이스에 도달하지 않고 캐시에서 직접 제공될 수 있으므로 쿼리 실행 시간이 단축된다.
- 장점:
- 쿼리 처리 및 데이터 검색의 오버헤드를 줄여 데이터베이스 성능을 향상한다.
- 데이터베이스 부하를 줄여 확장성과 리소스 활용도를 높인다.
- 반복적이거나 예측 가능한 쿼리 패턴이 있는 읽기 중심 워크로드에 특히 효과적이다.
- 단점:
- 캐시 된 쿼리 결과가 기본 데이터와 일관되게 유지되도록 하려면 캐시 무효화 전략을 신중하게 고려해야 한다.
- 캐시된 결과는 빠르게 오래된 결과가 될 수 있으므로 불안정하거나 자주 변경되는 데이터가 있는 쿼리에는 적합하지 않을 수 있다.
- 특히 대규모 데이터세트나 복잡한 쿼리 구조의 경우 메모리 사용량과 복잡성이 증가한다.
- CDN, 역방향 프록시 캐싱:
- 정의: CDN(콘텐츠 전송 네트워크) 및 역방향 프록시는 최종 사용자에게 더 가까운 네트워크 에지에서 정적 및 동적 콘텐츠를 캐시 한다. 캐시 된 콘텐츠는 근처 캐시 서버에서 신속하게 제공될 수 있으므로 대기 시간이 줄어들고 콘텐츠 전달 성능이 향상된다.
- 장점:
- 지리적으로 분산된 엣지 위치에서 콘텐츠를 캐싱하여 콘텐츠 전송 속도와 안정성을 향상한다.
- 트래픽을 캐시 서버로 오프로드하여 원본 서버 부하 및 네트워크 정체를 줄인다.
- 네트워크 에지에서 중복성 및 장애 조치 기능을 제공하여 확장성과 가용성을 향상한다.
- 단점:
- 특히 동적 또는 개인화된 콘텐츠의 경우 캐싱 동작 및 캐시 제거 정책에 대한 제한적인 제어가 가능하다.
- 인프라 및 운영 복잡성이 증가하여 CDN 또는 역방향 프록시 공급자와의 통합이 필요하다.
- 동시 캐시 만료로 인해 원본 서버에 대한 요청이 급증하는 캐시 스탬프와 같은 캐싱 관련 문제가 발생할 수 있다.
- 캐시 무효화:
- 정의: 캐시 무효화는 클라이언트가 최신 정보를 받을 수 있도록 캐시에서 오래되거나 오래된 데이터를 제거하는 프로세스. 이는 데이터 업데이트, 만료 시간 등 사전 정의된 기준에 따라 수동 또는 자동으로 트리거 될 수 있다.
- 장점:
- 오래된 캐시 콘텐츠를 적시에 제거하여 데이터 일관성과 정확성을 보장한다.
- 오래되었거나 관련 없는 데이터가 사용자에게 제공되는 것을 방지하여 캐시 성능과 효율성을 향상한다.
- 캐시와 정보 소스 간의 동적 콘텐츠 업데이트 및 실시간 데이터 동기화가 가능하다.
- 단점:
- 캐시 관리 및 유지 관리가 복잡해지며 데이터 업데이트 프로세스에 대한 세심한 조정이 필요하다.
- 특히 분산 시스템이나 복잡한 종속성과 관련된 캐시 무효화 메커니즘의 경우 추가 오버헤드와 대기 시간이 발생할 수 있다.
- 성능에 영향을 미치는 경쟁 조건, 캐시 스래싱 또는 과도한 캐시 무효화 이벤트를 방지하려면 신중한 구현이 필요하다.
'Diary > WIL' 카테고리의 다른 글
2024-04-28 (0) | 2024.04.29 |
---|---|
2024-04-21 (0) | 2024.04.21 |
2024-04-07 WIL (0) | 2024.04.08 |
2024-03-31 WIL (0) | 2024.03.31 |
2024-03-24-WIL-CI/CD의 개념 (0) | 2024.03.24 |