Skip to content

Latest commit

ย 

History

History
64 lines (51 loc) ยท 3.98 KB

README.md

File metadata and controls

64 lines (51 loc) ยท 3.98 KB

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

๐Ÿ’ก cache hit
์ฐธ์กฐํ•˜๋ ค๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์บ์‹œ์— ์กด์žฌํ•  ๋•Œ cache hit๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
๐Ÿ’ก cache miss
์ฐธ์กฐํ•˜๋ ค๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์บ์‹œ์— ์กด์žฌ ํ•˜์ง€ ์•Š์„ ๋•Œ cache miss๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
๐Ÿ’กcache hit ratio(์บ์‹œ ํžˆํŠธ์œจ)
(cache hit ํšŸ์ˆ˜)/(์ „์ฒด์ฐธ์กฐํšŸ์ˆ˜) = (cache hit ํšŸ์ˆ˜)/(cache hit ํšŸ์ˆ˜ + cache miss ํšŸ์ˆ˜)

Local Cache๋Š” ์„œ๋ฒ„๋งˆ๋‹ค ์บ์‹œ๋ฅผ ๋”ฐ๋กœ ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ, Memory, Disk์™€ ๊ฐ™์€ ๋กœ์ปฌ ์„œ๋ฒ„ ์žฅ๋น„์˜ Resource๋ฅผ ์ด์šฉํ•ฉ๋‹ˆ๋‹ค.

์„œ๋ฒ„ ๋‚ด์—์„œ ์ž‘๋™ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์†๋„๊ฐ€ ๋น ๋ฅธ ์žฅ์ ์ด ์žˆ์ง€๋งŒ, ๋‹ค๋ฅธ ์„œ๋ฒ„์˜ ์บ์‹œ๋ฅผ ์ฐธ์กฐํ•˜๊ธฐ ์–ด๋ ต๋‹ค๋Š” ๋‹จ์ ๋„ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.
์บ์‹œ์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋Š” ๊ฒฝ์šฐ์—๋Š” ํ•ด๋‹น ์„œ๋ฒ„๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  peer์— ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ „๋‹ฌํ•˜๊ณ  ๋ณต์‚ฌํ•˜๋Š” ๊ณผ์ •์„ ๊ฑฐ์นฉ๋‹ˆ๋‹ค.
์ด ๋•Œ๋ฌธ์— WAS ์ธ์Šคํ„ด์Šค๊ฐ€ ๋Š˜์–ด๋‚˜๊ณ , ๋งŒ์•ฝ ์บ์‹œ ์ €์žฅ ๋ฐ์ดํ„ฐ ํฌ๊ธฐ๊ฐ€ ์ปค์ง€๋ฉด ์„ฑ๋Šฅ์ด ์ €ํ•˜๋˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

Ehcache

EhCache๋Š” Spring์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ž๋ฐ” ๊ธฐ๋ฐ˜ ์˜คํ”ˆ ์†Œ์Šค ๊ธฐ๋ฐ˜์˜ Local Cache์ž…๋‹ˆ๋‹ค.
๊ธฐ๋ณธ JVM๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋˜์–ด, ๋ ˆ๋””์Šค์ฒ˜๋Ÿผ ๋ณ„๋„์˜ ์„œ๋ฒ„ ์„ค์น˜ ์—†์ด ๊ฐ€๋ณ๊ฒŒ ์‚ฌ์šฉํ•˜๊ธฐ ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
EHcache๋Š” ๋กœ์ปฌ์บ์‹œ๋กœ์„œ ํŠน์ • ์„œ๋ฒ„์— ์ข…์†๋˜๊ธฐ ๋•Œ๋ฌธ์—, ๋ฉ€ํ‹ฐ ์„œ๋ฒ„ ํ™˜๊ฒฝ์—์„œ๋Š” ๋ฐ์ดํ„ฐ ์‹ฑํฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ ๋™๊ธฐํ™”๊ฐ€ ์†๋„์— ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ๊ณ , ๋ฐ์ดํ„ฐ ์œ ์‹ค ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

@Cacheable: ์บ์‹œํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ์ง€์ •
@CachePut: ๋ฉ”์†Œ๋“œ ์‹คํ–‰์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๊ณ  ์บ์‹œ๋ฅผ ๊ฐฑ์‹ 
@CacheEvict: ์บ์‹œ์—์„œ ์˜ค๋ž˜๋˜๊ฑฐ๋‚˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ์ง€์ •, void ๋ฐ˜ํ™˜ํ˜•์—์„œ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
@Caching ์–ด๋…ธํ…Œ์ด์…˜์„ ์—ฌ๋Ÿฌ ๊ฐœ ์‚ฌ์šฉํ•  ๋•Œ ์‚ฌ์šฉ

Global Cache - Redis

Global Cache๋Š” ์—ฌ๋Ÿฌ ์„œ๋ฒ„์—์„œ ์บ์‹œ ์„œ๋ฒ„์— ์ ‘๊ทผํ•˜์—ฌ ์ฐธ์กฐํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.
๋ณ„๋„์˜ ์บ์‹œ ์„œ๋ฒ„๋ฅผ ์ด์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„ ๊ฐ„ ๋ฐ์ดํ„ฐ ๊ณต์œ ๊ฐ€ ์‰ฝ๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์‚ฐํ•˜์—ฌ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ด์„œ Local Cache๋ณด๋‹ค๋Š” ์†๋„๊ฐ€ ๋Š๋ฆฝ๋‹ˆ๋‹ค.
Local Cache์™€ ๋‹ค๋ฅด๊ฒŒ ์บ์‹œ์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋”๋ผ๋„ ์ถ”๊ฐ€์ ์ธ ์ž‘์—…์ด ๋ณ„๋„๋กœ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Redis

Redis๋ž€ Key, Value ๊ตฌ์กฐ์˜ ๋น„์ •ํ˜• ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์˜คํ”ˆ ์†Œ์Šค ๊ธฐ๋ฐ˜์˜ ๋น„๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ (DBMS)์ž…๋‹ˆ๋‹ค.
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ์บ์‹œ, ๋ฉ”์„ธ์ง€ ๋ธŒ๋กœ์ปค๋กœ ์‚ฌ์šฉ๋˜๋ฉฐ ์ธ๋ฉ”๋ชจ๋ฆฌ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„ ์ €์žฅ์†Œ์ž…๋‹ˆ๋‹ค.

โœ… ์บ์‹œ ์„œ๋ฒ„ ๊ตฌํ˜„ ํŒจํ„ด
๐Ÿ’ก Look aside cache
1. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญ
2. ์›น์„œ๋ฒ„๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ Cache ์„œ๋ฒ„์— ๋จผ์ € ํ™•์ธ
3. Cache ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์œผ๋ฉด DB์— ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜์ง€ ์•Š๊ณ  Cache ์„œ๋ฒ„์— ์žˆ๋Š” ๊ฒฐ๊ณผ๊ฐ’์„ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ฐ”๋กœ ๋ฐ˜ํ™˜ (Cache Hit)
4. Cache ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์œผ๋ฉด DB์— ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜์—ฌ Cache ์„œ๋ฒ„์— ์ €์žฅํ•˜๊ณ  ๊ฒฐ๊ณผ๊ฐ’์„ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ฐ˜ํ™˜ (Cache Miss)

๐Ÿ’ก Write Back
1. ์›น์„œ๋ฒ„๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ Cache ์„œ๋ฒ„์— ์ €์žฅ
2. Cache ์„œ๋ฒ„์— ํŠน์ • ์‹œ๊ฐ„ ๋™์•ˆ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋จ
3. Cache ์„œ๋ฒ„์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ DB์— ์ €์žฅ
4. DB์— ์ €์žฅ๋œ Cache ์„œ๋ฒ„์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œ