Local Cache & Distributed Cache ๐Ÿ’ฐ

Lzhtkยท2025๋…„ 8์›” 26์ผ

์˜ค๋Š˜์€ ๋กœ์ปฌ ์บ์‹œ( Local Cache )์™€ ๋ถ„์‚ฐ ์บ์‹œ( Distributed Cache )์˜ ์ฐจ์ด์™€ ์„ ํƒ ๊ธฐ์ค€์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž โ•

๋กœ์ปฌ ์บ์‹œ์™€ ๋ถ„์‚ฐ ์บ์‹œ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ž„์‹œ๋กœ ์ €์žฅํ•ด ์‹œ์Šคํ…œ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๊ณตํ†ต ๋ชฉ์ ์„ ๊ฐ€์ง€์ง€๋งŒ, ์ €์žฅ ์œ„์น˜์™€ ์‚ฌ์šฉ ๋ฒ”์œ„์— ๋”ฐ๋ผ ๊ตฌ์กฐ์  ์ฐจ์ด์™€ ์ ์šฉ ์ „๋žต์ด ํฌ๊ฒŒ ๋‹ค๋ฅด๋‹ค.
์˜ค๋Š˜์€ ๊ทธ ์ฐจ์ด์™€ ์„ ํƒ ๊ธฐ์ค€์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž.


1 . ๐Ÿ  ๋กœ์ปฌ ์บ์‹œ ( Local Cache ) ๋ž€?

  • ๋ฐ์ดํ„ฐ๊ฐ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋‚ด๋ถ€ ๋ฉ”๋ชจ๋ฆฌ ( JVM Heap ) ์— ์ €์žฅ๋˜๋Š” ์บ์‹œ ๋ฐฉ์‹์ด๋‹ค.
  • ๋Œ€ํ‘œ์ ์œผ๋กœ Ehcache, Caffeine, Guava Cache ๋“ฑ์ด ์žˆ๋‹ค.
  • ์บ์‹œ ๋ฐ์ดํ„ฐ๊ฐ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ธ์Šคํ„ด์Šค ์•ˆ์— ์กด์žฌํ•œ๋‹ค.

โœ… ํŠน์ง•

  • ์žฅ์ 
    • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ๊ฐ™์€ ํ”„๋กœ์„ธ์Šค ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ์–ด์„œ ์กฐํšŒ ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค
    • ์™ธ๋ถ€ ๋„คํŠธ์›Œํฌ ์š”์ฒญ์ด ์—†์œผ๋‹ˆ ์ง€์—ฐ ์ตœ์†Œํ™”
  • ๋‹จ์ 
    • ์ธ์Šคํ„ด์Šค ๊ฐ„ ๋ฐ์ดํ„ฐ ๊ณต์œ  ๋ถˆ๊ฐ€ -> ๋ฉ€ํ‹ฐ ์„œ๋ฒ„ ํ™˜๊ฒฝ์—์„œ๋Š” ๋ฐ์ดํ„ฐ ๋ถˆ์ผ์น˜ ๊ฐ€๋Šฅ
    • JVM์ด ์žฌ์‹œ์ž‘๋˜๋ฉด ์บ์‹œ๊ฐ€ ์‚ฌ๋ผ์ง ( ๋น„์˜์†์„ฑ )

2 . โž—๏ธ ๋ถ„์‚ฐ ์บ์‹œ ( Distributed Cache ) ๋ž€?

  • ์™ธ๋ถ€ ์บ์‹œ ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ , ์—ฌ๋Ÿฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ์ด๋ฅผ ๊ณต์œ ํ•œ๋‹ค.
  • ๋Œ€ํ‘œ์ ์œผ๋กœ Redis, Memcached ๋“ฑ์ด ์กด์žฌํ•œ๋‹ค.
  • ์บ์‹œ ๋ฐ์ดํ„ฐ๊ฐ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์™ธ๋ถ€์— ์œ„์น˜ํ•œ๋‹ค.

โœ… ํŠน์ง•

  • ์žฅ์ 
    • ์—ฌ๋Ÿฌ ์„œ๋ฒ„๊ฐ€ ๊ฐ™์€ ์บ์‹œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•˜๋ฏ€๋กœ ์ผ๊ด€์„ฑ ์œ ์ง€์— ๊ฐ•์ ์ด ์žˆ์Œ.
    • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋งŽ์•„์ ธ๋„ ํ™•์žฅ์„ฑ ํ™•๋ณด ๊ฐ€๋Šฅ
  • ๋‹จ์ 
    • ๋„คํŠธ์›Œํฌ๋ฅผ ๊ฑฐ์น˜๋ฏ€๋กœ ๋กœ์ปฌ๋ณด๋‹ค ์ƒ๋Œ€์ ์œผ๋กœ ๋А๋ฆผ
    • ๋ณ„๋„ ์ธํ”„๋ผ ๊ตฌ์„ฑ ๋ฐ ์žฅ์•  ๋Œ€์‘ ํ•„์š” ( ๋‹จ์ผ ์žฅ์• ์ , failover๋“ฑ ๊ณ ๋ ค )

3 . ๐Ÿ’ฐ ๋กœ์ปฌ ์บ์‹œ VS ๋ถ„์‚ฐ ์บ์‹œ

๊ตฌ๋ถ„๋กœ์ปฌ ์บ์‹œ๋ถ„์‚ฐ ์บ์‹œ
์ €์žฅ ์œ„์น˜์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ JVM ๋‚ด๋ถ€์™ธ๋ถ€ ์บ์‹œ ์„œ๋ฒ„ (Redis ๋“ฑ)
์†๋„์ดˆ๊ณ ์† (๋„คํŠธ์›Œํฌ ์—†์Œ)๋„คํŠธ์›Œํฌ ์™•๋ณต ๋น„์šฉ ์กด์žฌ
์ผ๊ด€์„ฑ์ธ์Šคํ„ด์Šค๋งˆ๋‹ค ์บ์‹œ ๋ถ„๋ฆฌ โ†’ ๋ถˆ์ผ์น˜ ๋ฐœ์ƒ ๊ฐ€๋Šฅ์—ฌ๋Ÿฌ ์ธ์Šคํ„ด์Šค๊ฐ€ ๊ณต์œ  โ†’ ์ผ๊ด€์„ฑ ๋ณด์žฅ
ํ™•์žฅ์„ฑ์ธ์Šคํ„ด์Šค ์ˆ˜ ๋Š˜์–ด๋‚˜๋ฉด ์บ์‹œ๋„ ๋ถ„์‚ฐ๋˜์–ด ๊ด€๋ฆฌ ์–ด๋ ค์›€์บ์‹œ ์„œ๋ฒ„ ํ™•์žฅ์œผ๋กœ ์•ˆ์ •์  ํ™•์žฅ ๊ฐ€๋Šฅ
๋ณต์žก์„ฑ์„ค์ • ๋ฐ ์šด์˜ ๊ฐ„๋‹จ์šด์˜ ๋ณต์žก (์„œ๋ฒ„ ๊ตฌ์„ฑ/์šด์˜ ํ•„์š”)

4 . ๐Ÿคทโ€โ™€๏ธ ์–ธ์ œ ์–ด๋–ค ์บ์‹œ๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ• ๊นŒ?

  • ๋กœ์ปฌ ์บ์‹œ
    • ๋‹จ์ผ ์„œ๋ฒ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜
    • ์ฝ๊ธฐ ์„ฑ๋Šฅ์ด ์ตœ์šฐ์„ ์ด๊ณ , ์•ฝ๊ฐ„์˜ ๋ฐ์ดํ„ฐ ๋ถˆ์ผ์น˜๋ฅผ ๊ฐ์ˆ˜ํ•ด๋„ ๋˜๋Š” ๊ฒฝ์šฐ
    • ex ) ๊ฐœ์ธ ํ”„๋กœ์ ํŠธ, ์†Œ๊ทœ๋ชจ ์„œ๋น„์Šค, CPU ์บ์‹œ์ฒ˜๋Ÿผ ์ดˆ๊ณ ์† ์กฐํšŒ๊ฐ€ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ
  • ๋ถ„์‚ฐ ์บ์‹œ
    • ๋ฉ€ํ‹ฐ ์ธ์Šคํ„ด์Šค / ํด๋Ÿฌ์Šคํ„ฐ ํ™˜๊ฒฝ ( ์„œ๋น„์Šค๊ฐ€ ์ˆ˜ํ‰ ํ™•์žฅ๋˜๋Š” ๊ฒฝ์šฐ )
    • ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ์ด ์ค‘์š”ํ•œ ๊ฒฝ์šฐ ( ex - ๋กœ๊ทธ์ธ ์„ธ์…˜, ์žฅ๋ฐ”๊ตฌ๋‹ˆ, ์žฌ๊ณ  ์ˆ˜๋Ÿ‰ ๋“ฑ )
    • ํŠธ๋ž˜ํ”ฝ์ด ํฌ๊ณ , ์บ์‹œ ์šฉ๋Ÿ‰์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ดˆ๊ณผํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ

โ— ์‹ค๋ฌด์—์„œ๋Š” ๋กœ์ปฌ ์บ์‹œ์™€ ๋ถ„์‚ฐ ์บ์‹œ๋ฅผ ๊ฒฝ์Ÿ ๊ด€๊ณ„๊ฐ€ ์•„๋‹Œ, Multi-Level Cache ๊ตฌ์กฐ๋กœ ๋ณ‘ํ–‰ ์ ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค.


5 . ๋งˆ๋ฌด๋ฆฌ ๐Ÿ”š

์บ์‹œ๋Š” ๋‹จ์ˆœํžˆ ๋น ๋ฅธ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ๋„๊ตฌ๊ฐ€ ์•„๋‹Œ ์„œ๋น„์Šค ๊ตฌ์กฐ์™€ ์š”๊ตฌ์‚ฌํ•ญ์— ๋งž๊ฒŒ ์ „๋žต์ ์œผ๋กœ ์„ ํƒํ•ด์•ผํ•˜๋Š” ์š”์†Œ์ด๋‹ค.

  • ๋กœ์ปฌ ์บ์‹œ -> ๋น ๋ฅธ ์†๋„์™€ ๋‹จ์ˆœ์„ฑ
  • ๋ถ„์‚ฐ ์บ์‹œ -> ์ผ๊ด€์„ฑ๊ณผ ํ™•์žฅ์„ฑ
    ๊ฒฐ๊ตญ, ์˜ค๋Š˜ ์•Œ์•„๋ณธ ๊ฒƒ์„ ํ† ๋Œ€๋กœ ์‹ค๋ฌด์—์„œ ์„œ๋น„์Šค ๊ทœ๋ชจ, ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ ์š”๊ตฌ, ์šด์˜ ๋ณต์žก๋„๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์–ด๋–ค ์บ์‹œ ์ „๋žต์„ ํƒํ• ์ง€ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ๋Š” ์—ญ๋Ÿ‰์„ ๊ธธ๋Ÿฌ๋ณด์ž โ—โ•

0๊ฐœ์˜ ๋Œ“๊ธ€