1. Local Cache ? Global Cache?
(1) ๋ก์ปฌ ์บ์
- ์ฅ์
- ํด๋น ์ธ์คํด์ค์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐธ์กฐํด ๋น ๋ฅธ ๋ฐ์ดํฐ ์ ๊ทผ ๊ฐ๋ฅ
- ํด๋น ์ธ์คํด์ค์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐธ์กฐํ๋ฏ๋ก ๋คํธ์ํฌ ํธ๋ํฝ ๊ฐ์
- ๋จ์
- ์บ์ ๋ฐ์ดํฐ ์ฆ๊ฐ ์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ ์ฆ๊ฐ๋ก ์ธํ ์ฑ๋ฅ ์ ํ ๊ฐ๋ฅ
- ์บ์ฑ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋๋ฉด ์ฌ๋ฌ ์๋ฒ ๊ฐ ์ ํฉ์ฑ ๋ฌธ์ ๋ฐ์ ๊ฐ๋ฅ
(2) ๊ธ๋ก๋ฒ ์บ์
- ์ฅ์
- ๋ค์ค ์ธ์คํด์ค์์ ๋์ผํ ๋ฐ์ดํฐ ๊ณต์ ๊ฐ๋ฅ
- Sharding ๊ณผ Replication ์ ํ์ฉํ ๊ณ ๊ฐ์ฉ์ฑ ๋ณด์ฅ
- ๋จ์
- ์ถ๊ฐ ์ธํ๋ผ ๊ตฌ์ฑ์ผ๋ก ์ธํ ๋น์ฉ ๋ฐ์
- ๋คํธ์ํฌ ์ง์ฐ์ผ๋ก ์ธํด ๋ก์ปฌ ์บ์๋ณด๋ค ์๋ต ์๋๊ฐ ๋๋ฆด ์ ์์
2. ๋ก์ปฌ ์บ์ ์ข ๋ฅ
(1) EhCache
EhCache๋ Java ๊ธฐ๋ฐ์ ์คํ ์์ค ์บ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก, ์ฃผ๋ก Spring ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉ๋๋ค.
- ํน์ง
- Heap ๋ฉ๋ชจ๋ฆฌ, OffHeap ์ ์ฅ์, ๋์คํฌ ์ ์ฅ ๊ฐ๋ฅ
- heap memory ์ ์ฅ ๊ณต๊ฐ : JVM ํ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ
- offHeap ๊ณต๊ฐ(3๋ฒ์ ๋ถํฐ ๋์ ) : memory heap ์ธ๋ถ์ ์ถ๊ฐ์ ์ธ ์ ํ์ ๋ฉ๋ชจ๋ฆฌ ์ ์ฅ์๋ฅผ ์ฌ์ฉํ ์ ์๋ค. Java GC ๊ฐ ์ ์ฉ๋์ง ์์ ์ ์ฅ์์ด๋ฉฐ, Byte ๋จ์์ ํฐ ์บ์๋ฅผ ์์ฑํ ์ ์๋ค.
- ๋์คํฌ ๊ณต๊ฐ : File ์บ์์ ์ ์ฌํ๊ฒ ๋ฐ์ดํฐ๊ฐ ๋์คํฌ์ ์ ์ฅ๋ฉ๋๋ค.
- Terracotta Server์ ์ฐ๊ณํ์ฌ ๋ถ์ฐ ์บ์ ์ง์
- Terracotta Server : ๊ฐ ์บ์ ๋ ธ๋๋ค์ ํ๋ธ ์ญํ ์ ํ๋ ๋ถ์ฐ ์บ์ ์๋ฒ ์ญํ .
- EhCache ์ Terracotta Server ์ ๊ฒฐํฉํด ์บ์ ๋ ธ๋๋ค ๊ฐ์ ๋ณ๊ฒฝ ๋ด์ฉ์ ๊ณต์ ํ๊ธฐ ๋๊ธฐํ ํ๋ค.
- Heap ๋ฉ๋ชจ๋ฆฌ, OffHeap ์ ์ฅ์, ๋์คํฌ ์ ์ฅ ๊ฐ๋ฅ
(2) Caffeine Cache
Caffeine Cache๋ Guava Cache์ ConcurrentHashMap์ ๊ฐ์ ํ ๊ณ ์ฑ๋ฅ ์บ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.
- ํน์ง
- ๋์ ์ฑ๋ฅ๊ณผ ๋ฎ์ ์ง์ฐ์๊ฐ ์ ๊ณต
- LRU(Least Recently Used), LFU(Least Frequently Used), FIFO(First In First Out) ์ ๊ฑฐ ์ ์ฑ ์ง์
- ์๋ ์ ์์ ์บ์ ํฌ๊ธฐ ์กฐ์ ๊ธฐ๋ฅ ์ ๊ณต
(3) Guava Cache
Guava Cache๋ ๊ตฌ๊ธ์์ ์ ๊ณตํ๋ Java ๊ธฐ๋ฐ ์บ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก, ๊ฐ๋จํ ์บ์ฑ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
- ํน์ง
- ConcurrentHashMap ๊ธฐ๋ฐ์ผ๋ก Thread-Safe ๋ณด์ฅ
- ๋ค์ํ ์บ์ ์ ๊ฑฐ ๋ฐฉ์ ์ ๊ณต (์ฌ์ด์ฆ ๊ธฐ๋ฐ, ์๊ฐ ๊ธฐ๋ฐ, ์ฐธ์กฐ ๊ธฐ๋ฐ)
- ์ฌ์ด์ฆ ๊ธฐ๋ฐ ์ ๊ฑฐ : ๊ฐ์ฒด ํฌ๊ธฐ๊ฐ ํฌ๋ค๋ ์๋ฏธ๋ ๊ทธ๋งํผ ๋ฌด๊ฒ๊ฒ ์ฝ์ด์ฌ ์ ์๋ ๊ฒ์ผ๋ก ํฌ๊ธฐ๊ฐ ํฐ ๊ฐ์ฒด๋ฅผ ์บ์ฑํ ๋ ์ ์ฉํ๋ค.
- ์๊ฐ ๊ธฐ๋ฐ ์ ๊ฑฐ : ์ฝ๊ธฐ ์ดํ ์ค์ ํ ์๊ฐ์ด ์ง๋ ํ ๋ง๋ฃํ๋ค.
- ์ฐธ์กฐ ๊ธฐ๋ฐ ์ ๊ฑฐ
- weakReference : ๊ฐ์ด๋ ํค๊ฐ weakReference ๋ก ๊ฐ์ธ์ ธ ์ฐธ์กฐ๊ฐ ์์ด์ง๋ฉด GC ์ฒ๋ฆฌ๋๋ค.
- softReference : JVM ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํ ๊ฒฝ์ฐ GC ์ฒ๋ฆฌ๋๋ ์ฐธ์กฐ ๋ฐฉ์
3. Local Cache ์ฑ๋ฅ ๋น๊ต
- ํ
์คํธ ํ๊ฒฝ
- 8 thread ๊ธฐ๋ฐ ๋์์ฑ ์ฝ๊ธฐ ์์ ์์ ์ด๋น ์์ ๋ / 6 thread ๊ธฐ๋ฐ ๋์์ฑ ์ฝ๊ธฐ ์์ + 2 thread ์ฐ๊ธฐ ์์ ์ฒ๋ฆฌ๋ ๋น๊ต
- Caffeine ์ด read(100%) + read(75%)/write(25%) + write(100%) ์์ ๋ชจ๋ ์ฐ์ํจ
- ๊ฒฐ๋ก
- Caffeine Cache๊ฐ ์ฝ๊ธฐ ๋ฐ ์ฐ๊ธฐ ์์ ์์ ๊ฐ์ฅ ์ฐ์ํ ์ฑ๋ฅ์ ๋ณด์ด๋ฉฐ, ์๋ ์กฐ์ ๊ธฐ๋ฅ์ ํตํด ์ต์ ์ ์บ์ฑ ํ๊ฒฝ์ ์ ๊ณตํ๋ค.
- EhCache๋ ๋์ฉ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ์ ํฉํ๋ฉฐ, Spring ํ๊ฒฝ๊ณผ์ ์ฐ๊ณ๊ฐ ์ฉ์ดํ๋ค.
- Guava Cache๋ ๋จ์ํ ์บ์ฑ์ด ํ์ํ ๊ฒฝ์ฐ ์ ํฉํ๋ค.


'๐ programming-language > java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| Virtual Thread ์ ๋ฌด์์ผ๊น? (2) | 2025.04.10 |
|---|---|
| ์๋ฐ์์ ๋์์ฑ์ ์ ๋ฐ์ํ ๊น? (4) | 2025.03.23 |
| SerialVersionUID๋ฅผ ์ ์ธํด์ผ ํ๋ ์ด์ (0) | 2024.11.28 |
| ์๋ฐ ๋น๋๊ธฐ๋ก ์นดํ ์ฝ์ ์์ ๋ง๋ค๊ธฐ (0) | 2024.11.26 |
| ์ด๋ํฐ ํจํด(adapter pattern) (1) | 2024.07.09 |