๋จ์ผ ์๋ฒ
์น ์ ํ๋ฆฌ์ผ์ด์
, ๋ฐ์ดํฐ๋ฒ ์ด์ค, ์บ์ ๋ฑ์ด ๋ชจ๋ ์๋ฒ ํ ๋์์ ์คํ
1.
์ฌ์ฉ์๋ ๋๋ฉ์ธ์ ์ด์ฉํ์ฌ ์น์ฌ์ดํธ์ ์ ์
2.
์ด ์ ์์ ์ํด ๋๋ฉ์ธ ์ด๋ฆ์ DNS ์ ์ง์ํ๊ณ IP ์ฃผ์๋ก ๋ณํํ๋ ๊ณผ์ ์ด ํ์
3.
๋ฐํ๋ IP ์ฃผ์๋ก http ์์ฒญ ์ ๋ฌ
4.
์น ์๋ฒ๋ html ํ์ด์ง๋ json ํํ์ ์๋ต์ ๋ฐํ
DB ์๋ฒ
์ฌ์ฉ์๊ฐ ๋๋ฉด ๊ฐ์ฅ ๋จผ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ถ๋ฆฌํ๋ค. ๊ทธ๋์ ์น/๋ชจ๋ฐ์ผ ํธ๋ํฝ์ ์ฒ๋ฆฌํ๋ ์ฉ๋์ ์๋ฒ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ฉ ์๋ฒ๋ก ๋ถ๋ฆฌํ๋ฉด ๊ฐ๊ฐ์ ๋
๋ฆฝ์ ์ผ๋ก ํ์ฅํ ์ ์๋ค.
DB ์ ํ
โข
RDBMS
โฆ
๋ฐ์ดํฐ๋ฅผ ํ
์ด๋ธ๊ณผ ์นผ๋ผ์ผ๋ก ํํํ๋ค.
โฆ
SQL ์ ์ฌ์ฉํ์ฌ ์ฌ๋ฌ ํ
์ด๋ธ์ ์๋ ๋ฐ์ดํฐ๋ฅผ ๊ทธ ๊ด๊ณ์ ๋ฐ๋ผ ์กฐ์ธํ๊ณ ํฉ์น ์ ์๋ค.
โข
NoSQL
โฆ
๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ NoSQL ์ด๋ผ๊ณ ๋ถ๋ฅด๊ณ ํฌ๊ฒ ๋ค ๋ถ๋ฅ๋ก ๋๋ ์ ์๋ค.
โช
ํค-๊ฐ ์ ์ฅ์, ๊ทธ๋ํ ์ ์ฅ์, ์นผ๋ผ ์ ์ฅ์, ๋ฌธ์ ์ ์ฅ์
โข
๋ณดํต ์น์ํ RDBMS ๋ก ์์ํ์ง๋ง ์์คํ
์ ์๊ตฌ์ ๋ฐ๋ผ NoSQL ์ ์ ํํด์ผํ ์๋ ์๋ค.
โฆ
์์ฃผ ๋ฎ์ ์๋ต ์ง์ฐ์๊ฐ(latency)์ด ํ์ํ ๋
โฆ
๋ค๋ฃจ๋ ๋ฐ์ดํฐ๊ฐ ๋น์ ํ์ด๋ผ ๊ด๊ณํ ๋ฐ์ดํฐ๊ฐ ์๋ ๋
โฆ
์์ฃผ ๋ง์ ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ํ์๊ฐ ์์ ๋
์์ง์ ๊ท๋ชจ ํ์ฅ vs ์ํ์ ๊ท๋ชจ ํ์ฅ
โข
์ค์ผ์ผ ์
(์์ง์ ๊ท๋ชจ ํ์ฅ) ํ๋ก์ธ์ค
โฆ
์๋ฒ์ ๋ ์ข์ CPU, ๋ ๋ง์ RAM ๋ฑ ๊ณ ์ฌ์ ์์์ ์ถ๊ฐํ๋ ํ์์ด๋ค.
โฆ
์๋ฒ๋ก ์ ์
๋๋ ํธ๋ํฝ์ ์์ด ์ ์ ๋ ์ข์ ์ ํ, ๋จ์ํจ
โฆ
ํ์ฅ์ ํ๊ณ๊ฐ ์๋ค.
โฆ
์ฅ์ ์ ๋ํ ์๋๋ณต๊ตฌ(failover) ๋ฐฉ์์ด๋ ๋ค์คํ(redundancy) ๋ฐฉ์์ ์ ์ํ์ง ์๋๋ค.
โฆ
์๋ฒ์ ์ฅ์ ๊ฐ ๋ฐ์ํ๋ฉด ์์ ํ ์ค๋จ
โข
์ค์ผ์ผ ์์(์ํ์ ๊ท๋ชจ ํ์ฅ) ํ๋ก์ธ์ค
โฆ
๋ ๋ง์ ์๋ฒ๋ฅผ ์ถ๊ฐํ์ฌ ์ฑ๋ฅ์ ๊ฐ์ ํ๋ ํ์์ด๋ค.
โฆ
์ฅ๋จ์ ์ ์ค์ผ์ผ ์
๊ณผ ๋ฐ๋
๋ก๋ ๋ฐธ๋ฐ์
๋ถํ ๋ถ์ฐ ์งํฉ์ ์ํ ์น ์๋ฒ๋ค์๊ฒ ํธ๋ํฝ ๋ถํ๋ฅผ ๊ณ ๋ฅด๊ฒ ๋ถ์ฐํ๋ ์ญํ
์ฌ์ฉ์๋ ์ง์ ์น ์๋ฒ์ IP ๋ก ์์ฒญ์ ๋ณด๋ด์ง ์๊ณ ๋ก๋๋ฐธ๋ฐ์์ IP ์ฃผ์๋ก ์์ฒญ์ ๋ณด๋ด๊ฒ ๋๋ค. ์ด์ ๋ฐ๋ผ ์น ์๋ฒ๋ ํด๋ผ์ด์ธํธ์ ์ ์์ ์ง์ ์ฒ๋ฆฌํ์ง ์๊ณ ์๋ฒ๊ฐ ํต์ ์ private IP ์ฃผ์๋ฅผ ์ฌ์ฉํจ์ผ๋ก์จ ๋ณด์์ ํฅ์์ํฌ ์ ์๋ค.
๋ก๋๋ฐธ๋ฐ์ ํธ๋ํฝ ๋ถ์ฐ์ผ๋ก ์น ์๋ฒ๋ฅผ ์ถ๊ฐํ๋ฉด ์ฅ์ ๋ณต๊ตฌ ๋ฌธ์ ๊ฐ ํด์๋๋ฉฐ ์น ๊ณ์ธต์ ๊ฐ์ฉ์ฑ์ด ํฅ์๋๋ค.
DB ๋ค์คํ
์ฌ๋ฌ DB ์๋ฒ๋ฅผ ๋๊ณ ์๋ฒ ์ฌ์ด์ ์ฃผ-๋ถ ๊ด๊ณ๋ฅผ ์ค์ ํ๊ณ , ๋ฐ์ดํฐ ์๋ณธ์ ์ฃผ ์๋ฒ์, ์ฌ๋ณธ์ ๋ถ ์๋ฒ์ ์ ์ฅํ๋ ๋ฐฉ์
์ฐ๊ธฐ ์ฐ์ฐ์ ์ฃผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์๋ง ์ง์
๋ถ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ฃผ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก๋ถํฐ ๊ทธ ์ฌ๋ณธ์ ์ ๋ฌ๋ฐ๊ณ ์ฝ๊ธฐ ์ฐ์ฐ๋ง์ ์ง์
๋๋ถ๋ถ์ ์ ํ๋ฆฌ์ผ์ด์
์ ์ฝ๊ธฐ ์ฐ์ฐ์ ๋น์ค์ด ์ฐ๊ธฐ ์ฐ์ฐ๋ณด๋ค ํจ์ฌ ๋๊ธฐ๋๋ฌธ
โข
๋ ๋์ ์ฑ๋ฅ
โฆ
์ฃผ-๋ถ ๋ค์คํ ๋ชจ๋ธ์์ ์ฐ๊ธฐ ์ฐ์ฐ์ ์ฃผ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ๋ก๋ง ์ ๋ฌ๋๊ณ ์ฝ๊ธฐ ์ฐ์ฐ์ ๋ถ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ๋ค๋ก ๋ถ์ฐ๋๊ธฐ๋๋ฌธ์ ๋ณ๋ ฌ๋ก ์ฒ๋ฆฌ๋ ์ ์๋ ์ฟผ๋ฆฌ์ ์๊ฐ ๋์ด๋๋ฏ๋ก ์ฑ๋ฅ์ด ์ข์์ง๋ค.
โข
์์ ์ฑ(reliability)
โฆ
๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ ๊ฐ์ด๋ฐ ์ผ๋ถ๊ฐ ํ๊ดด๋์ด๋ ๋ฐ์ดํฐ๋ ๋ณด์กด๋ ์ ์๋ค.
โข
๊ฐ์ฉ์ฑ(availability)
โฆ
ํ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ์ ์ฅ์ ๊ฐ ๋ฐ์ํ๋๋ผ๋ ๋ค๋ฅธ ์๋ฒ์ ์๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ ๊ณ์ ์๋น์ค๋ฅผ ํ ์ ์๋ค.
โฆ
์ฃผ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ๊ฐ ๋ค์ด๋๋ฉด ๋ถ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ ์ค ํ๋๊ฐ ์๋ก์ด ์ฃผ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ๊ฐ ๋๋ค. ์ด ๋ ๋ถ ์๋ฒ์ ๋ณด๊ด๋ ๋ฐ์ดํฐ๊ฐ ์ต์ ์ํ๊ฐ ์๋ ์์ ์๋ ๋ฐ์ดํฐ๋ ๋ณต๊ตฌ ์คํฌ๋ฆฝํธ๋ฅผ ๋๋ ค์ ์ถ๊ฐํด์ผ ํ๋ค.
์บ์
๊ฐ๋น์ผ ์ฐ์ฐ ๊ฒฐ๊ณผ ๋๋ ์์ฃผ ์ฐธ์กฐ๋๋ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ ์์ ๋๊ณ ์์ฒญ์ด ๋ณด๋ค ๋นจ๋ฆฌ ์ฒ๋ฆฌ๋ ์ ์๋๋ก ํ๋ ์ ์ฅ์
์บ์ ๊ณ์ธต
์บ์ ๊ณ์ธต์ ๋ฐ์ดํฐ๊ฐ ์ ์ ๋ณด๊ด๋๋ ๊ณณ์ผ๋ก DB๋ณด๋ค ํจ์ฌ ๋น ๋ฅด๋ค. ์ฑ๋ฅ ๊ฐ์ ๊ณผ DB ๋ถํ ๊ฐ์๊ฐ ์ฅ์ ์ด๋ค. ๋ํ ์บ์ ๊ณ์ธต์ ๊ท๋ชจ๋ฅผ ๋
๋ฆฝ์ ์ผ๋ก ํ์ฅ์ํค๋ ๊ฒ๋ ๊ฐ๋ฅ
1.
์บ์์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋์ด์์ผ๋ฉด ๋ฐ๋ก ๋ฐํ
2.
์๋ค๋ฉด DB ์ฟผ๋ฆฌ๋ก ๋ฐ์ดํฐ๋ฅผ ์ป๊ณ ์บ์์ ์ ์ฅํ๋ค ๋ฐํ
โ ์ฝ๊ธฐ ์ฃผ๋ํ ์บ์ ์ ๋ต(read-through caching strategy)
์บ์ํ ๋ฐ์ดํฐ ์ข
๋ฅ, ํฌ๊ธฐ, ๋น์ฆ๋์ค ๋ก์ง์ ๋ง๋ ์บ์ ์ ๋ต์ ์ ์ ํํด์ผํจ
์บ์ ์ฌ์ฉ ์ ์ ์์
โข
์บ์๋ ์ด๋ค ์ํฉ์ ๋ฐ๋์งํ๊ฐ?
โฆ
๋ฐ์ดํฐ ๊ฐฑ์ ์ ์์ฃผ ์ผ์ด๋์ง ์์ง๋ง ์ฐธ์กฐ๋ ๋น๋ฒํ๊ฒ ์ผ์ด๋ ๋
โข
์บ์์ ๋ณด๊ด๋ ๋ฐ์ดํฐ๋ ์ด๋ป๊ฒ ๋ง๋ฃ(expire)๋๋๊ฐ?
โฆ
์ด์ ๋ํ ์ ์ฑ
์ ๋ง๋ จํด ๋๋ ๊ฒ์ด ์ข๋ค.
โฆ
๋ง๋ฃ ๊ธฐํ์ด ๋๋ฌด ์งง์ผ๋ฉด DB ๋ฅผ ์์ฃผ ์ฝ๋๋ค.
โฆ
๋ง๋ฃ ๊ธฐํ์ด ๋๋ฌด ๊ธธ๋ฉด ์๋ณธ๊ณผ ์ฐจ์ด๊ฐ ๋ ๊ฐ๋ฅ์ฑ์ด ๋์์ง๋ค.
โข
์ธ๊ด์ฑ์ ์ด๋ป๊ฒ ์ ์ง๋๋๊ฐ?
โฆ
์ผ๊ด์ฑ์ ๋ฐ์ดํฐ ์ ์ฅ์์ ์๋ณธ๊ณผ ์บ์ ์ฌ๋ณธ์ด ๊ฐ์์ง ์ฌ๋ถ
โฆ
์ ์ฅ์์ ์๋ณธ์ ๊ฐฑ์ ํ๋ ์ฐ์ฐ๊ณผ ์บ์๋ฅผ ๊ฐฑ์ ํ๋ ์ฐ์ฐ์ด ๋จ์ผ ํธ๋์ญ์
์ผ๋ก ์ฒ๋ฆฌ๋์ง ์๋ ๊ฒฝ์ฐ ์ผ๊ด์ฑ์ด ๊นจ์ง ์ ์๋ค.
โข
์ฅ์ ๋์ฒ
โฆ
SPOF๊ฐ ๋์ด๋ฒ๋ฆด ๊ฐ๋ฅ์ฑ์ด ์์ด ์๋ฒ๋ฅผ ์ฌ๋ฌ ๋ ๋์ด์ผ ํ๋ค.
โฆ
SPOF: ์ด๋ค ํน์ ์ง์ ์์์ ์ฅ์ ๊ฐ ์ ์ฒด ์์คํ
์ ๋์์ ์ค๋จ์ํฌ ๋
โข
์บ์ ๋ฉ๋ชจ๋ฆฌ์ ํฌ๊ธฐ๋?
โฆ
๋ฉ๋ชจ๋ฆฌ๊ฐ ๋๋ฌด ์์ผ๋ฉด ๋ฐ์ดํฐ๊ฐ ๋๋ฌด ์์ฃผ evict ๋๋ค.
โฆ
์บ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ณผํ ๋นํ์ฌ ์บ์์ ์ ์ฅํ ๋ฐ์ดํฐ๊ฐ ๊ฐ์๊ธฐ ๋์ด๋ ๋๋ ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํ ์ ์๋ค.
โข
eviction ์ ์ฑ
์?
โฆ
์ผ๋ฐ์ ์ผ๋ก LRU(Least-Recently-Used)
โฆ
LFU ๋๋ FIFO ๋ ์๋ค.
CDN
์ง๋ฆฌ์ ์ผ๋ก ๋ถ์ฐ๋์ด ์๊ณ ์ ์ ์ฝํ
์ธ ๋ฅผ ์ ์ฅํ๊ณ ์ ์กํ๋๋ฐ ์ฐ์ด๋ ์๋ฒ์ ๋คํธ์ํฌ
request path, query string, ์ฟ ํค, ํค๋ ๋ฑ์ ์ ๋ณด์ ๊ธฐ๋ฐํ์ฌ html ํ์ด์ง๋ฅผ ์บ์ฑํ๋ ๋์ ์ปจํ
์ธ ์ ์ก ์๋ฒ๋ ์๊ธดํ๋ค.
์ฌ์ฉ์์๊ฒ ๊ฐ์ฅ ๊ฐ๊น์ด CDN ์๋ฒ๊ฐ ์ ์ ์ปจํ
์ธ ๋ฅผ ์ ์กํ๋ค.
1.
์ฌ์ฉ์ A๊ฐ image.png ๋ฅผ ์์ฒญํ๋ค.
2.
CDN ์๋ฒ์ ์บ์์ ํด๋น ์ด๋ฏธ์ง๊ฐ ์๋ค๋ฉด ์๋ณธ ์๋ฒ์ ์์ฒญํ์ฌ ํ์ผ์ ๊ฐ์ ธ์จ๋ค.
3.
์๋ณธ ์๋ฒ๊ฐ ํ์ผ์ CDN ์๋ฒ์ ๋ฐํํ๋ค. ์๋ต ํค๋์๋ TTL(Time-To-Live) ๊ฐ์ด ๋ค์ด์๋ค.
4.
CDN ์๋ฒ๋ ํ์ผ์ ์บ์ํ๊ณ ์ฌ์ฉ์ A์๊ฒ ๋ฐํํ๋ค.
5.
์ฌ์ฉ์ B๊ฐ image.png ๋ฅผ ์์ฒญํ๋ค.
6.
๋ง๋ฃ๋์ง ์์ ์ด๋ฏธ์ง ํ์ผ์ CDN ์๋ฒ์ ์บ์๋ฅผ ํตํด ์ฒ๋ฆฌํ๋ค.
CDN ์ฌ์ฉ ์ ๊ณ ๋ ค ์ฌํญ
โข
๋น์ฉ
โฆ
CDN ์ ๋ฐ์ดํฐ ์ ์ก ์์ ๋ฐ๋ผ ๋น์ฉ์ ์ง๋ถํ๋ค. ์์ฃผ ์ฌ์ฉ๋์ง ์๋ ์ปจํ
์ธ ๋ฅผ ์บ์ฑํ๋ ๊ฒ์ ๋นํจ์จ์ ์ด๋ค.
โข
์ ์ ํ ๋ง๋ฃ ์ํ ์ค์
โฆ
๋๋ฌด ๊ธธ๋ฉด ์ปจํ
์ธ ์ ์ ์ ๋๊ฐ ๋จ์ด์ง๊ณ ๋๋ฌด ์งง์ผ๋ฉด ์๋ณธ ์๋ฒ์ ๋น๋ฒํ ์ ์ํ์ฌ ์ฑ๋ฅ์ ์ข์ง ์๋ค.
โข
์ฅ์ ๋์ฒ ๋ฐฉ์
โฆ
๋ง์ฝ CDN ์๋ฒ์ ์ฅ์ ๊ฐ ๊ฐ์ง๋ ๊ฒฝ์ฐ ํด๋ผ์ด์ธํธ์์ ์๋ณธ ์๋ฒ๋ก ์ง์ ์ปจํ
์ธ ๋ฅผ ์์ฒญํ๋๋ก ๋ง๋ค ์ ์๋ค.
CDN ๊ณผ ์บ์๊ฐ ์ถ๊ฐ๋ ์ค๊ณ
๋ฌด์ํ(stateless) ์น ๊ณ์ธต
์น ๊ณ์ธต ์ํ์ ํ์ฅ์ ์ํด ์ฌ์ฉ์ ์ธ์
๋ฐ์ดํฐ์ ๊ฐ์ ์ํ ์ ๋ณด๋ฅผ ์น ๊ณ์ธต์์ ์ ๊ฑฐํด์ผํ๋ค. ์ํ ์ ๋ณด๋ฅผ ๊ด๊ณํ DB ๋ NoSQL ๊ณผ ๊ฐ์ ์์ ์ ์ฅ์์ ๋ณด๊ดํ๊ณ ํ์ํ ๋ ๊ฐ์ ธ์ค๋๋ก ํ๋ค.
์ํ ์ ๋ณด ์์กด์ ์ธ ์ํคํ ์ฒ
์ํ์ ๋ณด๋ฅผ ๋ณด๊ดํ๋ ์๋ฒ๋ ํด๋ผ์ด์ธํธ ์ ๋ณด, ์ฆย ์ํ๋ฅผ ์ ์งํ์ฌ ์์ฒญ๋ค ์ฌ์ด์ ๊ณต์ ๋๋๋ก ํ๋ค. ๋ฌด์ํ ์๋ฒ์๋ ์ด๋ฐ ์ฅ์น๊ฐ ์๋ค.
์ฌ์ฉ์์ ์ํ ์ ๋ณด๊ฐ ๋ถ์ฐ๋ ์๋ฒ์ ์ ์ฅ๋๋ค๋ฉด ์ฌ์ฉ์๋ ์์ ์ ์ํ ์ ๋ณด๊ฐ ์ ์ฅ๋ ์๋ฒ๋ก๋ง ์์ฒญ์ ๋ณด๋ด์ผ ํ๋ค. ์ฆ, ๊ฐ์ ํด๋ผ์ด์ธํธ๋ก๋ถํฐ์ ์์ฒญ์ ํญ์ ๊ฐ์ ์๋ฒ๋ก ์ ์ก๋์ด์ผ ํ๋ค. ์ด๋ฅผ ์ง์ํ๊ธฐ ์ํด ๋ก๋๋ฐธ๋ฐ์๋ Sticky Session ๊ธฐ๋ฅ์ ์ ๊ณตํ์ง๋ง, ์ด๋ ๋ก๋ ๋ฐธ๋ฐ์์ ๋ถ๋ด์ ์ค๋ค.
๋ฌด์ํ ์ํคํ ์ฒ
์น ์๋ฒ๋ ์ด๋ค ์ฌ์ฉ์๋ http ์์ฒญ์ ๋ฐ๊ณ ์ฌ์ฉ์์ ์ํ ์ ๋ณด๋ย ๋ณ๋์ ๊ณต์ ์ ์ฅ์๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๊ฐ์ ธ์จ๋ค. ์ด์ ๋ฐ๋ผ ์ํ ์ ๋ณด๋ย ์น ์๋ฒ๋ก๋ถํฐ ๋ฌผ๋ฆฌ์ ์ผ๋ก ๋ถ๋ฆฌ๋์ด ์๋ค. ์ด๋ฐ ๊ตฌ์กฐ๋ย ๋จ์ํ๊ณ , ์์ ์ ์ด๊ณ , ๊ท๋ชจ ํ์ฅ์ด ์ฝ๋ค. ๊ณต์ ์ ์ฅ์๋ RDB ์ผ ์๋, Memcached/Redis ๊ฐ์ ์บ์ ์์คํ
์ผ ์๋, NoSQL ์ผ ์๋ ์๋ค. ๊ท๋ชจ ํ์ฅ์ด ๊ฐํธํด์ ์ฑ
์์๋ NoSQL ์ ์ฌ์ฉํ์๋ค.
๊ณต์ ์ ์ฅ์๋ฅผ ํฌํจํ ํ์ฌ๊น์ง์ ์ค๊ณ
์๋ ๊ท๋ชจ ํ์ฅ์ ํธ๋ํฝ ์์ ๋ฐ๋ผ ์น ์๋ฒ๋ฅผ ์๋์ผ๋ก ์ถ๊ฐํ๊ฑฐ๋ ์ญ์ ํ๋ ๊ธฐ๋ฅ์ด๋ค. ์ํ ์ ๋ณด๋ฅผ ์๋ฒ๋ก๋ถํฐ ๋ถ๋ฆฌํ์๊ธฐ๋๋ฌธ์ ์๋ฒ๋ฅผ ํ์ฅํ๊ณ ์ถ์ํ๋ ๋ฐ์ ๋ฌธ์ ๊ฐ ์๋ค.
๋ฐ์ดํฐ ์ผํฐ
๊ฐ์ฉ์ฑ์ ๋์ด๊ณ ย ์ ์ธ๊ณ ์ด๋์๋ ์พ์ ํ๊ฒ ์ฌ์ฉํ๊ธฐ ์ํด ์ฌ๋ฌ ๋ฐ์ดํฐ ์ผํฐ๋ฅผ ์ง์ํ๋ ๊ฒ์ด ํ์์ด๋ค. ์ฅ์ ๊ฐ ์๋ ์ํฉ์์ ์ฌ์ฉ์๋ ๊ฐ์ฅ ๊ฐ๊น์ด ๋ฐ์ดํฐ์ผํฐ๋ก ๋ผ์ฐํ
๋๋๋ฐ, ์ด ์ ์ฐจ๋ฅผย ์ง๋ฆฌ์ ๋ผ์ฐํ
์ด๋ผ๊ณ ํ๋ค. ์ง๋ฆฌ์ ๋ผ์ฐํ
์์ geoDNS๋ ์ฌ์ฉ์์ ์์น์ ๋ฐ๋ผ ๋๋ฉ์ธ ์ด๋ฆ์ ์ด๋ค IP์ฃผ์๋ก ๋ณํํ ์ง ๊ฒฐ์ ํด์ฃผ๋ DNS ์๋น์ค์ด๋ค.
๋ฐ์ดํฐ ์ผํฐ ์ค ํ๋์ ์ฌ๊ฐํ ์ฅ์ ๊ฐ ๋ฐ์ํ๋ฉด ๋ชจ๋ ํธ๋ํฝ์ ์ฅ์ ๊ฐ ์๋ ๋ฐ์ดํฐ ์ผํฐ๋ก ์ ์ก๋๋ค.
๋ค์ค ๋ฐ์ดํฐ์ผํฐ ์ํคํ
์ฒ๋ฅผ ๋ง๋ค๊ธฐ ์ํด์๋ ๋ช ๊ฐ์ง ๊ธฐ์ ์ ๋์ ๋ฅผ ํด๊ฒฐํด์ผํ๋ค.
โข
ํธ๋ํฝ ์ฐํ:ย ์ฌ๋ฐ๋ฅธ ๋ฐ์ดํฐ ์ผํฐ๋ก ํธ๋ํฝ์ ๋ณด๋ด๋ ํจ๊ณผ์ ์ธ ๋ฐฉ๋ฒ์ ์ฐพ๋๋ค. geoDNS๋ ์ฌ์ฉ์์ ๊ฐ์ฅ ๊ฐ๊น์ด ๋ฐ์ดํฐ์ผํฐ๋ก ํธ๋ํฝ์ ๋ณด๋ผ ์ ์๋๋ก ํด์ผ ํ๋ค.
โข
๋ฐ์ดํฐ ๋๊ธฐํ:ย ๋ฐ์ดํฐ ์ผํฐ๋ง๋ค ๋ณ๋๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๊ณ ์๋ ์ํฉ์ด๋ผ๋ฉด, ์ฅ์ ๊ฐ ์๋์ผ๋ก ๋ณต๊ตฌ๋์ด, ํธ๋ํฝ์ด ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ์ฐํ๋๋ค ํด๋ ๋ฐ์ดํฐ ์ ํฉ์ฑ์ด ๋ง์ง ์์ ์ ์๋ค. ์ด๋ฐ ์ํฉ์ ๋ง๋ ๋ณดํธ์ ์ ๋ต์ ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฌ ๋ฐ์ดํฐ์ผํฐ์ ๊ฑธ์ณ ๋ค์คํํ๋ ๊ฒ์ด๋ค.
โข
ํ
์คํธ์ ๋ฐฐํฌ:ย ์น ์ฌ์ดํธ ํน์ ์ ํ๋ฆฌ์ผ์ด์
์ ์ฌ๋ฌ ์์น์์ ํ
์คํธ ํด๋ณด๋ ๊ฒ์ด ์ค์ํ๋ค. ์๋ํ๋ ๋ฐฐํฌ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ ๋ฐ์ดํฐ ์ผํฐ์ ๋์ผํ ์๋น์ค๊ฐ ์ค์น๋๋๋ก ํ๋ค.
๋ฉ์์ง ํ
์์คํ
์ ๋ ํฐ ๊ท๋ชจ๋ก ํ์ฅํ๊ธฐ ์ํด ์์คํ
์ ์ปดํฌ๋ํธ๋ฅผ ๋ถ๋ฆฌํ์ฌ ๊ฐ๊ฐ ๋
๋ฆฝ์ ์ผ๋ก ํ์ฅ๋ ์ ์๋๋ก ํด์ผ ํ๋ค. ๋ฉ์์ง ํ๋ ๋ง์ ๋ถ์ฐ ์์คํ
์์ ์ฑ์ฉํ๊ณ ์๋ ํต์ฌ ์ ๋ต์ด๋ค.
๋ฉ์์ง ํ๋ ๋ฉ์์ง์ ๋ฌด์์ค์ ๋ณด์ฅํ๋ ๋น๋๊ธฐ ํต์ ์ ์ง์ํ๋ ์ปดํฌ๋ํธ์ด๋ค. ๋ฉ์์ง์ ๋ฒํผ ์ญํ ์ ํ๋ฉฐ ๋น๋๊ธฐ์ ์ผ๋ก ์ ์กํ๋ค. ๋ฉ์์ง ํ์ ๊ธฐ๋ณธ ์ํคํ
์ณ๋ ์์ฐ์ ๋๋ ๋ฐํ์(producer/publisher) ์ธ ์
๋ ฅ ์๋น์ค๊ฐ ๋ฉ์์ง๋ฅผ ๋ง๋ค์ด ๋ฉ์์ง ํ์ ๋ฐํ(publish)ํ๋ค. ํ์๋ ์๋น์ ๋๋ ๊ตฌ๋
์(consumer/subscriber)์ธ ์๋น์ค ๋๋ ์๋ฒ๊ฐ ์ฐ๊ฒฐ๋์ด ์๊ณ ๋ฉ์์ง๋ฅผ ๋ฐ์ ๊ทธ์ ๋ง๋ ๋์์ ์ํํ๋ค.
๋ฉ์์ง ํ๋ฅผ ์ฌ์ฉํ๋ฉด ์๋น์ค ๋๋ย ์๋ฒ ๊ฐ ๊ฒฐํฉ์ด ๋์จํด์ ธ, ๊ท๋ชจ ํ์ฅ์ฑ์ด ๋ณด์ฅ๋์ด์ผ ํ๋ ์์ ์ ์ธ ์ ํ๋ฆฌ์ผ์ด์
์ ๊ตฌ์ฑํ๊ธฐ ์ข๋ค. ์์ฐ์๋ ์๋น์ ํ๋ก์ธ์ค๊ฐ ๋ค์ด๋์ด ์์ด๋ ๋ฉ์์ง๋ฅผ ๋ฐํํ ์ ์๊ณ , ๋ฐ๋๋กย ์๋น์๋ ์์ฐ์ ์๋น์ค๊ฐ ๋ค์ด๋์ด ์์ด๋ ๋ฉ์์ง๋ฅผ ์์ ํ ์ ์๋ค.
์ฌ์ฉ ์๋ก ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๋ ์ฌ์ง ๋ณด์ ์์
๋ก๊ทธ, ๋ฉํธ๋ฆญ, ์๋ํ
์น ์ฌ์ดํธ์ ์ฌ์
๊ท๋ชจ๊ฐ ์ปค์ง๋ฉด ๋ก๊ทธ, ๋ฉํธ๋ฆญ(metric), ์๋ํ(automation)์ ํ์์ ์ผ๋ก ํฌ์ํด์ผ ํ๋ค.
โข
๋ก๊ทธ:ย ์๋ฌ ๋ก๊ทธ๋ฅผ ๋ชจ๋ํฐ๋ง ํ๋ ๊ฒ์ ์ค์ํ๋ค. ์์คํ
์ ์ค๋ฅ์ ๋ฌธ์ ๋ฅผ ๋ณด๋ค ์ฝ๊ฒ ์ฐพ์๋ผ ์ ์๋๋ก ํ๊ธฐ ๋๋ฌธ์ด๋ค. ์๋ฒ ๋จ์๋ก ๋ก๊ทธ๋ฅผ ๋ชจ๋ํฐ๋งํ๋ ๊ฒ๋ ์ข์ง๋ง, ๋ก๊ทธ๋ฅผ ํ๋๋ก ๋ชจ์์ฃผ๋ ๋๊ตฌ๋ฅผ ํ์ฉํ๋ฉด ๋ ํธ๋ฆฌํ๊ฒ ๊ฒ์, ์กฐํ ํ ์ ์๋ค.
โข
๋ฉํธ๋ฆญ:ย ๋ฉํธ๋ฆญ์ ์ ์์งํ๋ฉด ์ฌ์
ํํฉ์ ๊ดํ ์ ์ฉํ ์ ๋ณด๋ฅผ ์ป์์๋ ์๊ณ , ์์คํ
์ ํ์ฌ ์ํ๋ฅผ ์์ฝ๊ฒ ํ์
ํ ์ ๋ ์๋ค.
โฆ
ํธ์คํธ ๋จ์ ๋ฉํธ๋ฆญ: CPU, ๋ฉ๋ชจ๋ฆฌ, ๋์คํฌ I/O์ ๊ดํ ๋ฉํธ๋ฆญ
โฆ
์ข
ํฉ(aggregated) ๋ฉํธ๋ฆญ : ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ณ์ธต์ ์ฑ๋ฅ, ์บ์ ๊ณ์ธต์ ์ฑ๋ฅ
โฆ
ํต์ฌ ๋น์ฆ๋์ค ๋ฉํธ๋ฆญ: ์ผ๋ณ ํ์ฑ ์ฌ์ฉ์(daily active user), ์์ต, ์ฌ๋ฐฉ๋ฌธ(retention) ๊ฐ์ ๊ฒ๋ค
โข
์๋ํ:ย ์์คํ
์ด ํฌ๊ณ ๋ณต์กํด์ง๋ฉด, ์์ฐ์ฑ์ ์ํด ์๋ํ ๋๊ตฌ๋ฅผ ํ์ฉํด์ผํ๋ค. ๋น๋, ํ
์คํธ, ๋ฐฐํฌ ๋ฑ์ ์ ์ฐจ๋ฅผ ์๋ํํ ์ ์๋ค.
๋ฉ์์ง ํ์ ๋ก๊ทธ๋ฅผ ๋ฐ์ํ ์ค๊ณ์
โข
๋ฉ์์ง ํ๊ฐ ๊ฐ ์ปดํฌ๋ํธ๋ฅผ ๋์จํ ๊ฒฐํฉ์ด ๋ ์ ์๋๋ก ํ์ฌ ๊ฒฐํจ์ ๋ํ ๋ด์ฑ์ ๋์ธ๋ค.
โข
๋ก๊ทธ, ๋ชจ๋ํฐ๋ง, ๋ฉํธ๋ฆญ, ์๋ํ ๋ฑ์ ์ง์ํ๊ธฐ ์ํ ์ฅ์น ์ถ๊ฐ
DB ๊ท๋ชจ ํ์ฅ
์ ์ฅํ ๋ฐ์ดํฐ๊ฐ ๋ง์์ง๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ๋ถํ๋ ์ฆ๊ฐํ๋ค. ์ด ๋ DB๋ฅผ ์ฆ์คํ ๋ฐฉ๋ฒ์ ์ฐพ๋๋ค. DB ๊ท๋ชจ๋ฅผ ํ์ฅํ๋ ๋ฐ์๋ ์์ง์ ํ์ฅ๊ณผ ์ํ์ ํ์ฅ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๋ค.
์์ง์ ํ์ฅ
๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ์ CPU, RAM, ๋์คํฌ์ ๊ฐ์ ์์์ ์ฆ์คํ๋ ๋ฐฉ๋ฒ์ด๋ค. ์์ง์ ์ ๊ทผ๋ฒ์๋ ๋ช ๊ฐ์ง ์ฌ๊ฐํ ์ฝ์ ์ด ์๋ค.
โข
์๋ฒ ํ๋์จ์ด๋ฅผ ๋ฌดํ ์ฆ์คํ ์ ์์ผ๋ฏ๋ก ํ๊ณ๊ฐ ์กด์ฌํ๋ค.
โข
SPOF๋ก ์ธํ ์ํ์ฑ์ด ํฌ๋ค.
โข
๊ณ ์ฑ๋ฅ ์๋ฒ๋ก ๊ฐ์๋ก ๊ฐ๊ฒฉ์ด ์ฌ๋ผ๊ฐ๋ฏ๋ก ๋น์ฉ์ด ๋ง์ด ๋ฐ์ํ๋ค.
์ํ์ ํ์ฅ
๋ฐ์ดํฐ๋ฒ ์ด์ค์ย ์ํ์ ํ์ฅ์ ์ค๋ฉ(sharding)์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค. ๋ ๋ง์ ์๋ฒ๋ฅผ ์ถ๊ฐํจ์ผ๋ก์จ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์๋ค.
์ค๋ฉ์ ๋๊ท๋ชจ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผย ์ค๋(shard)๋ผ๊ณ ๋ถ๋ฅด๋ ์์ ๋จ์๋ก ๋ถํ ํ๋ค. ๋ชจ๋ ์ค๋๋ย ๊ฐ์ ์คํค๋ง๋ฅผ ์ฌ์ฉํ์ง๋ง, ์ค๋์ ๋ณด๊ด๋๋ ๋ฐ์ดํฐ ์ฌ์ด์๋ย ์ค๋ณต์ด ์๋ค.
์ค๋ ๋ฐฉ์์๋ ์ฌ๋ฌ๊ฐ์ง๊ฐ ์๋ค.ย ํด์ ์ค๋ฉ(hash sharding)์ ์ค๋์ ๊ฐ์์ ๋ฐ๋ฅธ ํด์ ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๊ฐ ๋ณด๊ด๋๋ ์ค๋๋ฅผ ๊ฒฐ์ ํ๋ค. ์๋ฅผ ๋ค์ด ์ค๋๊ฐ 4๊ฐ์ธ ๊ฒฝ์ฐย user_id % 4ย ๋ฅผ ํด์ ํจ์๋ก ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๊ฐ ๋ณด๊ด๋ ์ค๋๋ฅผ ๊ฒฐ์ ํ ์ ์๋ค.
์ค๋ฉ ์ ๋ต์์ ๊ฐ์ฅ ์ค์ํ๊ฒ ๊ณ ๋ คํ ๊ฒ์ย ์ค๋ฉ ํค๋ฅผ ์ด๋ป๊ฒ ์ ํ๋์ง์ด๋ค. ์ค๋ฉ ํค๋ย ๋ฐ์ดํฐ๊ฐ ์ด๋ค ์ค๋์ ์ ์ฅ๋๋์ง ๊ฒฐ์ ํ๋ ํ๋ ์ด์์ ์ปฌ๋ผ์ผ๋ก ๊ตฌ์ฑ๋๋ค. ์ ์์์ ๊ฒฝ์ฐย user_idย ๊ฐ ์ค๋ฉ ํค์ด๋ค. ์ค๋ฉํค๋ฅผ ์ ํ ๋๋ ๋ฐ์ดํฐ๋ฅผ ๊ณ ๋ฅด๊ฒ ๋ถํ ํ ์ ์๋๋ก ํ๋๊ฒ ์ค์ํ๋ค.
์ค๋ฉ์ ๋์
ํ๋ฉด ์์คํ
์ด ๋ณต์กํด์ง๊ณ ํ์ด์ผํ ์๋ก์ด ๋ฌธ์ ๋ ์๊ธด๋ค.
โข
๋ฐ์ดํฐ์ ์ฌ ์ค๋ฉ(resharding):ย ๋ฐ์ดํฐ๊ฐ ๋๋ฌด ๋ง์์ ธย ํ๋์ ์ค๋๋ก๋ ๊ฐ๋น์ด ์ด๋ ต๊ฑฐ๋, ์ค๋ ๊ฐ ๋ฐ์ดํฐ ๋ถํฌ๊ฐ ๊ท ๋ฑํ์ง ์์ ์ผ๋ถ ์ค๋์ ํ ๋น๋ ๊ณต๊ฐ ์๋ชจ๊ฐ ๋ค๋ฅธ ์ค๋์ ๋นํด ๋นจ๋ฆฌ ์๋ชจ๋ ๋ ์ฌ ์ค๋ฉ์ ๊ณ ๋ คํด์ผ ํ๋ค. ์ด๋ฅผย ์ค๋ ์์ง(shard exhaustion)์ด๋ผ๊ณ ๋ ๋ถ๋ฅด๋๋ฐ, ์ด๋ฐ ํ์์ ํด๊ฒฐํ๊ธฐ ์ํด ์ค๋ ํค๋ฅผ ๊ณ์ฐํ๋ ํจ์๋ฅผ ๋ณ๊ฒฝํ๊ณ ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฐฐ์นํด์ผํ๋ค. ์์ ํด์(consistent hashing)ย ๊ธฐ๋ฒ์ ์ฌ์ฉํ์ฌ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค.
โข
์ ๋ช
์ธ์ฌ ๋ฌธ์ :ย ํซ์คํ ํค(hotspot key) ๋ฌธ์ ๋ผ๊ณ ๋ ๋ถ๋ฅด๋๋ฐ, ํน์ ์ค๋์ ์ง์๊ฐ ์ง์ค๋์ด ์๋ฒ์ ๊ณผ๋ถํ๊ฐ ๊ฑธ๋ฆฌ๋ ๋ฌธ์ ๋ค. ์๋ฅผ ๋ค์ด ์ถ๊ตฌ ์ ์ DB ์ ๋ฉ์์ ํธ๋ ๋๊ฐ ๊ฐ์ ์ค๋์ ์์ผ๋ฉด ํด๋น ์ค๋๋ ๊ณผ๋ถํ๊ฐ ๊ฑธ๋ฆด ๊ฒ์ด๋ค. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ ๋ช
์ธ์ฌ ๊ฐ๊ฐ์ ์ค๋ ํ๋์ฉ์ ํ ๋นํด์ผ ํ ์๋ ์๊ณ , ๋ ์๊ฒ ์ค๋๋ฅผ ์ชผ๊ฐ์ผ ํ ์๋ ์๋ค.
โข
์กฐ์ธ๊ณผ ๋น์ ๊ทํ(join and de-normalization):ย ํ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ๋ฌ ์๋ฒ๋ก ์ชผ๊ฐ๋ฉด, ์ฌ๋ฌ ์ค๋์ ๊ฑธ์น ๋ฐ์ดํฐ๋ฅผ ์กฐ์ธํ๊ธฐ ํ๋ค๋ค. ์ด๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ ์ค ํ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋น์ ๊ทํ ํ์ฌ ์กฐ์ธ ์์ด ํ๋์ ํ
์ด๋ธ์์ ์ง์๊ฐ ์ํ๋ ์ ์๋๋ก ํ๋ ๊ฒ์ด๋ค.
์ค๋ฉ์ ์ ์ฉํ ์ํคํ
์ณ
์ ๋ฆฌ
โข
์น ๊ณ์ธต์ ๋ฌด์ํ ๊ณ์ธต
โข
๋ชจ๋ ๊ณ์ธต ๋ค์คํ ๋์
โข
๊ฐ๋ฅํ ๋ง์ ๋ฐ์ดํฐ ์บ์
โข
์ฌ๋ฌ ๋ฐ์ดํฐ ์ผํฐ ์ง์
โข
์ ์ ์ปจํ
์ธ ๋ CDN ์ ํตํด ์๋น์ค
โข
๋ฐ์ดํฐ ๊ณ์ธต์ ์ค๋ฉ์ ํตํด ๊ท๋ชจ ํ์ฅ
โข
๊ฐ ๊ณ์ธต์ ๋
๋ฆฝ์ ์๋น์ค๋ก ๋ถ๋ฆฌ
โข
์์คํ
์ ์ง์์ ์ผ๋ก ๋ชจ๋ํฐ๋งํ๊ณ ์๋ํ ๋๊ตฌ ํ์ฉ