2024. 5. 26. 21:30ใ์นดํ ๊ณ ๋ฆฌ ์์
๐ป ํ๋ก์ ํธ ๊ฐ๋ต ์๊ฐ
'Cafe-On'์ ์นดํ ์๋ฃ ์ฃผ๋ฌธ ์๋น์ค๋ก,
๊ณ ๊ฐ๋ค์ด ๋๊ธฐ ์๊ฐ์ผ๋ก๋ถํฐ ์์ ๋กญ๊ฒ ์นดํ์ ๋ค์ํ ์๋ฃ๋ฅผ ์ฆ๊ธธ ์ ์๋๋ก ๋์์ฃผ๋ ์๋น์ค์ ๋๋ค.
๐คํน์ ์นดํ์ ์ฟ ํฐ ์ด๋ฒคํธ๋ก ์ธํด ๋ฐ๋ณต์ ์ธ ๋ฉ๋ด ์กฐํ ์์ฒญ์ด ์์๋๋ ๊ฒฝ์ฐ๋ฅผ ๊ณ ๋ คํด๋ณด์!
โ ์นดํ ๋ฉ๋ด ์กฐํ ๊ธฐ๋ฅ์ ํน์ง
- ์นดํ ๊ณ ๋ฆฌ ๋ณ๋ก ๋ถ๋ฅํ๊ณ ํํฐ๋ง์ ํตํด ์ฌ์ฉ์๊ฐ ์ํ๋ ํญ๋ชฉ์ ์ฝ๊ฒ ์ฐพ์ ์ ์๋๋ก ์ ๊ณต.
- ๋ค์ํ ์ปคํผ, ์๋ฃ ๋ฉ๋ด์ ๊ฐ๊ฒฉ, ์ค๋ช , ์ต์ ๋ฆฌ์คํธ ๋ฑ์ ๋ฐ์ดํฐ๋ฅผ ํฌํจ
- ๋ฉ๋ด ๋ฐ์ดํฐ๋ ๋ณ๊ฒฝ๋๋ ๋น๋๊ฐ ๋ฎ์
- ํน์ ๋ฉ๋ด๋ ์ต์ ์ ์ฌ๊ณ ์ํ๋ฅผ ์ค์๊ฐ์ผ๋ก ๋ฐ์ํ์ฌ ํ์ ๋ ๋ฉ๋ด๋ฅผ ๋ฏธ๋ฆฌ ์๋ ค์ค.
โ ๋ฐ์ดํฐ ๋ฒ ์ด์ค๋ก ์์ฒญ์ ๋ณด๋ธ๋ค๋ฉด?
๋ค์ํ ๋ฉ๋ด ํญ๋ชฉ, ์กฐ๊ฑด์ ํฌํจํ๋ ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฌ๋ช ์ด ๋์์ ์์ฒญํ๊ฒ ๋๋ฉด
- ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ๋ฐ๋ณต์ ์ธ ์์ฒญ์ด ๋ฐ์ํ๋ฉฐ ํธ๋ํฝ ์ฆ๊ฐ
- ํ์ด์ง ๋ก๋ฉ ์๋ ์ ํ ๋ฐ ์๋ฒ ์ฑ๋ฅ ์ ํ
- ๋ ๋ง์ ๋ฆฌ์์ค ํ์๋ก ์ธํ ๋น์ฉ ์ฆ๊ฐ
โ์ด๋ฅผ ๋๋นํ ์ ์๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ๋ฌด์์ด ์์๊น?
1. ์บ์ฑ
์บ์์์ญ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์์ ์ ๊ทผํ๋ ๋ฐฉ์
์บ์ (Cache) ๋?
์์ฃผ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๋ฅผ ํน์ ๊ณต๊ฐ์ ์ ์ฅํด๋์๋ค๊ฐ
๊ฐ์ ์์ฒญ์ด ์ค๋ฉด ์๋ฒ์ ๋ค์ ์์ฒญํ์ง์๊ณ ์ ์ฅํด๋์ ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ์ ๊ณตํ๊ธฐ ์ํ ์์ ์ ์ฅ์
์ฃผ๊ธฐ์ต์ฅ์น์ CPU ์ฌ์ด์ ์์นํ์ฌ, ๋ฐ์ดํฐ ์ ๊ทผ์๊ฐ์ ์ต์ํํ๋ค.
๐ ํ์ฉ:
- ์๋ ํฅ์ : ์๋ณธ ๋ฐ์ดํฐ์ ์ ๊ทผํ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ (A)์ด ์บ์์ ์ ๊ทผํ๋ ์๊ฐ(B)๋ณด๋ค ์ค๋ ๊ฑธ๋ฆฌ๋ ๊ฒฝ์ฐ (A > B)
- ๋ฐ๋ณต ์์ฒญ ์ต์ ํ : ๋ฐ๋ณต์ ์ผ๋ก ๋์ผํ ๊ฒฐ๊ณผ๋ฅผ ๋๋ ค์ฃผ๋ ๋ฐ์ดํฐ๊ฐ ๋ง๊ฑฐ๋ ๋ง์ ์ฐ์ฐ์ด ํ์ํ ๊ฒฝ์ฐ
- ๋ถํ ๋ถ์ฐ : ์ ์ฒด ํ์ด์ง ๋๋ ํ์ด์ง์ ์ผ๋ถ๋ฅผ ์บ์ฑํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์๋ฒ ๋ถํ๋ฅผ ์ค์ด๋ ๊ฒฝ์ฐ
2. ๋ก๋ ๋ฐธ๋ฐ์ฑ๊ณผ ์ค์ผ์ผ๋ง
๋ก๋ ๋ฐธ๋ฐ์ฑ : ์์ฒญ์ ์ฌ๋ฌ ์๋ฒ์ ๋ถ์ฐ์์ผ ์๋ฒ์ ๋ถํ๋ฅผ ์ค์ด๋ ๊ธฐ์
์ค์ผ์ผ๋ง :
- Scale-out : ์๋ฒ ์ธ์คํด์ค๋ฅผ ์ถ๊ฐํ์ฌ ์์คํ ์ ์ฒ๋ฆฌ ๋ฅ๋ ฅ์ ํ์ฅ์ํค๋ ๋ฐฉ๋ฒ
- Scale-up : ๊ธฐ์กด ์๋ฒ์ ํ๋์จ์ด ๋ฆฌ์์ค๋ฅผ ์ ๊ทธ๋ ์ด๋ํ์ฌ ์ฒ๋ฆฌ ๋ฅ๋ ฅ์ ํฅ์์ํค๋ ๋ฐฉ๋ฒ
๐ ํ์ฉ:
- ์ฑ๋ฅ ์๊ตฌ ํ๊ฒฝ : ์ฑ๋ฅ์ด ์๊ตฌ๋๋ ํ๊ฒฝ์ด๋ ๋๋์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๊ฐ ์๊ตฌ๋๋ ํ๊ฒฝ์์ ํ์๋ก ํจ
- ํ์ฅ์ฑ ํฅ์ : ์์คํ ์ ๋ณต์ก์ฑ์ ์ฆ๊ฐ๋์ง๋ง, ํ์ฅ์ฑ๊ณผ ์ฑ๋ฅ์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์์
3. ๋น๋๊ธฐ ์ฒ๋ฆฌ ๋ฐ ํ
์์ ์ ์ฒ๋ฆฌ ์๊ฐ์ ๊ธฐ์ค์ผ๋ก ์์ ์ ๋ถ๋ฆฌํ๊ณ ,
์ค๋ ๊ฑธ๋ฆฌ๋ ์์ ์ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์ฒ๋ฆฌํ๋ ๋์์ ๋ค๋ฅธ ์์ ์ ๋น๋๊ธฐ์ ์ผ๋ก ์ฒ๋ฆฌํ์ฌ
์์คํ ์ ์ฒด ์๋ต์ฑ์ ํฅ์์ํจ๋ค.
์ด ๊ณผ์ ์์ ๋น๋๊ธฐ ์ฒ๋ฆฌ๋ฅผ ์ํด ๋ฉ์์ง ํ๋ฅผ ์ฌ์ฉํ๋๋ฐ,
๋ฉ์์ง ํ๋ FIFO ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋ฉฐ, ๋ค์ด์จ ์์ฒญ์ ์์๋ก ์์ ๋๊ณ ์์ฐจ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋๋ก ํ๋ค.
๐ ํ์ฉ:
- ์์ ๋ถ๋ฆฌ : ์๊ฐ์ด ๋ง์ด ๊ฑธ๋ฆฌ๋ ์์ ๊ณผ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌํ ์ ์๋ ์์ ์ ๋ถ๋ฆฌํ์ฌ ํจ์จ์ฑ์ ๋์
- ํธ๋ํฝ ๊ด๋ฆฌ : ๋์ ํธ๋ํฝ ์ํฉ์์๋ ์์ ์ฑ์ ์ ์งํ ์ ์์
- ๋ฆฌ์์ค ์ต์ ํ : ๋ฆฌ์์ค ์ฌ์ฉ์ ์ต์ ํํ๊ณ , ์์คํ ๋ถํ๋ฅผ ๋ถ์ฐ์ํด
๐์บ์๋ฅผ ์ ํํ๊ฒ ๋ ์ด์
* ๋น์ฉ ํจ์จ์ฑ
- ์๋ฒ ์ธ์คํด์ค ์ถ๊ฐ๋ ํ๋์จ์ด ์ ๊ทธ๋ ์ด๋๊ฐ ์ด๋ฃจ์ด์ง ๋์ ๋น๊ตํ์ฌ ๋น์ฉ ๋๋น ํจ๊ณผ๊ฐ ํฌ๋ค.
* ์ ์ํ ๊ตฌํ๊ณผ ์ฆ๊ฐ์ ์ธ ์ฑ๋ฅ ๊ฐ์
- ์บ์๋ฅผ ์ค์ ํ๊ณ ์ธํ๋ผ๋ฅผ ๊ตฌ์ฑํ๋ ๊ณผ์ ์ด ๊ฐํธํ๊ณ , ์ ์ฉ ํ ์ฆ๊ฐ์ ์ผ๋ก ์ฑ๋ฅ์ ๊ฐ์ ํ ์ ์๋ค.
* ๋น ๋ฅธ ์๋ต์ฑ
- ๋ฉ๋ด ์กฐํ๋ ์ค์๊ฐ ๋น ๋ฅธ ์๋ต์ด ํ์ํ๋ฐ,
๋ก๋ ๋ฐธ๋ฐ์ฑ์ ์๋ฒ ๋ถํ๋ฅผ ์ค์ด๋ ๋ฐ๋ ํจ๊ณผ์ ์ด๊ณ , ๋น๋๊ธฐ ์ฒ๋ฆฌ๋ ๊ธด ์ฒ๋ฆฌ ์๊ฐ์ ํ์๋ก ํ๋ ์์ ์๋ ํจ์จ์ ์ด์ง๋ง
๊ฐ๋ณ ์๋ต ์๋๋ฅผ ์ง์ ์ ์ผ๋ก ๊ฐ์ ํ์ง๋ ์์ผ๋ฏ๋ก ์ค์๊ฐ ๋น ๋ฅธ ์๋ต์ ์ ๊ณตํ๋ ์บ์๊ฐ ์ ํฉํ๋ค.
* ์บ์ ์ ๋ต
1. Cache-Aside
๋ฐ์ดํฐ๋ฅผ ์กฐํํ ๋ ์บ์์ ์ ์ฅ๋ ๋ฐ์ดํฐ๊ฐ ์๋์ง ์ฐ์ ์ ์ผ๋ก ํ์ธํ๋ ์ ๋ต (Cache hit)
์์ ๊ฒฝ์ฐ DB์์ ๋ฐ์ดํฐ ์กฐํํ๋ค. (Cache miss)
๋ฐ๋ณต์ ์ธ ์ฝ๊ธฐ๊ฐ ๋ง์ ๊ฒฝ์ฐ ์ ํฉ
์บ์์ DB๊ฐ ๋ถ๋ฆฌ๋์ด์๊ธฐ๋๋ฌธ์ ์ํ๋ ๋ฐ์ดํฐ๋ง ์บ์์ ์ ์ฅ ๊ฐ๋ฅ
2. Read-Through
1. Write-Through
2. Write-Around
3. Write-Behind
* ๋ง๋ฃ( Expiration )๊ธฐํ ์ ๋ต
๊ฐ ๋ฐ์ดํฐ์ Time-To-Live๋ฅผ ์ค์ ํ์ฌ ์บ์์ ์๋ช ์ ๊ฒฐ์ ํ๋ค.
๋ง๋ฃ ์๊ฐ์ ์ค์ ํ์ง ์์ผ๋ฉด ์ญ์ ํ์ง ์๋ ํ ์์ํ ์ ์ฅ๋๋ค.
์ค๋๋? / ๋น๋์?
----------------------------------------------------------------------------------------------------------------