728x90

 

 

본 글은 캐싱 전략에 대해서 공부를 한 지식을 정리한 글입니다.

 

캐싱 전략은 데이터나 결과저장하여 반복적인 요청이나 계산을 더 빠르게 처리할 수 있도록 하는 방법론입니다. 효과적인 캐싱 전략을 사용하면 애플리케이션의 응답 속도를 개선하고, 서버의 부하를 줄일 수 있습니다.

 

 

Cache의 기본 개념

캐시(Cache)

  • 원본 데이터 저장소가 아닌 다른 장소 데이터를 저장하는 시스템입니다.
  • 캐시는 속도와 성능을 높이기 위해 자주 접근되는 데이터를 빠르게 제공할 수 있습니다. 그러나 캐시는 휘발성 메모리제한된 저장 공간을 사용하기 때문에 언제든지 사라질 수 있으며, 저장할 데이터 양이 너무 크지 않도록 관리해야 합니다.

캐시 적중(Cache Hit)

  • 캐시에 접근했을 때, 요청한 데이터캐시에 존재하는 경우를 의미합니다.
  • 캐시 적중은 응답 속도를 빠르게 하고, 데이터베이스나 원본 데이터 저장소의 부하를 줄이는 데 도움이 됩니다.

캐시 누락(Cache Miss)

  • 캐시에 접근했을 때, 요청한 데이터캐시에 존재하지 않는 경우를 의미합니다.
    • 이 경우, 데이터는 원본 데이터 저장소에서 조회되며, 필요에 따라 캐시에 새롭게 저장될 수 있습니다.

삭제 정책(Evicion policy)

  • 캐시의 저장 공간이 부족할 때 어떤 데이터를 제거할지를 결정하는 정책입니다.
  • 적절한 삭제 정책을 선택하는 것은 캐시 성능을 극대화하고 효율성을 유지하는 데 중요합니다.

 

 

Cache-Aside(Lazy Loading) 전략

Cache-Aside 전략은 애플리케이션이 캐시데이터베이스직접적으로 제어하는 방법입니다. 이 전략은 데이터의 읽기와 쓰기 작업에 따라 캐시와 데이터베이스를 함께 활용합니다.

 

데이터를 조회할 때 항상 캐시를 먼저 확인하는 전략입니다. 캐시에 데이터가 있으면 캐시에서 데이터를, 없으면 원본에서 데이터를 가져온 뒤 캐시에 저장합니다.

  • 읽기 작업
    • 애플리케이션이 데이터를 요청할 때, 먼저 캐시에서 데이터를 조회합니다.
    • 캐시에 데이터가 존재하지 않으면 (캐시 미스), 데이터베이스(원본)에서 데이터를 조회하여 캐시에 저장한 후 클라이언트에게 반환합니다.
  • 쓰기 작업
    • 데이터베이스에 데이터가 변경되면, 해당 데이터와 관련된 캐시 항목을 명시적으로 무효화하거나 삭제합니다. 이후, 다음 요청 시 캐시가 재빌드됩니다.

장점

  • 유연성: 애플리케이션이 직접 캐시를 제어하므로, 복잡한 데이터 요구 사항을 처리할 수 있습니다.
  • 캐시 적중률 개선: 자주 조회되는 데이터가 캐시에 유지되므로 성능이 개선됩니다.

단점

  • 최초로 조회할 때 캐시를 확인하기 때문에 최초의 요청은 상대적으로 오래 걸립니다.
  • 반드시 원본을 확인하지 않기 때문에, 데이터가 최신이라는 보장이 없습니다.

 

Write-Through 전략

 

 

 데이터가 데이터베이스캐시동시에 기록됩니다. 데이터가 업데이트될 때, 캐시와 데이터베이스가 일관성을 유지합니다.

장점

  • 데이터 일관성 유지
    •  캐시와 데이터베이스 간의 데이터 일관성을 보장합니다.
    • 데이터베이스캐시 항상 동기화되어 있기 때문에, 데이터베이스에서 업데이트된 내용캐시에서도 즉시 반영됩니다.

단점

  • 성능 저하
    • 모든 쓰기 작업이 캐시와 데이터베이스 양쪽에 동시에 이루어지기 때문에, 쓰기 작업의 성능이 저하될 수 있습니다.
    • 특히 높은 쓰기 빈도를 가진 애플리케이션에서는 성능이 문제가 될 수 있습니다.
  • 자원 소모
    •  자주 사용되지 않는 데이터캐시에 저장되므로, 캐시의 용량이 빨리 소모될 수 있습니다. 이로 인해 캐시의 관리와 유지 보수에 추가적인 자원이 소요될 수 있습니다.

 

 

Write-Behind 전략

 

Write-Behind (또는 Write-Back) 전략은 캐싱에서 데이터를 업데이트하거나 저장할 때 사용되는 전략으로, 캐시와 원본 데이터 저장소 간의 동기화를 조절합니다.

 

 

  • 비동기 저장
    • Write-Behind 전략에서는 데이터가 캐시에 저장될 때 원본 데이터 저장소(예: 데이터베이스)에 대한 업데이트는 즉시 이루어지지 않습니다.
    • 대신, 데이터가 캐시에 기록된 후, 일정 시간 간격으로 또는 특정 조건이 충족되었을 때, 캐시에 저장된 데이터가 배치(batch)로 원본 데이터 저장소에 기록됩니다.

 

장점

  • 성능 향상
    •  원본 데이터 저장소에 대한 쓰기 작업이 비동기적으로 처리되기 때문에, 쓰기 작업의 성능이 향상됩니다. 애플리케이션의 응답 속도를 빠르게 유지할 수 있습니다.
  • 캐시 적중률 향상
    •  쓰기 작업이 지연되기 때문에, 캐시에서 읽기 작업을 빠르게 처리할 수 있습니다. 이로 인해 캐시의 적중률이 향상될 수 있습니다.

단점

  • 데이터 일관성 문제
    •  캐시와 원본 데이터 저장소 간의 데이터가 일치하지 않을 수 있습니다.
    • 캐시와 데이터 저장소 간의 동기화가 지연되기 때문에, 최신 데이터가 원본 데이터 저장소에 즉시 반영되지 않을 수 있습니다.
  • 복잡성
    •  비동기 쓰기 작업을 관리하기 위해 추가적인 복잡성이 필요합니다.
    • 실패한 쓰기 작업에 대한 처리나 데이터 일관성 유지를 위한 추가적인 로직이 필요할 수 있습니다.