0614
# 0614
# CHAPTER 01. ๋๊ท๋ชจ ์น ์๋น์ค ๊ฐ๋ฐ ์ค๋ฆฌ์ํ ์ด์
- ๋๊ท๋ชจ ์น ์๋น์ค๋, ์์ปจ๋ ๊ฑฐ๋ํ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํด์ผ๋ง ํ๋ ์น ์๋น์ค๋ฅผ ๋งํ๋ค.
- ์ 1์ฅ์์๋ ์ด ์ฑ ์ ํ ๋ง์ธ '๋๊ท๋ชจ'์ ์ ์ฒด ๊ทธ๋ฆผ์ ๋ ์ธ๋ฆด ์ ์๋๋ก ํ๋ ๊ฒ์ ๋ชฉํ๋ก ํ๋ค.
# ๊ฐ์0. ์ด ์ฑ ์ ๊ทผ๊ฐ : ์ด ์ฑ ์์ ์ค๋ช ํ๋ ๊ฒ๊ณผ ์ค๋ช ํ์ง ์๋ ๊ฒ
# ์ด ์ฑ ์์ ์ค๋ช ํ๋ ๊ฒ
- ๋๊ท๋ชจ ์น ์๋น์ค ๊ฐ๋ฐ์ด๋?
- ๋๊ท๋ชจ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ๋์ ๊ณผ์ , ๋ค๋ฃจ๊ธฐ ์ํ ๊ธฐ๋ณธ์ ์ธ ์ฌ๊ณ ๋ฐฉ์๊ณผ ์๋ น. ์๋ฅผ ๋ค์ด OS์ ์บ์(cache) ๊ธฐ๋ฅ์ด๋ ๋๊ท๋ชจ ๋ฐ์ดํฐ๋ฅผ ์ ์ ๋ก ํ DB ์ด์๋ฐฉ๋ฒ
- ์๊ณ ๋ฆฌ์ฆ๊ณผ ๋ฐ์ดํฐ ๊ตฌ์กฐ ์ ํ์ ์ค์์ฑ, ๋๊ท๋ชจ ๋ฐ์ดํฐ๋ฅผ ์๋ก ์๊ฐํด๋ณธ๋ค.
- RDBMS๋ก ๋ชจ๋ ๋ค๋ฃฐ ์ ์๋ ๊ท๋ชจ์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฐฉ๋ฒ. ๊ทธ ์๋ก ์ ๋ฌธ ๊ฒ์ ์์ง ๋ง๋๋ ๋ฒ์ ์ดํด๋ณธ๋ค.
- ๋๊ท๋ชจ ์๋น์ค๊ฐ ๋ ๊ฒ์ ์ ์ ๋ก ํ ์๋ฒ/์ธํ๋ผ ์์คํ ์ ์์ ๊ฐ๋
# ์ค๋ช ํ์ง ์๋ ๊ฒ
- ์น ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ๊ณผ ๊ด๋ จ๋ ๊ธฐ๋ณธ์ ์ด How-To. MVC ํ๋ ์์ํฌ๋ O/R ๋งคํผ(mapper)์ฌ์ฉ๋ฒ ๋ฑ
- ๊ฐ์ข ์ํํธ์จ์ด ์ฌ์ฉ๋ฒ, ์ํ์น(Apache), MySQL์ ์ค์ ๋ฐฉ๋ฒ์ด๋ ๋ช ๋ น ๋ฑ
- Perl์ด๋ C++์ ๊ตฌ๋ฌธ์ด๋ ๊ธฐ๋ฒ ๋ฑ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋ํ ์ค๋ช , ๋ ธํ์ฐ
- ๊ธฐ๋ณธ์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ด๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ(์๋ฅผ ๋ค์ด ์ ๋ ฌ, ํ์, ๋ฆฌ์คํธ, ํด์ ๋ฑ)์ ๋ํ ์ธ์ธํ ์ค๋ช
# ๊ฐ์1. ๋๊ท๋ชจ ์๋น์ค์ ์๊ท๋ชจ ์๋น์ค
# ํํ ๋์ ์๋น์ค ๊ท๋ชจ
2009๋ ๋น์ ํํ ๋ ์๋น์ค์ ๊ท๋ชจ
- ๋ฑ๋ก ์ฌ์ฉ์๋ 100๋ง ๋ช ์ด์, 1,500๋ง UU(Unique User, ๊ณ ์ ์ฌ์ฉ์)/์
- ์์ญ ์ต ์ก์ธ์ค/์(์ด๋ฏธ์ง ๋ฑ์ผ๋ก์ ์ก์ธ์ค๋ ์ ์ธ)
- ํผํฌ(peak) ์ ํ์ ํธ๋ํฝ ์์ 430Mbps
- ํ๋์จ์ด(์๋ฒ)๋ 500๋ ์ด์
ํ ์คํธ ์ ์ก์ด ์ค์ฌ์์๋ ์ด ์ ๋์ ํธ๋ํฝ์ด๋ผ๋ฉด ๊ทธ ๋น์ ์ ํต๋์ด ์๋นํ์
# ํํ ๋๋ ๋๊ท๋ชจ, ๊ตฌ๊ธ ๋ฐ ํ์ด์ค๋ถ์ ์ด๋๊ท๋ชจ
- ํ์ด์ค๋ถ๊ณผ ๊ฐ์ ์ธ๊ณ์ Top ํด๋์ค ์ฌ์ดํธ๋ ์๋ฒ ๋์๊ฐ ์๋ฐฑ๋ง ๋๊ท๋ชจ์ด๊ณ , ์ฒ๋ฆฌํ๋ ๋ฐ์ดํฐ๋ ํ ๋ผ๋ฐ์ดํธ~ํํ๋ฐ์ดํธ(pteabyte)๊ธ์ ์ด๋๊ท๋ชจ ์๋น์ค๋ค.
# ์๊ท๋ชจ ์๋น์ค์ ๋๊ท๋ชจ ์๋น์ค์ ์ฐจ์ด
๋๊ท๋ชจ ์๋น์ค์๋ง ์๋ ๋ฌธ์
# ํ์ฅ์ฑ ํ๋ณด, ๋ถํ๋ถ์ฐ ํ์
- ๋๋์ ์ก์ธ์ค๊ฐ ์๋ ์๋น์ค์์๋ ์๋ฒ 1๋๋ก ์ฒ๋ฆฌํ ์ ์๋ ๋ถํ
- ์ค์ผ์ผ์์(scale-out)์ด ์ ๋ต์ ๊ธฐ์ด
- ์ค์ผ์ผ ์์์ด๋ ์๋ฒ๋ฅผ ํก์ผ๋ก ์ ๊ฐ, ์ฆ ์๋ฒ์ ์ญํ ์ ๋ถ๋ดํ๊ฑฐ๋ ๋์๋ฅผ ๋๋ฆผ์ผ๋ก์จ ์์คํ ์ ์ ์ฒด์ ์ธ ์ฒ๋ฆฌ๋ฅ๋ ฅ์ ๋์ฌ์ ๋ถํ๋ฅผ ๋ถ์ฐํ๋ ๋ฐฉ๋ฒ
- ์ค์ผ์ผ์ (scale-up)์ ํ๋์จ์ด์ ์ฑ๋ฅ์ ๋์ฌ ์ฒ๋ฆฌ๋ฅ๋ ฅ์ ๋์์ฌ๋ฆฌ๋ ๋ฐฉ๋ฒ์ด๋ค.
- ์ค์ํ๊ฑด ํ๋์จ์ด์ ์ฑ๋ฅ๊ณผ ๊ฐ๊ฒฉ์ ๋น๋กํ์ง ์๊ธฐ ๋๋ฌธ์ ์ ๊ฐ์ ํ๋์จ์ด๋ฅผ ํก์ผ๋ก ๋์ดํด์ ํ์ฅ์ฑ์ ํ๋ณดํ๋๊ฒ์ด ์ฃผ๊ฐ ๋๋ค.
- ์ค์ผ์ผ์์์ ๋ฐ์ํ๋ ๋ฌธ์
- ์ฌ์ฉ์๋ก๋ถํฐ์ ์์ฒญ ๋ถ๋ฐฐ ๋ฌธ์ -> ๋ก๋๋ฐธ๋ฐ์ ์ฌ์ฉ
- ๋ฐ์ดํฐ ๋๊ธฐํ, DB๋ฅผ ๋ถ์ฐ์์ผฐ์ ๋ ํ์ชฝ์ ์ ์ฅ๋ ๊ฐฑ์ ๋ด์ฉ์ ๋ค๋ฅธ ํ์ชฝ DB๊ฐ ์์ง ๋ชปํ๋ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ์ ๋น์ ์ ์ฌํ๊ฐ ๋ฐ์
- ๋คํธ์ํฌ ๋์ ์ ์ง์ฐ์๊ฐ(latency)
# ๋ค์ค์ฑ ํ๋ณด
- ์์คํ ์ ๋ค์ค์ฑ์ ์ง๋ ๊ตฌ์ฑ, ์ฆ ํน์ ์๋ฒ๊ฐ ๊ณ ์ฅ ๋๊ฑฐ๋ ์ฑ๋ฅ์ด ์ ํ๋๋๋ผ๋ ์๋น์ค๋ฅผ ๊ณ์ํ ์ ์๋ ๊ตฌ์ฑ์ผ๋ก ํ ํ์๊ฐ ์๋ค.
- ์ค์ผ์ผ์์์ ํด์ ์๋ฒ ๋์๊ฐ ๋์ด๋๋ฉด ์๋ฒ์ ๊ณ ์ฅ๋ฅ ๋ ํ์ฐ์ ์ผ๋ก ์ฌ๋ผ๊ฐ๊ฒ ๋๋ค.
- ์๋น์ค๊ฐ ๋๊ท๋ชจํ๋๋ฉด ๋ ์๋ก ์์คํ ์ ์ง์ ์ฌํ์ ์ถฉ๊ฒฉ๋ ๋์ด๋๋ฏ๋ก ๋์ฑ ๋ ๋ค์ค์ฑ ํ๋ณด๊ฐ ์ค์ํด์ง๋ค.
- ์น ์๋น์ค๋ ์ธ์ ์ด๋ ํ ๊ฒฝ์ฐ๋ผ๋ ๊ณ ์ฅ์ ๋ํด ๊ฒฌ๊ณ ํด์ผํ๋ค.
# ํจ์จ์ ์ด์ฉ ํ์
- ์๋ฒ๊ฐ ๋์ด๋๋ฉด ๊ฐ์๋์์ด ๋์ด๋๋ค. ๋ฐ๋ผ์ ๊ฐ์์ฉ ์ํํธ์จ์ด๋ฅผ ์ฌ์ฉํ๊ณ ์ ๋ณด๊ด๋ฆฌ๋ฅผ ์ํ ํด์ ์ฌ์ฉํ๋ ๋ฑ ์๋ํํ๊ฐ ํ์
- ์ผ์์ ๊ฑฐ์น์ง ์๊ณ ๋๊ท๋ชจ ์์คํ ์ ๊ฑด๊ฐํ ์ํ๋ก ์ผ๋ง๋ ๊ณ์ ์ ์งํด๊ฐ ์ ์์ ๊ฒ์ธ๊ฐ๋ฅผ ์ํ ํจ์จ์ ์ด์ฉ์ ์ํํด์ผ๋ง ํ๋ค.
# ๊ฐ๋ฐ์ ์, ๊ฐ๋ฐ๋ฐฉ๋ฒ์ ๋ณํ
- ๋๊ท๋ชจ ์๋น์ค๊ฐ ๋๋ฉด ์ฌ๋ฌ ๊ธฐ์ ์๊ฐ ์ญํ ์ ๋ถ๋ดํ๊ฒ ๋๋ค.
- ์ฌ๋ ์๊ฐ ๋์ด๋๋ฉด ๊ณ ๋ คํด์ผ ํ ๊ณผ์ ๊ฐ ๋์ด๋จ
- ๊ฐ๋ฐ ํ์คํ๋ ์ด๋ป๊ฒ ํ ๊ฒ์ธ๊ฐ?
- ์์ค์ฝ๋ ๊ด๋ฆฌ๋ฅผ ๋ฒ์ ๊ด๋ฆฌ ์์คํ ์ผ๋ก ์ ๋๋ก ํ๊ธฐ.
- ํ ๋งค๋์ง๋จผํธ๊ฐ ํ์ํ๋ค.
# ๋๊ท๋ชจ ๋ฐ์ดํฐ๋์ ๋ํ ๋์ฒ
- ๋์คํฌ -> ๋ฉ๋ชจ๋ฆฌ -> ์บ์ ๋ฉ๋ชจ๋ฆฌ -> CPU
- ํ๋๋์คํฌ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด๋ค์ด๋ ๊ฒ์ ๋ฉ๋ชจ๋ฆฌ์ ๋น๊ตํ๋ฉด 10^6 ~ 10^10๋ฐฐ๋ ๋๋ ์๋์ฐจ๊ฐ ๋๋ค.
- ์๋์ฐจ๋ฅผ ํก์ํ๊ธฐ ์ํด OS๋ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์บ์ฑ
- DB๋ฅผ ๋น๋กฏํ ๋ฏธ๋ค์จ์ด๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ด๋ฌํ ์๋์ฐจ๋ฅผ ์์ํ ๋ฐ์ดํฐ ๊ตฌ์กฐ, ๊ตฌํ์ ์ฑ์ฉ
- ๋ฐ์ดํฐ๋์ด ๋ง์์ง๋ฉด ์ฒ์๋ถํฐ ์บ์ ๋ฏธ์ค(cache miss)๊ฐ ๋ฐ์
- ์ ์์ ๋์คํฌ๋ก์ I/O๊ฐ ๋ง์ด ๋ฐ์
# ๊ฐ์2. ๊ณ์ ์ฑ์ฅํ๋ ์๋น์ค์ ๋๊ท๋ชจํ์ ๋ฒฝ
# ์น ์๋น์ค์ ์ด๋ ค์
- ์น ์๋น์ค๋ ๊ณ์ํด์ ์ฑ์ฅ
- ๋ฐ๋ผ์ ์ฑ์ฅํด๊ฐ์ ๋ฐ๋ผ ์์คํ ๊ตฌ์ฑ์ ๋ณํ์์ผ ๊ฐ ํ์๊ฐ ์๋ค.
- ๋ฐ์ดํฐ๋ฟ๋ง ์๋๋ผ ํธ๋ํฝ๋ ์ฆ๊ฐ -> ์์คํ ํ์ฅ ํ์
# ํํ ๋๊ฐ ์ฑ์ฅํ๊ธฐ๊น์ง
- ๋ถ์ฐ, ๋ค์คํ, ํจ์จ์ ์ด์ฉ๋ฉด์์ ๋์ ์
- Hang-Up๋ ์๋ฒ๋ฅผ ์๋์ผ๋ก ์ฌ๊ธฐ๋
- ์๋ฒ ์ฆ์ค์ ๋์ฒํ์ง ๋ชปํด ์ ๋ฅ ๋ถ์กฑ์ผ๋ก ์ธํ ์ ๋ฅ ์ฐจ๋จ๊ธฐ ๋ด๋ ค๊ฐ
- ๋ฐ์ดํฐ ์ผํฐ๋ก ์ด์
- ๋ณ๋ชฉ์ง์ ์ ์ธก์ , ํ์ ํ์ฌ I/O๋ถํ์ CPU๋ถํ๋ฅผ ๊ตฌ๋ถํ์ฌ ์ต์ ์ ๊ตฌ์ฑ์ ๊ฐ๋ ํ๋์จ์ด๋ฅผ ์ค๋น
- ๋ค์คํ์ ๊ฒฝ์ฐ ๋ก๋๋ฐธ๋ฐ์ + ๊ฐ๋๊ฐ์ ๊ธฐ๋ฅ์ ํ๋ ์คํ์์ค ์ํํธ์จ์ด ๋์
- OS ๊ฐ์ํ ์งํํ์ฌ ์๋ฒ ๊ฐ๋๋ฅ ์ ๋์๊ณผ ๋์์ ์ ์ง๋ณด์์ฑ์ ๋์
- ์๋ฒ์ ์ ๋ณด๊ด๋ฆฌ๋ฅผ ์ํด ์ ๋ณด๊ด๋ฆฌ ์์คํ ๊ฐ๋ฐ
# ์์คํ ์ ์ฑ์ฅ์ ๋ต - ๋ฏธ๋๋ฉ ์คํํธ, ๋ณํ๋ฅผ ๋ด๋ค๋ณธ ๊ด๋ฆฌ์ ์ค๊ณ
- ๋๋ฌด ์ด๋ฅธ ์ต์ ํ๊ฐ ์ข์ ๋ฐฉ์นจ์ด๋ผ๊ณ ๋ ํ ์ ์๋ค.
- ์บ์ ๋ฏธ์ค๊ฐ ๋ฐ์ํ๊ธฐ ์์ํ ํ ์ค๋์ง ์์ ๊ฐ์๊ธฐ ๋ฌธ์ ๊ฐ ๋ณต์กํด์ง๋ฏ๋ก, ์์์ฐจ๋ ธ์ ๋์๋ ์ด๋ฏธ ์์คํ
์ด ์ ์ํํ๊ณ ์๋ ๊ฒฝ์ฐ๊ฐ ์์ฃผ ์๋ค.
- ์์ฉ๋ฅ๋ ฅ ๊ด๋ฆฌ๋ ์๋น์ค์ค๊ณ ์์ ํ์ ์ด์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฆ๊ฐ์ํค์ง ์๋๋ก ์ค๊ณ
- ์๋น์ค ์ฑ์ฅ์ ์์ธกํ ๊ตฌ์ฑ์ผ๋ก ํด๋๋ฉด์, ํ์ ์ด์์ผ๋ก๋ ๋น์ฉ์ ๋ค์ด์ง ์๊ณ ๋ฏธ๋๋ฉ ์คํํธ๊ฐ ํ์ํ๋ค.
# ๊ฐ์3. ์๋น์ค ๊ฐ๋ฐ์ ํ์ฅ
# ํํ ๋์ ๊ธฐ์ ํ ์ฒด์
- ํํ
๋ ์์ง๋์ด๋ง๊ด๊ณ ํ
- ์๋น์ค ๊ฐ๋ฐ๋ถ : ํํ ๋์ ๊ฐ์ข ์๋น์ค ๊ตฌํ์ ๋ด๋นํ๋ ํ. ๋งค์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ธก๋ฉด์ ๊ฐ์ ์ ๋ด๋นํ๋ค.
- ์ธํ๋ผ๋ถ : ์๋ฒ/์ธํ๋ผ ์์คํ ์ ์ด์ฉ์ ๋ด๋นํ๋ ํ. ์๋ฒ ์ค๋น, ๋ฐ์ดํฐ ์ผํฐ ์ด์ฉ, ๋ถํ ๋ถ์ฐ ๋ฑ์ ๋ด๋นํ๋ค.
- ๊ฐ๋ฐ๋ถ๋ ์๋น์ค์ ์ฑ๋ฅ์ ํธ๋ํนํ๊ณ ์์ผ๋ฉฐ, ์๋ต์๊ฐ์ ์ ๋ํํ ์งํ๋ก ํ๊ณ๊ฐ(threshold)์ ๋ฐ๋์ง ์๋๋ก ๋ชฉํ๋ฅผ ์ค์ ํด์ ๊ฐ์