tech/architecture

캐시 구현 패턴 정리

daniel_lab 2024. 3. 29. 23:23

1,2 번은 읽기 전략이고 3,4번은 쓰기 전략이다.

  1. cache aside
    클라이언트는 캐시에서 먼저 조회 후, 없으면 database에서 캐시에 캐싱후 읽는다
  2. read-through
    클라이언트는 캐시에서 조회한다. 존재하지않으면 클라이언트가 직접하는게 아니라 캐시쪽에서 자동으로 DB에서 데이터를 조회해 저장 후 반환한다. 클라이언트는 사실상 캐시만 바라보게 되어 코드구조는 매우 단순해진다.
  3. write through
    write 할 일이 있을때마다, 캐시에 먼저 반영 후 데이터베이스에 반영한다. 캐시와 데이터베이스의 일관성이 매번 지켜지므로, 이 성질이 매우 중요한 경우 고려해볼 수 있다. 또한 쓰기작업은 적은데 읽기작업이 많은 경우 + 실시간으로 최신데이터가 필요한 경우 write through 방식이 적극 고려될 수 있다.
  4. write back
    어플리케이션은 cache에 write 한다. 해당 데이터는 dirty 표시처리되어 추후 batch 형식으로 database에 일괄 반영된다. 데이터베이스에 쓰기되는 횟수가 매우 적어질 수 있기 때문에 전체적인 성능향상이 매우 좋다. 그러나 cache와 데이터베이스간의 일시적인 데이터 불일치를 허용하는 방식이기 때문에 cache 데이터에 장애가 생기면 데이터 손실이 발생할 수 있다.