Home
>
CS
>
2024
>
๐พ [CS] Cache(์บ์)๋ ๋ฌด์์ผ๊น์?
CS
๐พ [CS] Cache(์บ์)๋ ๋ฌด์์ผ๊น์?
๐ Intro.
- โ๏ธ ์บ์(Cache)๋ ์์ฃผ ์ฌ์ฉ๋๊ฑฐ๋ ์ ๊ทผ ์๋๊ฐ ์ค์ํ ๋ฐ์ดํฐ๋ฅผ ์์๋ก ์ ์ฅํ์ฌ ๋ ๋น ๋ฅด๊ฒ ์ ๊ทผํ ์ ์๋๋ก ํ๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ ๋๋ ์ ์ฅ์.
1๏ธโฃ Cache(์บ์)์ ๋ชฉ์ .
-
1๏ธโฃ ์ฑ๋ฅ ํฅ์
- โ๏ธ ์์ฃผ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ์ ๊ทผํ ์ ์๋๋ก ์ ์ฅ.
-
2๏ธโฃ ์ง์ฐ ์๊ฐ ๊ฐ์(Latency Reduction)
- โ๏ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์๊ฒฉ ์๋ฒ์์ ๋ฐ๋ณต์ ์ธ ์์ฒญ์ ์ค์ฌ ์๋ต ์๋ ๊ฐ์ .
-
3๏ธโฃ ์์คํ
๋ถํ ๊ฐ์
- โ๏ธ ๋์ผํ ์์ฒญ์ ๋ํ ๋ฐ๋ณต์ ์ธ ์ฒ๋ฆฌ ๋ถํ๋ฅผ ์ค์.
-
4๏ธโฃ ๋คํธ์ํฌ ํธ๋ํฝ ์ ๊ฐ
- โ๏ธ ๋คํธ์ํฌ๋ฅผ ํตํ ๋ฐ๋ณต ์์ฒญ์ ์ค์ฌ ํธ๋ํฝ ์ ๊ฐ.
2๏ธโฃ Cache(์บ์)์ ์๋ ์๋ฆฌ.
-
1๏ธโฃ ์บ์ ๋ฏธ์ค(Cache Miss)
- โ๏ธ ํ์ํ ๋ฐ์ดํฐ๊ฐ ์บ์์ ์กด์ฌํ์ง ์์ ๋ ๋ฐ์.
- โ๏ธ ๋ฐ์ดํฐ ์์ค(์: ๋ฐ์ดํฐ๋ฒ ์ด์ค)์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ ์บ์์ ์ ์ฅ.
-
2๏ธโฃ ์บ์ ํํธ(Cache Hit)
- โ๏ธ ํ์ํ ๋ฐ์ดํฐ๊ฐ ์บ์์ ์กด์ฌํ ๋ ๋ฐ์.
- โ๏ธ ๋ฐ์ดํฐ๋ฅผ ์์ค ๋์ ์บ์ค์์ ๊ฐ์ ธ์ด.
-
3๏ธโฃ ์บ์ ๋ง๋ฃ(Cache Expiration)
- โ๏ธ ์บ์์ ์ ์ฅ๋ ๋ฐ์ดํฐ๊ฐ ์ค์ ๋ ์๊ฐ(TTL: Time To Live)์ด ์ง๋๋ฉด ๋ง๋ฃ.
- โ๏ธ ์๋ก์ด ๋ฐ์ดํฐ๋ก ๊ต์ฒด๋๊ฑฐ๋ ์ญ์ ๋จ.
3๏ธโฃ ์บ์์ ์ ํ.
-
1๏ธโฃ ๋ฉ๋ชจ๋ฆฌ ์บ์ (In-Memory Cache)
- โ๏ธ ์ค๋ช
: RAM(Random Access Memory)์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ.
- โ๏ธ ์์ : Redis, Memcached
-
2๏ธโฃ ๋ธ๋ผ์ฐ์ ์บ์ (Browser Cache)
- โ๏ธ ์ค๋ช
: ์น ๋ธ๋ผ์ฐ์ ๊ฐ ์น ํ์ด์ง์ ์์(์ด๋ฏธ์ง, CSS, JavaScript ๋ฑ)์ ์ ์ฅ.
- โ๏ธ ์์ : ํฌ๋กฌ, ํ์ด์ดํญ์ค์ ์บ์.
-
3๏ธโฃ ๋์คํฌ ์บ์ (Disk Cache)
- โ๏ธ ์ค๋ช
: ๋์คํฌ์ ์ผ๋ถ๋ฅผ ์บ์๋ก ์ฌ์ฉ.
- โ๏ธ ์์ : ์ด์์ฒด์ ์ ํ์ผ ์์คํ
์บ์.
-
4๏ธโฃ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์บ์ (Database Cache)
- โ๏ธ ์ค๋ช
: ์์ฃผ ์กฐํ๋๋ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ์บ์์ ์ ์ฅ.
- โ๏ธ ์์ : MySQL Query Cache
-
5๏ธโฃ ์ฝํ
์ธ ์ ์ก ๋คํธ์ํฌ (CDN Cache)
- โ๏ธ ์ค๋ช
: CDN ์๋ฒ๊ฐ ์ ์ ์ฝํ
์ธ ๋ฅผ ์บ์ํ์ฌ ์ฌ์ฉ์์๊ฒ ์ ๊ณต.
- โ๏ธ ์์ : Cloudflare, AWS CloudFront
4๏ธโฃ ์บ์ ๋ฌดํจํ(Cache Invalidation).
๐ ์บ์๋ฅผ ์ต์ ์ํ๋ก ์ ์งํ๊ธฐ ์ํ ๋ฐฉ๋ฒ:
-
1๏ธโฃ ์๊ฐ ๊ธฐ๋ฐ ๋ฌดํจํ (Time-to-Live, TTL)
- โ๏ธ ์บ์ ๋ฐ์ดํฐ๊ฐ ์ผ์ ์๊ฐ์ด ์ง๋๋ฉด ์๋์ผ๋ก ๋ง๋ฃ.
-
2๏ธโฃ ์๋ ๋ฌดํจํ (Manual Invalidation)
- โ๏ธ ๊ด๋ฆฌ์๊ฐ ํน์ ์บ์ ๋ฐ์ดํฐ๋ฅผ ์๋์ผ๋ก ๋ฌดํจํ.
-
3๏ธโฃ Write-Through ์บ์ฑ
- โ๏ธ ๋ฐ์ดํฐ๊ฐ ์บ์์ ์ ์ฅ๋๋ฉด์ ๋์์ ์๋ณธ ๋ฐ์ดํฐ๋ฒ ์ด์ค์๋ ์ ์ฅ.
-
4๏ธโฃ Write-Back ์บ์ฑ
- โ๏ธ ๋ฐ์ดํฐ๊ฐ ์บ์์ ๋จผ์ ์ ์ฅ๋๊ณ , ๋์ค์ ์๋ณธ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ.
5๏ธโฃ ์บ์ ์๊ณ ๋ฆฌ์ฆ(Cache Algorithm).
-
1๏ธโฃ LRU (Least Recently Used)
- ๊ฐ์ฅ ์ค๋ ์ฌ์ฉ๋์ง ์์ ๋ฐ์ดํฐ๋ฅผ ๋จผ์ ์ญ์ .
-
2๏ธโฃ LFU (Least Frequently Used)
- ๊ฐ์ฅ ์ ๊ฒ ์ฌ์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ๋จผ์ ์ญ์ .
-
3๏ธโฃ FIFO (First In First Out)
- ๋จผ์ ๋ค์ด์จ ๋ฐ์ดํฐ๋ฅผ ๋จผ์ ์ญ์ .
-
4๏ธโฃ Random Replacement
- ์์์ ๋ฐ์ดํฐ๋ฅผ ์ ํํ์ฌ ์ญ์ .
6๏ธโฃ ์บ์์ ์ฅ์ ๊ณผ ๋จ์ .
๐ฏ ์ฅ์ .
- โ๏ธ ๋ฐ์ดํฐ ์ ๊ทผ ์๋ ํฅ์.
- โ๏ธ ์์คํ
๋ถํ ๊ฐ์.
- โ๏ธ ๋คํธ์ํฌ ํธ๋ํฝ ์ ๊ฐ.
๐ฏ ๋จ์ .
- โ๏ธ ์บ์ ์ผ๊ด์ฑ ๋ฌธ์ (Cache Consistency)
- โ๏ธ ์บ์ ์ค์ผ(Cache Pollution)
- โ๏ธ ๋ฉ๋ชจ๋ฆฌ ๋ฐ ์ ์ฅ ๊ณต๊ฐ ์ถ๊ฐ ํ์,
7๏ธโฃ ์บ์ ์ฌ์ฉ ์ฌ๋ก.
-
1๏ธโฃ ์น ์ ํ๋ฆฌ์ผ์ด์
.
- โ๏ธ ์ ์ ๋ฆฌ์์ค(์ด๋ฏธ์ง, CSS, JavaScript)๋ฅผ ์บ์ํ์ฌ ๋น ๋ฅธ ๋ก๋ฉ.
-
2๏ธโฃ ๋ฐ์ดํฐ๋ฒ ์ด์ค.
- โ๏ธ ์์ฃผ ์คํ๋๋ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ์บ์.
-
3๏ธโฃ API ์์ฒญ.
- โ๏ธ ๋ฐ๋ณต๋๋ API ์์ฒญ ๊ฒฐ๊ณผ๋ฅผ ์บ์.
-
4๏ธโฃ ๋ธ๋ผ์ฐ์ ์บ์.
- โ๏ธ ์์ฃผ ๋ฐฉ๋ฌธํ๋ ์น ํ์ด์ง ๋ฆฌ์์ค๋ฅผ ์บ์.
-
5๏ธโฃ CDN(Content Delivery Network)
- โ๏ธ ์ ์ ์ฝํ
์ธ ๋ฅผ ์ฌ์ฉ์์ ๊ฐ๊น์ด CDN ์๋ฒ์ ์บ์.
8๏ธโฃ ์บ์์ ๊ด๋ จ๋ ์ฉ์ด.
-
1๏ธโฃ ์บ์ ํํธ(Cache Hit) : ์บ์์์ ๋ฐ์ดํฐ๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ๊ฐ์ ธ์ด.
-
2๏ธโฃ ์บ์ ๋ฏธ์ค(Cache Miss) : ์บ์์ ๋ฐ์ดํฐ๊ฐ ์์ด์ ์๋ณธ์์ ๊ฐ์ ธ์ด.
-
3๏ธโฃ TTL(Time to Live) : ์บ์ ๋ฐ์ดํฐ์ ์ ํจ ๊ธฐ๊ฐ.
-
4๏ธโฃ Eviction(์ ๊ฑฐ) : ์ค๋๋ ์บ์ ๋ฐ์ดํฐ๋ฅผ ์ ๊ฑฐ.
9๏ธโฃ ์บ์ ์ ๋ต ์ ํ ๊ธฐ์ค.
-
1๏ธโฃ ๋ฐ์ดํฐ ์ ๊ทผ ํจํด : ์์ฃผ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ์ธ์ง.
-
2๏ธโฃ ์ผ๊ด์ฑ ์๊ตฌ์ฌํญ : ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ด ์ค์ํ์ง.
-
3๏ธโฃ ์คํ ๋ฆฌ์ง ๋น์ฉ : ๋ฉ๋ชจ๋ฆฌ ๋๋ ๋์คํฌ ๋น์ฉ ๊ณ ๋ ค.
-
4๏ธโฃ TTL(Time to Live) ์ค์ : ์บ์ ๋ง๋ฃ ์๊ฐ.
๐ ๊ฒฐ๋ก .
- โ๏ธ ์บ์(Cache)๋ ์์คํ
์ฑ๋ฅ๊ณผ ์๋ต ์๋๋ฅผ ํฌ๊ฒ ํฅ์์ํฌ ์ ์๋ ์ค์ํ ๊ธฐ์ ์
๋๋ค.
- โ๏ธ ์ ์ ํ ์บ์ฑ ์ ๋ต๊ณผ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ฉด ์์คํ
์ ๋ถํ๋ฅผ ์ค์ด๊ณ ์ฌ์ฉ์ ๊ฒฝํ์ ๊ฐ์ ํ ์ ์์ต๋๋ค.
- โ๏ธ ๊ทธ๋ฌ๋ ์บ์ ์ผ๊ด์ฑ ๋ฌธ์ ์ ์ค๋ฒํค๋ ๋ฑ์ ๊ณ ๋ คํ์ฌ ์ค๊ณํด์ผ ํฉ๋๋ค.
- ๐ ํต์ฌ: โ์์ฃผ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ๋ฅผ ๋ ๋น ๋ฅธ ์ ์ฅ์์ ์์๋ก ์ ์ฅํด๋์ด ์ฑ๋ฅ์ ์ต์ ํํ๋ค.โ