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