https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=278536695
[์ ์์ฑ ] ๊ฐ์ ๋ฉด์ ์ฌ๋ก๋ก ๋ฐฐ์ฐ๋ ๋๊ท๋ชจ ์์คํ ์ค๊ณ ๊ธฐ์ด
16๊ฐ์ง ์ค์ ์์คํ ์ค๊ณ ๋ฉด์ ๋ฌธ์ ์ ์์ธํ ๋ต์์ ์ ์ํ๋ค. ์์คํ ๋์ ์๋ฆฌ๋ฅผ ์๊ฐ์ ์ผ๋ก ๋ณด์ฌ ์ฃผ๋ 188๊ฐ์ ๋ํด๋ก ์ค๋ช ํ๋ฉด์ 4๋จ๊ณ ์ ๊ทผ๋ฒ์ผ๋ก ๋ฉด์ ๋ฌธ์ ๋ฅผ ํ ์ ์๋๋ก ๋๋๋ค. ์ด ์ฑ
www.aladin.co.kr
์ด๋ฒ ์ฅ์์๋ ํ ๋ช ์ ์ฌ์ฉ์๋ฅผ ์ง์ํ๋ ์์คํ ์์ ์์ํ์ฌ ์ต์ข ์ ์ผ๋ก ์๋ฐฑ๋ง ์ฌ์ฉ์๋ฅผ ์ง์ํ๋ ์์คํ ์ ์ค๊ณํ๋ค.
๋จ์ผ ์๋ฒ
๋ชจ๋ ์ปดํฌ๋ํธ๊ฐ ๋จ ํ๋์ ์๋ฒ์์ ์คํ๋๋ ๊ฐ๋จํ ์์คํ ์ผ๋ก ์์ํ๋ค.
- ์ฌ์ฉ์๊ฐ ๋๋ฉ์ธ(api.mysite.com)์ ํตํด ์น์ฌ์ดํธ์ ์ ์ํ๋ค. ์ด๋ฅผ ์ํด ๋๋ฉ์ธ ์ด๋ฆ์ DNS(Domain Name Service)์ ์ง์ํ์ฌ IP ์ฃผ์๋ก ๋ณํํ๋ ๊ณผ์ ์ด ํ์ํ๋ค.
- DNS ์กฐํ ๊ฒฐ๊ณผ๋ก IP ์ฃผ์(15.125.23.214)๊ฐ ๋ฐํ๋๊ณ , ์ด๋ ์น ์๋ฒ์ ์ฃผ์์ด๋ค.
- ์์์ ์ฐพ์ IP ์ฃผ์๋ก HTPT ์์ฒญ์ด ์ ๋ฌ๋๋ค.
- ์์ฒญ์ ๋ฐ์ ์น ์๋ฒ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๋, ์ฒ๋ฆฌ ํ HTML ํ์ด์ง๋ JSON ํํ์ ์๋ต์ ๋ฐํํ๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค(RDBMS)์ ๋น-๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค(NoSQL) ์ฌ์ด์์ ๊ณ ๋ฅผ ์ ์๋ค.
์๋์ ๊ฐ์ ๊ฒฝ์ฐ NoSQL์ด ์ ํฉํ ์ ์๋ค.
- ๋ฎ์ ์๋ต ์ง์ฐ์๊ฐ(latency)๊ฐ ํ์ํ ๊ฒฝ์ฐ
- ๋ค๋ฃจ๋ ๋ฐ์ดํฐ๊ฐ ๋น์ ํ์ผ๋ก ๊ด๊ณํ ๋ฐ์ดํฐ๊ฐ ์๋ ๊ฒฝ์ฐ
- ์์ฃผ ๋ง์ ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ํ์๊ฐ ์๋ ๊ฒฝ์ฐ
์์ง์ ๊ท๋ชจ ํ์ฅ vs ์ํ์ ๊ท๋ชจ ํ์ฅ
์์ง์ ๊ท๋ชจ ํ์ฅ = ์ค์ผ์ผ ์ (scale up) = ๊ณ ์ฌ์ ์์
์ํ์ ๊ท๋ชจ ํ์ฅ = ์ค์ผ์ผ ์์(scale out) = ๋ ๋ง์ ์๋ฒ ์ถ๊ฐ
- ์์ง์ ๊ท๋ชจ ํ์ฅ์๋ ํ๊ณ(ํ ๋์ ์๋ฒ์ CPU, ๋ฉ๋ชจ๋ฆฌ ํ์ฅ ์ ํ)๊ฐ ์๋ค.
- ์์ง์ ๊ท๋ชจ ํ์ฅ๋ฒ์ ๋จ์ผ ์ฅ์ ์ง์ (SPOF, Single Pain Of Failure)์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค.
์ํคํผ๋์์ ๋จ์ผ ์ฅ์ ์ง์ ์ ์ ์:
"์ด๋ค ํน์ ์ง์ ์์ ์ฅ์ ๊ฐ ์ ์ฒด ์์คํ ์ ๋์์ ์ค๋จ์์ผ๋ฒ๋ฆด ์ ์๋ ๊ฒฝ์ฐ, ํด๋น ์ง์ ์ ๋จ์ผ ์ฅ์ ์ง์ ์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค."
๋ก๋๋ฐธ๋ฐ์
๋ก๋๋ฐธ๋ฐ์๋ ์น ์๋ฒ๋ค์๊ฒ ํธ๋ํฝ ๋ถํ๋ฅผ ๊ณ ๋ฅด๊ฒ ๋ถ์ฐํ๋ ์ญํ ์ ํ๋ค. ์ ๊ทธ๋ฆผ์ ๋ก๋๋ฐธ๋ฐ์๊ฐ ์ด๋ป๊ฒ ๋์ํ๋์ง ๋ณด์ฌ์ค๋ค.
์ฌ์ฉ์๋ ๋ก๋๋ฐธ๋ฐ์์ ๊ณต๊ฐ IP ์ฃผ์(public IP)๋ก ์ ์ํ๊ณ , ์๋ฒ ๊ฐ ํต์ ์๋ ์ฌ์ค IP ์ฃผ์(private IP)๋ฅผ ์ด์ฉํ๋ค.
- ์๋ฒ 1์ด ๋ค์ด๋๋ฉด ๋ชจ๋ ํธ๋ํฝ์ ์๋ฒ 2๋ก ์ ์ก๋๊ธฐ์ ์น ์ฌ์ดํธ ์ ์ฒด๊ฐ ๋ค์ด๋๋ ์ผ์ด ๋ฐฉ์ง๋๋ค.
- ํธ๋ํฝ์ด ์ฆ๊ฐํ๋ฉด ์์ ๋ ๋์ ์๋ฒ๋ก ๊ฐ๋นํ๊ธฐ ํ๋ ์์ ์ด ์ค๋๋ฐ, ๋ก๋๋ฐธ๋ฐ์๋ก ์ธํด ์น ์๋ฒ ๊ณ์ธต์ ๋ ๋ง์ ์๋ฒ๋ฅผ ์ถ๊ฐํ์ฌ ์ฐ์์ฐจ๊ฒ ๋์ฒํ ์ ์๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ํ ๋ค์คํ๋ฅผ ์ ์ฉํ์ฌ ์๋ณธ์ ์ฃผ(master) ์๋ฒ์, ์ฌ๋ณธ์ ๋ถ(slave) ์๋ฒ์ ์ ์ฅํ๋ค.
์ฐ๊ธฐ ์ฐ์ฐ์ ๋ง์คํฐ์์๋ง ์ง์ํ๊ณ , ๋ถ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ฌ๋ณธ์ ์ ๋ฌ๋ฐ์ ๋๊ธฐํ๋ฅผ ํ๋๋ฐ, ๋๋ถ๋ถ์ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฝ๊ธฐ ์ฐ์ฐ์ ๋น์ค์ด ์ฐ๊ธฐ ์ฐ์ฐ์ ๋น์ค๋ณด๋ค ํจ์ฌ ๋๊ธฐ ๋๋ฌธ์ด๋ค.
์์ ๊ฐ์ ๊ตฌ์กฐ๋ก ์ธํด ์ฑ๋ฅ ๊ฐ์ , ์์ ์ฑ(Reliability), ๊ฐ์ฉ์ฑ(Availability) ๋ฑ์ ์ด์ ์ด ์๋ค.
์บ์
์บ์๋ ๋น์ฉ์ด ๋น์ผ ์ฐ์ฐ ๊ฒฐ๊ณผ ํน์ ์์ฃผ ์ฐธ์กฐ๋๋ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ ์์ ๋๊ณ , ๋ณด๋ค ๋น ๋ฅธ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ์ ์ฅ์๋ค.
๋ณ๋์ ์บ์ ๊ณ์ธต์ ํตํด ์ฑ๋ฅ ๊ฐ์ ๋ฟ๋ง ์๋๋ผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ถํ๋ฅผ ์ค์ผ ์ ์๋ค.
์ ๊ทธ๋ฆผ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์บ์ ๊ณ์ธต์ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ด๋ค.
์บ์๋ฅผ ์ฌ์ฉํ ๋ ๊ณ ๋ คํด์ผ ํ ์ ์ ๋ค์๊ณผ ๊ฐ๋ค.
- ์บ์๋ ์ด๋ค ์ํฉ์ ์ ํฉํ๊ฐ? (๊ฐฑ์ ์ ์์ฃผ ์ผ์ด๋์ง ์๊ณ , ์ฐธ์กฐ๊ฐ ๋น๋ฒํ๊ฒ ๋ฐ์ํ๋ ๊ฒฝ์ฐ)
- ์ด๋ ํ ๋ฐ์ดํฐ๋ฅผ ์บ์์ ๋์ด์ผ ํ๋๊ฐ?
- ์บ์์ ๋ณด๊ด๋ ๋ฐ์ดํฐ๋ ์ด๋ป๊ฒ ๋ง๋ฃ(Expire)๊ฐ ๋์ด์ผ ํ๋๊ฐ?
- ์ผ๊ด์ฑ(consistency)์ ์ด๋ป๊ฒ ์ ์ง๋๋๊ฐ?
- ์ฅ์ ์๋ ์ด๋ป๊ฒ ๋์ฒํ ๊ฒ์ธ๊ฐ?
- ์บ์์ ๋ฉ๋ชจ๋ฆฌ๋ ์ผ๋ง๋ ํฌ๊ฒ ์ก์ ๊ฒ์ธ๊ฐ?
- ๋ฐ์ดํฐ ๋ฐฉ์ถ(eviction) ์ ์ฑ ์ ๋ฌด์์ธ๊ฐ? (ex. LRU - ๋ง์ง๋ง ์ฌ์ฉ๋ ์์ ์ด ๊ฐ์ฅ ์ค๋๋ ๋ฐ์ดํฐ ๋ด๋ณด๋ด๊ธฐ)
(์บ์ ์ ๋ต์ ๋ํ ๋น๊ต๋ ํด๋น ๋งํฌ์์ ํ์ธํ ์ ์์ต๋๋ค.)
์ฝํ ์ธ ์ ์ก ๋คํธ์ํฌ(CDN)
CDN์ ์ ์ ์ฝํ ์ธ ๋ฅผ ์ ์กํ๋๋ฐ ์ฌ์ฉ๋๋ ๋ฌผ๋ฆฌ์ ์ผ๋ก ๋ถ์ฐ๋ ์๋ฒ์ ๋คํธ์ํฌ์ด๋ค.
์ด๋ฏธ์ง, ๋น๋์ค, CSS, JS ํ์ผ ๋ฑ ์ ์ ์ฝํ ์ธ ์ ๋ํด ์บ์ฑ์ฒ๋ฆฌ๋ฅผ ํ ์ ์๋ค.
์ ์ด๋ฏธ์ง๋ CDN์ ๋์ ๊ณผ์ ์ ์ค๋ช ํ๋ค.
1. ์ฌ์ฉ์ A๊ฐ ์ด๋ฏธ์ง URL์ ์ด์ฉํด image.png์ ์ ๊ทผํ๊ณ ,
2. CDN ์๋ฒ์ ์ด๋ฏธ์ง๊ฐ ์๋ ๊ฒฝ์ฐ ์๋ณธ ์๋ฒ์ ์์ฒญํ์ฌ ํ์ผ์ ๊ฐ์ ธ์ค๊ณ ,
3. ์๋ณธ ์๋ฒ๊ฐ ํ์ผ์ CDN์ ์ ์ฅํ์ฌ ์บ์ฑํ๊ณ ,
4. ์ฌ์ฉ์ A์๊ฒ image.png์ ๋ฐํํ๋ค.
5. ๋ค๋ฅธ ์ฌ์ฉ์ B๋ ๋์ผํ ์ด๋ฏธ์ง์ ๋ํ ์์ฒญ์ CDN์ ์ ์กํ๋๋ฐ,
6. ๋ง๋ฃ๋์ง ์์ ์ด๋ฏธ์ง์ ๋ํ ์์ฒญ์ CDN ์บ์๋ฅผ ํตํด ์ฒ๋ฆฌํ๋ค.
๋ฌด์ํ(Stateless) ์น ๊ณ์ธต
์น ๊ณ์ธต์ ์ํ์ ์ผ๋ก ํ์ฅํ๊ธฐ ์ํด ์ํ ์ ๋ณด(์ฌ์ฉ์ ์ธ์ ๊ณผ ๊ฐ์)๋ฅผ ์น ๊ณ์ธต์์ ์ ๊ฑฐ(stateless)ํด์ผ ํ๋ค.
์ํ ์ ๋ณด์ ์์กด์ ์ธ ๊ณ์ธต์ด๋ผ๋ฉด, ํน์ ์๋ฒ์ ๋ํ ์ฌ์ฉ์ ์์ฒญ์ ๋์ผํ ์๋ฒ์ ์ ์ก๋์ด์ผ ํ๋ค. ๋ค๋ฅธ ์๋ฒ์๋ ํด๋น ์ฌ์ฉ์์ ๋ํ ๋ฐ์ดํฐ๋ฅผ ๋ณด๊ดํ๊ณ ์์ง ์๊ธฐ ๋๋ฌธ์ด๋ค.
๋ฐ๋ผ์ ๋ฌด์ํ ์ํคํ ์ฒ์์๋ ์ฌ์ฉ์๋ก๋ถํฐ HTTP ์์ฒญ์ ์ด๋ ํ ์น ์๋ฒ๋ก๋ ์ ๋ฌ๋ ์ ์๊ณ , ์น ์๋ฒ์์ ์ํ ์ ๋ณด๊ฐ ํ์ํ ๊ฒฝ์ฐ ๊ณต์ ์ ์ฅ์ ๋ฑ์ ํ์ฉํ ์ ์๋ค.
๋ง์ฝ ์๋น์ค๊ฐ ๊ธ์๋๋ก ์ฑ์ฅํ์ฌ ๊ฐ์ฉ์ฑ์ ๋์ด๊ณ ์ ์ธ๊ณ ์ด๋์๋ ์พ์ ํ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ํ๊ธฐ ์ํด์ ์ฌ๋ฌ ๋ฐ์ดํฐ ์ผํฐ(data center)๋ฅผ ์ง์ํด์ผ ํ๋ค.
๋ฐ์ดํฐ ์ผํฐ
์ฅ์ ๊ฐ ์๋ ์ํฉ์์ ์ฌ์ฉ์๋ ๊ฐ์ฅ ๊ฐ๊น์ด ๋ฐ์ดํฐ ์ผํฐ๋ก ์๋ด๋๋๋ฐ, ์ด ์ ์ฐจ๋ฅผ ์ง๋ฆฌ์ ๋ผ์ฐํ (geoDNS-routing)๋ผ๊ณ ํ๋ค.
์ ๋ฐ์ดํฐ ์ผํฐ(DC) ์ค ํ๋์ ์ฅ์ ๊ฐ ๋ฐ์ํ๋ฉด ํธ๋ํฝ์ ๋ค๋ฅธ ๋ฐ์ดํฐ ์ผํฐ๋ก ์ ์ก๋๋ค.
์์ ๊ฐ์ ์ํคํ ์ฒ๋ฅผ ๋ง๋ค๋ ค๋ฉด ๊ณ ๋ คํด์ผ ํ ์ฌํญ๋ค์ด ์๋ค.
- ํธ๋ํฝ ์ฐํ: ์ฌ๋ฐ๋ฅธ ๋ฐ์ดํฐ ์ผํฐ๋ก ํธ๋ํฝ์ ๋ณด๋ด๋ ํจ๊ณผ์ ์ธ ๋ฐฉ๋ฒ์ ์ฐพ์์ผ ํ๋ค. GeoDNS๋ ์ฌ์ฉ์๊ฐ ๊ฐ์ฅ ๊ฐ๊น์ด ๋ฐ์ดํฐ์ผํฐ๋ก ํธ๋ํฝ์ ๋ณด๋ผ ์ ์๋๋ก ํ๋ค.
- ๋ฐ์ดํฐ ๋๊ธฐํ(synchronization): ๋ฐ์ดํฐ ์ผํฐ๋ง๋ค ๋ณ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๋ค๋ฉด, ์ฅ์ ๊ฐ ๋ณต๊ตฌ๋์ด ํธ๋ํฝ์ด ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ์ฐํ๋๋ค ํด๋, ํด๋น ๋ฐ์ดํฐ์ผํฐ์๋ ๋ฐ์ดํฐ๊ฐ ์์ ์ ์๋ค. ์ด๋ฐ ์ํฉ์ ๋ง๋ ๋ณดํธ์ ์ธ ์ ๋ต์ ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฌ ๋ฐ์ดํฐ์ผํฐ์ ๊ฑธ์ณ ๋ค์คํํ๋ ๊ฒ์ด๋ค.
(๋ทํ๋ฆญ์ค๊ฐ ์ฌ๋ฌ ๋ฐ์ดํฐ์ผํฐ์ ๊ฑธ์ณ ๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ๋ค์คํํ๋์ง๋ ํด๋น ๋งํฌ ํตํด ํ์ธํ ์ ์์ต๋๋ค.)
๋ฉ์์ง ํ
๋ฉ์์ง ํ๋ ๋ฉ์์ง์ ๋ฌด์์ค์ ๋ณด์ฅํ๋, ๋น๋๊ธฐ ํต์ ์ ์ง์ํ๋ ์ปดํฌ๋ํธ๋ค.
: durability, ๋ฉ์์ง ํ์ ์ผ๋จ ๋ณด๊ด๋ ๋ฉ์์ง๋ ์๋น์๊ฐ ๊บผ๋ผ ๋๊น์ง ์์ ํ ๋ณด๊ด๋๋ค๋ ํน์ฑ
๋ฉ์์ง ํ์ ๊ธฐ๋ณธ ์ํคํ ์ฒ๋ ๊ฐ๋จํ๋ค. ์์ฐ์ ๋๋ ๋ฐํ์(producer/publisher)๋ผ๊ณ ๋ถ๋ฆฌ๋ ์ ๋ ฅ ์๋น์ค๊ฐ ๋ฉ์์ง๋ฅผ ๋ง๋ค์ด ๋ฉ์์ง ํ์ ๋ฐํ(publish)ํ๊ณ , ์๋น์ ํน์ ๊ตฌ๋ ์(consumer/publisher)๋ผ ๋ถ๋ฆฌ๋ ์๋น์ค, ์๋ฒ๊ฐ ์ฐ๊ฒฐ๋์ด ๋ฉ์์ง๋ฅผ ๋ฐ์ ๊ทธ์ ๋ง๋ ๋์์ ์ํํ๋ ์ญํ ์ ํ๋ค.
๋ฉ์์ง ํ๋ฅผ ์ด์ฉํ๋ฉด ์๋น์ค ํน์ ์๋ฒ ๊ฐ ๊ฒฐํฉ์ด ๋์จํด์ ธ์ ๊ท๋ชจ ํ์ฅ์ฑ์ด ๋ณด์ฅ๋์ด์ผ ํ๋ ์์ ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ฑํ๊ธฐ ์ข๋ค.
์์ฐ์๋ ์๋น์์ ์ํ์ ์๊ด์์ด ๋ฉ์์ง๋ฅผ ๋ฐํํ ์ ์๊ณ , ์๋น์๋ํ ์์ฐ์์ ์๊ด์์ด ๋ฉ์์ง๋ฅผ ์์ ํ ์ ์๋ค.
๋ก๊ทธ, ๋ฉํธ๋ฆญ ๊ทธ๋ฆฌ๊ณ ์๋ํ
ํ๋ก์ ํธ์ ๊ท๋ชจ๊ฐ ์ปค์ง์๋ก ์์ ๋๊ตฌ์ ํ์์ ์ผ๋ก ํฌ์ํด์ผ ํ๋ค.
- ๋ก๊ทธ: ์๋ฌ ๋ก๊ทธ๋ฅผ ๋ชจ๋ํฐ๋งํ๋ ๊ฒ์ ๊ต์ฅํ ์ค์ํ๋ฐ, ์์คํ ์ค๋ฅ์ ๋ฌธ์ ๋ค์ ๋ณด๋ค ์ฝ๊ฒ ์ฐพ์๋ผ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค. ์๋ฌ ๋ก๊ทธ๋ ์๋ฒ ๋จ์๋ก ๋ชจ๋ํฐ๋ง ํ ์๋ ์์ง๋ง, ๋ก๊ทธ๋ฅผ ๋จ์ผ ์๋น์ค๋ก ๋ชจ์์ฃผ๋ ๋๊ตฌ๋ฅผ ํ์ฉํ๋ฉด ๋ ํธ๋ฆฌํ๊ฒ ํ์ฉํ ์ ์๋ค. (ex. ELK ์คํ)
- ๋ฉํธ๋ฆญ: ๋ฉํธ๋ฆญ์ ์ ์์งํ๋ฉด ์ฌ์
ํํฉ์ ๊ดํ ์ ์ฉํ ์ ๋ณด๋ฅผ ์ป์ ์๋ ์๊ณ , ์์คํ
์ ํ์ฌ ์ํ๋ฅผ ์์ฝ๊ฒ ํ์
ํ ์ ์๋ค.
- ํธ์คํฑ ๋จ์ ๋ฉํธ๋ฆญ: CPU, ๋ฉ๋ชจ๋ฆฌ, ๋์คํฌ I/O
- ์ข ํฉ ๋ฉํธ๋ฆญ: ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ณ์ธต์ ์ฑ๋ฅ, ์บ์ ๊ณ์ธต์ ์๋ฅ
- ํต์ฌ ๋น์ฆ๋์ค ๋ฉํธ๋ฆญ: ์ผ๋ณ ์ฌ์ฉ์, ์์ต, ํด๋ฆญ์จ, ์ฌ๋ฐฉ๋ฌธ ๋ฑ - ์๋ํ: ์์คํ ์ด ํฌ๊ณ ๋ณต์กํด์ง์๋ก ์์ฐ์ฑ์ ๋์ด๊ธฐ ์ํ ์๋ํ ๋๊ตฌ๋ฅผ ํ์ฉ (ex. CI/CD)
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ท๋ชจ ํ์ฅ
์ ์ฅํ ๋ฐ์ดํฐ๊ฐ ๋ง์์ง์๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ๋ถํ๋ ์ฆ๊ฐํ๋๋ฐ, ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฆ์คํ ๋ฐฉ๋ฒ์ ์ฐพ์์ผ ํ๋ค.
์ฌ๊ธฐ์๋ ์์ง์ ํ์ฅ, ์ํ์ ํ์ฅ์ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๋ค.
์์ง์ ํ์ฅ
์ค์ผ์ผ ์ ์ด๋ผ๊ณ ๋ถ๋ฅด๋ ์์ง์ ๊ท๋ชจ์ ํ์ฅ๋ฒ์ ๊ธฐ์กด ์๋ฒ์ ๋ ๋ง์/๋์ ๊ณ ์ฑ๋ฅ์ ์์์ ์ฆ์คํ๋ ๋ฐฉ๋ฒ์ด๋ค.
์คํ์ค๋ฒํ๋ก(stackoverflow.com)๋ 2013๋ ํ ํด ๋์ ๋ฐฉ๋ฌธํ ์ฒ๋ง ๋ช ์ ์ฌ์ฉ์ ์ ๋ถ๋ฅผ ๋จ ํ ๋์ ๋ง์คํฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ์ฒ๋ฆฌํ ์ฌ๋ก๋ ์กด์ฌํ๋ค.
https://nickcraver.com/blog/2013/11/22/what-it-takes-to-run-stack-overflow/
ํ์ง๋ง ์ด๋ฌํ ์์ง์ ์ ๊ทผ๋ฒ์๋ ๋ช ๊ฐ์ง ๋ฌธ์ ์ ์ด ์กด์ฌํ๋ค.
- ํ๋์จ์ด์ ํ๊ณ๋ก ์ธํด CPU, RAM ๋ฑ์ ๋ฌดํํ ์ฆ์คํ ์๋ ์๋ค.
- SPOF(Single Poinf Of Failure)๋ก ์ธํ ์ํ์ฑ์ด ํฌ๋ค.
- ๋น์ฉ์ด ๋ง์ด ๋ฐ์ํ ์ ์๋ค.
์ํ์ ํ์ฅ
์ค์ผ์ผ ์์์ด๋ผ๊ณ ๋ถ๋ฅด๋ ์ํ์ ํ์ฅ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์๋ ์ค๋ฉ์ด๋ผ๊ณ ๋ ๋ถ๋ฅด๋๋ฐ, ๋ ๋ง์ ์๋ฒ๋ฅผ ์ถ๊ฐํจ์ผ๋ก์จ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์๋๋ก ํ๋ค.
์ค๋ฉ์ ๋๊ท๋ชจ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ค๋(shard)๋ผ๊ณ ๋ถ๋ฅด๋ ์์ ๋จ์๋ก ๋ถํ ํ๋ ๊ธฐ์ ์ ์๋ฏธํ๋ค. ์ฌ์ฉ์ ๋ฐ์ดํฐ๋ฅผ ์ด๋ ์ค๋์ ๋ฃ์์ง ๊ฒฐ์ ํ๋ ๊ฒ์ด ์ค๋ฉ ์ ๋ต์ ๊ตฌํํ ๋ ๊ฐ์ฅ ์ค์ํ๊ฒ ๊ณ ๋ คํด์ผ ํ ์ ์ด๋ค.
์ค๋ฉ ์ ๋ต์ผ๋ก๋ Key Based, Range Based, Look up Table ๋ฑ ๋ค์ํ ๋ฐฉ์๋ค์ด ์์ต๋๋ค. ์ด์ ๊ด๋ จํด์๋ ์๋ ์์์์ ๊ฝค๋ ์์ธํ๊ฒ ์ค๋ช ํ๊ณ ์์ต๋๋ค.
https://www.youtube.com/watch?v=704qQs6KoUk
์ค๋ฉ ํค๋ฅผ ์ ํ ๋๋ ๋ฐ์ดํฐ๋ฅผ ๊ณ ๋ฅด๊ฒ ๋ถํ ํ ์ ์๋๋ก ํ๋ ๊ฒ ๊ฐ์ฅ ์ค์ํ๋ค. ๋ํ ์ค๋ฉ์ ๋์ ํ๋ฉด ์์คํ ์ด ๋ณต์กํด์ง๊ณ ํ์ด์ผ ํ ์๋ก์ด ๋ฌธ์ ๋ ์๊ธด๋ค.
- ๋ฐ์ดํฐ์ ์ฌ ์ค๋ฉ(resharding): ๋ฐ์ดํฐ๊ฐ ๋๋ฌด ๋ง์์ ธ์ ํ๋์ ์ค๋๋ก๋ ๋ ์ด์ ๊ฐ๋นํ๊ธฐ ์ด๋ ค์ธ ๋, ์ค๋ ๊ฐ ๋ฐ์ดํฐ ๋ถํฌ๊ฐ ๊ท ๋ฑํ์ง ๋ชปํ ๋ ๋ฐ์ดํฐ์ ์ฌ ์ค๋ฉ์ด ํ์ํ๋ค.
- ์ ๋ช ์ธ์ฌ(celebrity) ๋ฌธ์ : ํซ์คํ ํค ๋ฌธ์ ๋ผ๊ณ ๋ ๋ถ๋ฅด๋๋ฐ, ํน์ ์ค๋์ ์ง์๊ฐ ์ง์ค๋์ด ์๋ฒ์ ๊ณผ๋ถํ๊ฐ ๊ฑธ๋ฆฌ๋ ๋ฌธ์ ๋ค. ๊ฐ๋ น ์ ์คํด ๋น๋ฒ, ๋ ์ด๋ ๊ฐ๊ฐ์ ๊ฐ์ ์ ๋ช ์ธ์ฌ๊ฐ ์ ๋ถ ๊ฐ์ ์ค๋์ ์ ์ฅ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์๋ ๊ฒฝ์ฐ์ด๋ค.
Instagram System Design
- https://www.geeksforgeeks.org/design-instagram-a-system-design-interview-question/
- https://dev.to/zeeshanali0704/instagram-system-design-48oj
- ์กฐ์ธ๊ณผ ๋น์ ๊ทํ: ํ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ๋ฌ ์ค๋ ์๋ฒ๋ก ์ชผ๊ฐ๊ณ ๋๋ฉด, ์ฌ๋ฌ ์ค๋์ ๊ฑธ์น ๋ฐ์ดํฐ๋ฅผ ์กฐ์ธํ๊ธฐ๊ฐ ํ๋ค์ด ์ง๋ค. ์ด๋ฅผ ํด๊ฒฐํ๋ ํ ๊ฐ์ง ๋ฐฉ๋ฒ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋น์ ๊ทํํ์ฌ ํ๋์ ํ ์ด๋ธ์์ ์ง์๊ฐ ์ํ๋ ์ ์๋๋ก ํด์ผํ๋ค.
์ต์ข ์ํคํ ์ฒ
์ฌ์ฉ์ ๋จ๋ง์์๋ DNS, CDN ๋ฑ์ ํตํด ์ง์&์ต์ ํ๋ฅผ ํ๊ณ , ์๋ฒ์ ์์ฒญ์ ๋ก๋๋ฐธ๋ฐ์๋ฅผ ํตํด ํธ๋ํฝ์ ๋ถ์ฐ ์ฒ๋ฆฌ ํ๋ค.
์๋ฒ์ ์ํคํ ์ฒ์์๋ ํ์ํ ๊ฒฝ์ฐ ๋ฉ์์ง ํ๋ฅผ ํตํด ๋น๋๊ธฐ ์ฒ๋ฆฌ๋ฅผ ์ํํ๊ณ , ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ง์๊ฐ ํ์์๋ ๊ฒฝ์ฐ ์บ์ ์ฒ๋ฆฌ๋ฅผ ํตํด ๋น ๋ฅด๊ฒ ์กฐํํ ์ ์๋๋ก ํ๋ค. ๋ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ถํ๋ฅผ ๊ณ ๋ คํ์ฌ ์ค๋ฉ์ ์ ์ฉํ์๊ณ , ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์๊ตฌ๋์ง ์๋ ๊ธฐ๋ฅ๋ค์ NoSQL์ ์ฌ์ฉํ์ฌ ์ฒ๋ฆฌํ๋ค.
์์คํ ๊ท๋ชจ ํ์ฅ์ ์ํด ์ดํด๋ณธ ๊ธฐ๋ฒ๋ค์ ์ ๋ฆฌํด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
- ์น ๊ณ์ธต์ ๋ฌด์ํ(stateless) ๊ณ์ธต์ผ๋ก,
- ๋ชจ๋ ๊ณ์ธต์ ๋ค์คํ ๋์
- ๊ฐ๋ฅํ ํ ๋ง์ ๋ฐ์ดํฐ๋ฅผ ์บ์ฑ ์ฒ๋ฆฌ
- ์ฌ๋ฌ ๋ฐ์ดํฐ ์ผํฐ๋ฅผ ์ง์ํ๊ธฐ
- ์ ์ ์ฝํ ์ธ ๋ CDN์ ํตํด ์๋น์ค ํ๊ธฐ
- ๋ฐ์ดํฐ ๊ณ์ธต์ ์ค๋ฉ์ ํตํด ๊ท๋ชจ ํ์ฅํ๊ธฐ
- ๊ฐ ๊ณ์ธต์ ๋ ๋ฆฝ ์๋น์ค๋ก ๋ถํ ํ๊ธฐ
- ์์คํ ์ ์ง์์ ์ผ๋ก ๋ชจ๋ํฐ๋งํ๊ณ , ์๋ํ ๋๊ตฌ๋ค์ ํ์ฉํ ๊ฒ
'System Design' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
System Design: Message Deduplication System (0) | 2024.10.27 |
---|
๋๊ธ