캐시 전략의 이해: Cache Aside, Write Through, Write Behind

POKUDING·2024년 11월 26일

DB

목록 보기
2/3

애플리케이션 성능 최적화와 사용자 경험 개선을 위해 캐시(Cache)는 필수 요소로 자리 잡았습니다. 캐시는 데이터베이스(DB)보다 더 빠른 접근성을 제공하여 성능을 향상시키지만, 사용 목적과 데이터 특성에 따라 적합한 캐시 전략을 선택하는 것이 중요합니다. 이번 글에서는 대표적인 캐시 전략 세 가지, Cache Aside, Write Through, Write Behind를 살펴보고 각각의 장단점을 이해해 보겠습니다.


1. Cache Aside

Cache Aside데이터 조회 시 캐시를 먼저 확인하고, 캐시에 데이터가 없을 경우 데이터베이스에서 가져오는 방식입니다. 가져온 데이터는 캐시에 저장되어 이후 요청 시 빠르게 반환됩니다.

동작 흐름

  1. 요청이 들어오면 캐시를 먼저 확인합니다.
  2. 캐시에 데이터가 없으면(DB 미스), 데이터베이스에서 조회합니다.
  3. 조회된 데이터를 캐시에 저장합니다.
  4. 캐시에 저장된 데이터를 반환합니다.

장점

  • 캐시에 필요한 데이터만 유지할 수 있어 메모리를 효율적으로 사용합니다.
  • 데이터베이스를 효율적으로 활용할 수 있습니다.

단점

  • 첫 요청 시 딜레이: 캐시에 데이터가 없을 경우 데이터베이스 조회로 인해 첫 요청의 응답 시간이 늘어날 수 있습니다.
  • 데이터의 최신성을 보장하기 어려울 수 있습니다(별도의 캐시 무효화 정책 필요).

2. Write Through

Write Through데이터 저장 요청 시 캐시와 데이터베이스에 동시에 데이터를 기록하는 방식입니다. 이 방식은 캐시에 항상 최신 데이터를 유지할 수 있도록 설계되었습니다.

동작 흐름

  1. 데이터 저장 요청 시 캐시에 데이터를 먼저 저장합니다.
  2. 동시에 데이터베이스에도 저장합니다.
  3. 이후 데이터 조회 요청 시 항상 최신 데이터가 캐시에 존재합니다.

장점

  • 캐시와 데이터베이스 간 데이터 일관성이 유지됩니다.
  • 데이터 조회 시 항상 최신 데이터를 제공할 수 있습니다.

단점

  • 저장 요청 시 딜레이: 캐시와 데이터베이스에 데이터를 동시에 기록하므로 저장 작업이 느려질 수 있습니다.
  • 메모리 낭비 가능성: 자주 사용되지 않는 데이터도 캐시에 저장되기 때문에 캐시 메모리를 비효율적으로 사용할 수 있습니다.

3. Write Behind

Write Behind데이터 저장 요청 시 캐시에만 기록하고, 일정한 시간 간격으로 배치 작업(batch)을 통해 데이터를 데이터베이스에 기록하는 방식입니다.

동작 흐름

  1. 데이터 저장 요청 시 캐시에만 데이터를 기록합니다.
  2. 캐시에 기록된 데이터는 주기적으로 데이터베이스에 일괄 저장됩니다.
  3. 데이터 조회 요청 시 캐시에 저장된 데이터를 바로 반환합니다.

장점

  • 저장 작업이 비동기로 처리되므로 응답 속도가 빨라집니다.
  • 데이터 저장 요청이 많을 경우, 데이터베이스 부하를 줄이고 성능을 최적화할 수 있습니다.

단점

  • 데이터 손실 위험: 캐시에 기록된 데이터가 주기적으로 DB에 저장되기 때문에 저장 주기 이전에 캐시가 삭제되거나 장애가 발생하면 데이터 손실 가능성이 있습니다.
  • 데이터베이스와 캐시 간 일관성 문제가 발생할 수 있습니다.

캐시 전략 선택 시 고려사항

각 전략은 목적과 데이터 특성에 따라 적합성의 차이가 있습니다. 아래 질문들을 통해 어떤 캐시 전략을 선택할지 고민해 볼 수 있습니다:

  • 데이터의 조회 빈도저장 빈도는 어떠한가?
  • 데이터의 실시간성이 중요한가?
  • 캐시와 데이터베이스 간 일관성이 얼마나 중요한가?
  • 캐시를 사용하는 주요 목적은 읽기 성능 최적화인가, 쓰기 성능 최적화인가?

캐시는 애플리케이션 성능 개선에 매우 중요한 역할을 하지만, 무작정 사용하는 것은 피해야 합니다. 데이터 특성, 시스템 요구사항, 업무 로직에 따라 적합한 캐시 전략을 선택하고 설계하는 것이 중요합니다.

이 글에서 살펴본 Cache Aside, Write Through, Write Behind는 각기 다른 장단점을 가지므로, 필요에 따라 단일 전략을 채택하거나 조합하여 사용할 수도 있습니다. 올바른 캐시 전략으로 더 빠르고 효율적인 애플리케이션을 설계해 보세요! 😊

profile
세상을 바꾸는 꿈을 꾸는 개발자

0개의 댓글