์บ์ฑ(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๋ Spring์์ ์ฌ์ฉ ๊ฐ๋ฅํ ์๋ฐ ๊ธฐ๋ฐ ์คํ ์์ค ๊ธฐ๋ฐ์ Local Cache์
๋๋ค.
๊ธฐ๋ณธ JVM๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋์ด, ๋ ๋์ค์ฒ๋ผ ๋ณ๋์ ์๋ฒ ์ค์น ์์ด ๊ฐ๋ณ๊ฒ ์ฌ์ฉํ๊ธฐ ํธ๋ฆฌํฉ๋๋ค.
EHcache๋ ๋ก์ปฌ์บ์๋ก์ ํน์ ์๋ฒ์ ์ข
์๋๊ธฐ ๋๋ฌธ์, ๋ฉํฐ ์๋ฒ ํ๊ฒฝ์์๋ ๋ฐ์ดํฐ ์ฑํฌ๊ฐ ํ์ํฉ๋๋ค.
๋ฐ๋ผ์ ๋๊ธฐํ๊ฐ ์๋์ ์ํฅ์ ์ค ์ ์๊ณ , ๋ฐ์ดํฐ ์ ์ค ๊ฐ๋ฅ์ฑ์ด ์๋ค๋ ๋จ์ ์ด ์์ต๋๋ค.
@Cacheable: ์บ์ํ ์ ์๋ ๋ฉ์๋๋ฅผ ์ง์
@CachePut: ๋ฉ์๋ ์คํ์ ์ํฅ์ ์ฃผ์ง ์๊ณ ์บ์๋ฅผ ๊ฐฑ์
@CacheEvict: ์บ์์์ ์ค๋๋๊ฑฐ๋ ์ฌ์ฉํ์ง ์๋ ๋ฐ์ดํฐ๋ฅผ ์ ๊ฑฐํ๋ ๋ฉ์๋๋ฅผ ์ง์ , void ๋ฐํํ์์๋ง ์ฌ์ฉ ๊ฐ๋ฅ
@Caching ์ด๋
ธํ
์ด์
์ ์ฌ๋ฌ ๊ฐ ์ฌ์ฉํ ๋ ์ฌ์ฉ
Global Cache๋ ์ฌ๋ฌ ์๋ฒ์์ ์บ์ ์๋ฒ์ ์ ๊ทผํ์ฌ ์ฐธ์กฐํ๋ ๋ฐฉ๋ฒ์
๋๋ค.
๋ณ๋์ ์บ์ ์๋ฒ๋ฅผ ์ด์ฉํ๊ธฐ ๋๋ฌธ์ ์๋ฒ ๊ฐ ๋ฐ์ดํฐ ๊ณต์ ๊ฐ ์ฝ๊ณ ๋ฐ์ดํฐ๋ฅผ ๋ถ์ฐํ์ฌ ์ ์ฅํ ์ ์์ต๋๋ค.
ํ์ง๋ง ๋คํธ์ํฌ ํธ๋ํฝ์ ์ฌ์ฉํด์ผ ํด์ Local Cache๋ณด๋ค๋ ์๋๊ฐ ๋๋ฆฝ๋๋ค.
Local Cache์ ๋ค๋ฅด๊ฒ ์บ์์ ์ ์ฅ๋ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋๋๋ผ๋ ์ถ๊ฐ์ ์ธ ์์
์ด ๋ณ๋๋ก ํ์ํ์ง ์์ต๋๋ค.
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 ์๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ์ญ์