TTL (Time To Live) ์ ๋ต
TTL์ด๋?
TTL์ ์บ์๊ฐ ์ ํจํ ์๊ฐ์ ์๋ฏธํฉ๋๋ค. TTL์ด ์ง๋๋ฉด ์บ์๊ฐ ๋ง๋ฃ๋์ด ์๋ก์ด ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ต๋๋ค.๋ฐ์ดํฐ ํน์ฑ๋ณ TTL ์ค์
- ์ ์ ๋ฐ์ดํฐ
- ์ค์ ์ ๋ฐ์ดํฐ
- ๋์ ๋ฐ์ดํฐ
- ์ด๋จ๊ธฐ ๋ฐ์ดํฐ
๋ณ๊ฒฝ์ด ๊ฑฐ์ ์๋ ๋ฐ์ดํฐTTL:
"forever", "1d", "1w"TTL ๋จ์
Grace Period (Stale-While-Revalidate)
Grace๋?
Grace๋ TTL ๋ง๋ฃ ํ์๋ ์ค๋๋ ์บ์(Stale)๋ฅผ ๋ฐํํ๋ฉด์ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ๊ฐฑ์ ํ๋ ์ ๋ต์ ๋๋ค.์๋ ๋ฐฉ์
Grace ์ฌ์ฉ ์๊ธฐ
Grace ์ฌ์ฉ โ
๋ฌด๊ฑฐ์ด ๊ณ์ฐ/์ฟผ๋ฆฌ
- ์ง๊ณ ํต๊ณ
- ๋ณต์กํ Join ์ฟผ๋ฆฌ
- ์ธ๋ถ API ํธ์ถ
- ๋์ฉ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ
Grace ๋ถํ์ โ
๋น ๋ฅธ ์กฐํ
- ๋จ์ SELECT
- ์ธ๋ฑ์ค ์กฐํ
- ์บ์๋ ๋ฐ์ดํฐ
Grace ์ค์ ์์
Grace vs ๊ธด TTL
Grace ์ ๋ต:- ๋๋ถ๋ถ ์ ์ ํ ๋ฐ์ดํฐ (5๋ถ ์ด๋ด)
- ๋ง๋ฃ ์ Stale ์ฆ์ ๋ฐํ (๋น ๋ฆ)
- ๋ฐฑ๊ทธ๋ผ์ด๋ ๊ฐฑ์
- ์ต๋ 1์๊ฐ ์ค๋๋ ๋ฐ์ดํฐ
- ๋ง๋ฃ ์ ์๋ก ๊ณ์ฐ (๋๋ฆผ)
Namespace ์ ๋ต
Namespace๋?
Namespace๋ ์บ์๋ฅผ ๋ ผ๋ฆฌ์ ์ผ๋ก ๋ถ๋ฆฌํ๋ ๊ธฐ๋ฅ์ ๋๋ค.์ฌ์ฉ์๋ณ ๊ฒฉ๋ฆฌ
- ์ฌ์ฉ์ A์ ๋ณ๊ฒฝ์ด ์ฌ์ฉ์ B์ ์ํฅ ์์
- ์ ํ์ ๋ฌดํจํ ๊ฐ๋ฅ
๋ฉํฐ ํ ๋ํธ
๊ธฐ๋ฅ๋ณ ๊ฒฉ๋ฆฌ
์บ์ ํจํด
1. Cache-Aside (Lazy Loading)
๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ํจํด: ํ์ํ ๋ ์กฐํํ๊ณ ์บ์ฑ2. Write-Through
์ฐ๊ธฐ ์ ์บ์๋ ๊ฐฑ์ : ๋ฐ์ดํฐ ๋ณ๊ฒฝ๊ณผ ๋์์ ์บ์ ์ ๋ฐ์ดํธ3. Write-Behind (Write-Back)
์ฐ๊ธฐ๋ฅผ ์บ์์ ๋จผ์ : ์บ์ ์ ๋ฐ์ดํธ ํ ๋น๋๊ธฐ๋ก DB ์ ์ฅ4. Refresh-Ahead
๋ง๋ฃ ์ ๋ฏธ๋ฆฌ ๊ฐฑ์ : TTL์ด ๊ฑฐ์ ๋๋ ๋ ๋ฏธ๋ฆฌ ์ ๋ฐ์ดํฐ ์ค๋น์กฐํฉ ์ ๋ต
๋ ์ด์ด๋ณ TTL
์ค์๋๋ณ ์ ๋ต
- Critical Data
- Important Data
- Nice-to-have Data
ํญ์ ์ ํํด์ผ ํ๋ ๋ฐ์ดํฐ
์๊ฐ๋๋ณ ์ ๋ต
์ฑ๋ฅ ์ต์ ํ
์บ์ ์๋ฐ
์๋ฒ ์์ ์ ๋ฏธ๋ฆฌ ์บ์๋ฅผ ์ฑ์๋๋ค.๋ฐฐ์น ์บ์ฑ
์ฌ๋ฌ ํญ๋ชฉ์ ํ ๋ฒ์ ์บ์ฑํฉ๋๋ค.์ ํ์ ์บ์ฑ
์กฐ๊ฑด์ ๋ฐ๋ผ ์บ์ฑ ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํฉ๋๋ค.์ฃผ์์ฌํญ
์ ๋ต ์์ฝํ
| ๋ฐ์ดํฐ ์ ํ | TTL | Grace | Tags | ๋ฌดํจํ |
|---|---|---|---|---|
| ์ ์ ์ค์ | forever | โ | ["config"] | ์๋ |
| ์ฌ์ฉ์ ํ๋กํ | 1h | โ | ["user"] | ๋ณ๊ฒฝ ์ |
| ์ํ ์ ๋ณด | 30m | 1h | ["product"] | ๋ณ๊ฒฝ ์ |
| ๊ฒ์๊ธ ๋ชฉ๋ก | 5m | 30m | ["post", "list"] | ์์ฑ/์์ ์ |
| ์ค์๊ฐ ํต๊ณ | 1m | 10m | ["stats"] | TTL ์์กด |
| ์ง๊ณ ๋์๋ณด๋ | 10m | 2h | ["dashboard"] | TTL ์์กด |