๐Ÿ“Œ Cache


๋ฉ”๋ชจ๋ฆฌ ๊ณ„์ธต ๊ตฌ์กฐ

  • ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ณต๊ฐ„์˜ ์†๋„์™€ ์šฉ๋Ÿ‰์€ ๋ฐ˜๋น„๋ก€
    • ๋น ๋ฅผ์ˆ˜๋ก ๊ฐ€๊ฒฉ์ด ์˜ฌ๋ผ๊ฐ„๋‹ค.
  • ์šฉ๋Ÿ‰์ด ํฐ ์ €์žฅ์žฅ์น˜๋Š” ์†๋„๊ฐ€ ๋Š๋ฆผ
  • ๋‘˜ ๋‹ค ์žก๊ธฐ์—” ๋น„์šฉ์ด ๋„ˆ๋ฌด ๋งŽ์ด ๋“ฆ

ํŒŒ๋ ˆํ† ์˜ ๋ฒ•์น™

  • ์›์ธ ์ค‘ ์ƒ์œ„ 20%๊ฐ€ ์ „์ฒด ๊ฒฐ๊ณผ์˜ 80%๋ฅผ ๋งŒ๋“ ๋‹ค.
  • ๋งŽ์ด ์“ฐ๋Š” 20%๊ฐ€ 80%์˜ ํšจ์œจ์„ ์ฐจ์ง€ํ•œ๋‹ค.

๋ฐ์ดํ„ฐ ์ง€์—ญ์„ฑ์˜ ์›๋ฆฌ

  • ์ž์ฃผ ์“ฐ๋Š” ๋ฐ์ดํ„ฐ๋Š” ์‹œ๊ฐ„์  ํ˜น์€ ๊ณต๊ฐ„์ ์œผ๋กœ ํ•œ ๊ณณ์— ๋ชฐ๋ ค์žˆ์„ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Œ
  • ์‹œ๊ฐ„ ์ง€์—ญ์„ฑ
    • for๋ฌธ์— ์กฐ๊ฑด ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๋ฉด ํ•ด๋‹น ๋ณ€์ˆ˜๋Š” for๋ฌธ์ด ๋๋‚˜๊ธฐ ์ „๊นŒ์ง€ ๊ณ„์† ์“ฐ์ผ ํ™•๋ฅ ์ด ๋†’์Œ
  • ๊ณต๊ฐ„ ์ง€์—ญ์„ฑ
    • for๋ฌธ์—์„œ ์–ด๋–ค ๋ฐฐ์—ด์— ์ ‘๊ทผํ–ˆ์„ ๋•Œ ํ•ด๋‹น ๋ฐฐ์—ด์ด ์œ„์น˜ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์˜ ๋‚ด์šฉ์€ for๋ฌธ์ด ๋๋‚˜๊ธฐ ์ „๊นŒ์ง€ ๊ณ„์† ์“ฐ์ผ ํ™•๋ฅ ์ด ๋†’์Œ
    • ์ˆœ์ฐจ ์ง€์—ญ์„ฑ์ด๋ผ๊ณ  ๋ถ€๋ฅด๊ธฐ๋„ ํ•จ(arr[0], arr[1] ๋‹ค์Œ์—๋Š” arr[3]์— ์ ‘๊ทผํ•  ํ™•๋ฅ ์ด ๋†’์„ ๊ฒƒ์„ ๋”ฐ๋กœ ๋ถ„๋ฅ˜ํ•˜๊ธฐ๋„ ํ•จ)
    • ex) ์ฐฝ๊ณ ์˜ ๋ชจ๋“  ์ข…์ด๋ฅผ ํ•œ๋ฒˆ์— ๋ฏธ๋ฆฌ ์ฑ…์ƒ์œ„๋กœ ๊ฐ€์ ธ์˜ค๋ฉด ํšจ์œจ์ด ์ข‹๋‹ค.

Cache

  • ๋‚˜์ค‘์— ํ•„์š”ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌด์–ธ๊ฐ€๋ฅผ ์ €์žฅํ–ˆ๋‹ค๊ฐ€ ์‹ ์†ํ•˜๊ฒŒ ํšŒ์ˆ˜ํ•  ์ˆ˜ ์žˆ๋Š” ๋ณด๊ด€
  • ์›๋ณธ ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•œ๋‹ค.
  • ๋‚ฎ์€ ์‹œ๊ฐ„ ๋ณต์žก๋„๋กœ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ๊ณณ์— ์ฃผ๋กœ ์ €์žฅํ•œ๋‹ค.
    • ex) ์ž๋ฐ”์˜ HashMap
  • ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๊ฑฐ๋‚˜ ์ตœ์‹ ์„ฑ์„ ์žƒ์€ ๊ฒฝ์šฐ ๊ทธ๋•Œ์„œ์•ผ ์›๋ณธ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š” ๊ณณ์— ์ ‘๊ทผํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.
    • ์ตœ์‹ ์„ฑ์„ ์žƒ์—ˆ๋‹ค๋Š” ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ •ํ•ด์ฃผ๋Š” ๊ฒƒ
  • ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์œผ๋ฉด ์บ์‹œ์—์„œ ๋ฐ”๋กœ ํ•ด๋‹น ๋ฐ์ด์ฒ˜๋ฅผ ์ œ๊ณตํ•œ๋‹ค. (Cache Hit)
  • ์บ์‹œ ๊ณต๊ฐ„์€ ์ž‘์œผ๋‹ˆ ์•ˆ์“ฐ๋Š” ๋ฐ์ดํ„ฐ๋ถ€ํ„ฐ ์‚ญ์ œํ•œ๋‹ค.

Example

CPU

  • 1์ดˆ์— ์ตœ๊ณ  ์ˆ˜์‹ญ์–ต๋ฒˆ ์ž‘๋™ ๊ฐ๋Šฅ
  • ์•„๋ฌด๋ฆฌ ๋น ๋ฅธ ์ฃผ๊ธฐ์–ต์žฅ์น˜๋ผ๋„ CPU๋ฅผ ๋”ฐ๋ผ๊ฐ€๊ธฐ ์–ด๋ ค์›€
  • ๊ทธ๋ž˜์„œ SRAM์ด๋ผ๋Š” ํŠน์ˆ˜ํ•œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ CPU์— ๋„ฃ์–ด ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ๋กœ ์‚ฌ์šฉ

ํ•˜๋“œ ๋””์Šคํฌ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

  • ํ•˜๋“œ๋””์Šคํฌ๋Š” ์ฃผ๊ธฐ์–ต์žฅ์น˜์— ๋น„ํ•ด 10๋งŒ๋ฐฐ ๋Š๋ฆผ
  • ์ฒ˜๋ฆฌ ํšจ์œจ์„ ์˜ฌ๋ฆฌ๋ ค๋ฉด ์ž์ฃผ ์“ฐ์ด๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์บ์‹ฑํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.
  • JPA์˜ ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ

Youtube

  • ๋ฏธ๊ตญ์— ์„œ๋ฒ„๊ฐ€ ์žˆ์œผ๋‹ˆ Google Global Cache๋ฅผ ๋‘์–ด ์ธ๊ธฐ ๋™์˜์‚ฌ๋Š” ๊ตญ๋‚ด ์„œ๋ฒ„๊ฐ€ ์ฒ˜๋ฆฌํ•˜๋„๋ก ํ•จ
  • ์ด์ฒ˜๋Ÿผ ์„ธ๊ณ„ ๊ฐ์ง€์— ์บ์‹œ ์„œ๋ฒ„๋ฅผ ๋‘๋Š” ๊ฒƒ์ด CDN

์›น ์บ์‹œ

  • ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์€ ํ•˜๋“œ ๋””์Šคํฌ๋ณด๋‹ค ๋Š๋ฆด ๋•Œ๋„ ๋งŽ๋‹ค.
  • ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ๋Š” ์ •์  ํŒŒ์ผ์„ ํ•˜๋“œ๋””์Šคํฌ๋‚˜ ๋ฉ”๋ชจ๋ฆฌ์— ์บ์‹ฑํ•ด๋’€๋‹ค๊ฐ€ ๋‹ค์Œ๋ฒˆ์— ์ด๋ฅผ ์žฌํ™œ์šฉํ•œ๋‹ค.
  • ๋™์  ํŽ˜์ด์ง€ ๊ฒฝ์šฐ ๋งค๋ฒˆ ๋‚ด์šฉ์ด ๋ฐ”๋€Œ์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋” ๋งŽ์œผ๋ฏ€๋กœ ์„œ๋ฒ„์—์„œ ์ƒ์„ฑํ•œ HTML์„ ์บ์‹ฑํ•œ๋‹ค.
  • ํด๋ผ์ด์–ธํŠธ์—์„œ ์ž์ฃผ ์š”์ฒญํ•˜๋Š” ๋‚ด์šฉ์€ ์›น ์„œ๋ฒ„๋กœ ์ „๋‹ฌํ•˜์ง€ ์•Š๊ณ  ์›น ์„œ๋ฒ„ ์•ž๋‹จ ํ”„๋ก์‹œ ์„œ๋ฒ„์—์„œ ์บ์‹ฑํ•ด๋‘” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”๋กœ ์ œ๊ณตํ•œ๋‹ค. (ํ”„๋ก์‹œ ์บ์‹œ)

๋ธŒ๋ผ์šฐ์ € ์บ์‹œ

  • ์›น ์„œ๋ฒ„์—์„œ ํด๋ผ์ด์–ธํŠธ์— ๋ณด๋‚ด๋Š” HTTP ํ—ค๋”์— ์บ์‹œ ์ง€์‹œ์‚ฌ๋ฅผ ์‚ฝ์ž…ํ•ด ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ด์— ๋”ฐ๋ฅธ ์บ์‹ฑ ์ •์ฑ…์„ ์‹ค์‹œํ•œ๋‹ค.
  • ์บ์‹œ ์œ ํšจ์‹œ๊ฐ„ (max-age)๊ฐ€ ์ง€๋‚˜๋„ ์บ์‹œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐ”๋€Œ์ง€ ์•Š์€ ๊ฒฝ์šฐ๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ETag๋ผ๋Š” ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ํ† ํฐ์„ ์‚ฌ์šฉํ•œ๋‹ค.
  • ์บ์‹ฑ ์ •์ฑ…์€ ์›นํŽ˜์ด์ง€ ์ „๋ฐ˜์  ์ƒํ™ฉ์— ๋”ฐ๋ผ ๊ฐ ํŒŒ์ผ๋งˆ๋‹ค ๋‹ค๋ฅด๊ฒŒ ์ ์šฉ๋˜์•ผ ํ•จ
    • ์ •์  ํŒŒ์ผ๊ณผ ๋™์  ๋ถ€๋ถ„์˜ ๋ธŒ๋ผ์šฐ์ € ์บ์‹ฑ ์ •์ฑ…์€ ๋‹ฌ๋ผ์•ผํ•จ

Redis(Remote Dictionary Server)

  • ๋ฉ”๋ชจ๋ฆฌ ๊ธฐ๋ฐ˜ NoSQL DBMS์˜ ์ผ์ข…์œผ๋กœ ์›น ์„œ๋น„์Šค์—์„œ ์บ์‹ฑ์„ ์œ„ํ•ด ๋งŽ์ด ์”€
  • Dictionary Server๋Š” ์ž๋ฐ”์˜ HashMap๊ณผ ์œ ์‚ฌํ•˜๋‹ค.
  • ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ
  • ์žฌ๋ถ€ํŒ… ๋•Œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํœ˜๋ฐœ๋˜์ง€ ์•Š๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋“œ๋””์Šคํฌ์— ๊ธฐ๋กํ•  ์ˆ˜ ์žˆ์Œ
  • DBMS ์ผ์ข…์ด๋ฏ€๋กœ ๋ช…์‹œ์  ์‚ญ์ œํ•˜์ง€ ์•Š๋Š” ํ•œ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์‚ญ์ œํ•˜์ง€ ์•Š์Œ

EHcache

  • ์ž๋ฐ” ํ‘œ์ค€ ์บ์‹ฑ API ๋ช…์„ธ์ธ JSR-107์„ ๋”ฐ๋ฅด๋Š” ์˜คํ”ˆ์†Œ์Šค ์บ์‹œ ๊ตฌํ˜„์ฒด
  • Spring ํ”„๋ ˆ์ž„์›Œํฌ๋‚˜ Hibernate ORM ๋“ฑ์—์„œ ๋ฐ”๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • ์บ์‹œ ์ €์žฅ ๊ณต๊ฐ„์„ ์†๋„์— ๋”ฐ๋ผ ์—ฌ๋Ÿฌ ๋“ฑ๊ธ‰์œผ๋กœ ๋‚˜๋ˆ„์–ด ๋ฉ”๋ชจ๋ฆฌ ๊ณ„์ธต ๊ตฌ์กฐ ์ ์šฉ ๊ฐ€๋Šฅ
  • ํ•˜๋“œ๋””์Šคํฌ์— ๊ธฐ๋ก ๊ฐ€๋Šฅ

์ฐธ๊ณ ์ž๋ฃŒ