What is Cache?

Cache에 대해 알아보아요

References: jehovah's brunch

Cache란?

  • 한 번 읽어온 data를 임의의 공간에 저장하여,

    • 다음에 읽을 때는 빠르게 결과값을 받을 수 있도록 도와주는 공간

      • 같은 요청이 여러번 들어오는 경우 Cache Server 에서 바로 결과값을 반환해주기 때문에 DB 부하를 줄일 수 있다

  • 프로그램이 수행될 때 나타나는 지역성을 이요하여 memory나 disk 에서 사용되었던 내용을 빠르게 접근할 수 있는 곳에 보관하고, 관리함으로써 다음에 필요할 때 빠르게 참조할 수 있도록 하는 것

    • 즉, 사용되었던 data 는 다시 사용되어질 가능성이 높다 라는 개념을 이용한 것

      • 다시 사용될 확률이 높은 data들을 좀 더 빠르게 접근 가능한 저장소를 사용하는 것이다!

사용 패턴

Cache 사용 패턴 1 - Data Cache

  • Client가 web server에 request를 보내면, web server는 DB에서 data를 가져오기 전에 Cache 에 data가 있는지 확인한다

    • Cache server에 data가 있으면,

      • Data를 DB에 요청하지 않고, client에 cache된 data를 반환한다

        • 이것을 Cache hit 라고 한다

    • Cache server에 data가 없으면,

      • Cache miss 의 상황이며, DB에 해당 data를 요청한다

        • DB는 사용자가 원하는 data를 반환해주고,

        • Web Server는 반환된 data를 다음에 사용할 수 있도록 cache에 저장한 후 client에 반환한다

          • 이후에 같은 요청이 올 때 cache에 저장된 data를 반환할 수 있으므로 Cache hit 이 발생한다

  • 이 구조는 Static assets를 cache 해주는 CDN service와 동일한 구조이다

    • Amazon CloudFront와 같은 CDN service들은 data 원본을 가지고 있는 origin (ex. Amazon S3) 의 data를 cache해서,

    • 다음에 같은 요청이 있을 때 origin data를 요청하지 않고 바로 결과를 반환할 수 있다

Cache 사용 패턴 2 - 동시다발적인 쓰기가 발생하는 경우

  • 동시다발적 쓰기가 발생하는 경우 DB에 갑자기 쓰기 요청이 몰려서 DB가 터질 수 있는데, 이럴 때 Cache를 활용할 수 있다

    • Client는 web server에 쓰기 요청을 하고,

      • web server는 cache에 data를 write한 후 바로 결과를 반환한다

    • Cache는 보통 memory를 사용하기 때문에 속도가 상당히 빠르다

      • 따로 작동하고 있는 worker server 들은

        • cache server에 있는 data를 가져와서

        • 작업을 수행하고,

        • 결과를 DB에 write한다

      • 이렇게 함으로써 DB는 순차적으로 transaction을 처리할 수 있게 된다

Terms

  • Cache hit

    • 참조하고자 하는 data가 cache에 존재하고 있을 경우

  • Cache miss

    • 참조하고자 하는 data가 cache에 존재하지 않을 때

Last updated