
DNS(๋๋ฉ์ธ, ์๋ํํฐ)๋ฅผ ํตํด์ ๋๋ฉ์ธ์ผ๋ก ๋ก๊ทธ์ธํ๋ฉด DNS ์ฐ๊ฒฐ๋ IP๋ฅผ ๋ฐํํด์ค๋ค.
์น์๋ฒ์ IP๋ฅผ ๋ณด๋ด๋ฉด, ์น์๋ฒ๋ ํด๋นํ๋ HTML ํ์ด์ง๋, JSON ํ์ ํ์ผ์ ๋ฐํํ๋ค.
๋ฐ์ดํฐ ๋ฒ ์ด์ค
์ฌ์ฉ์๊ฐ ๋๋ฉด, ์๋ฒ ํ๋๋ก๋ ์ถฉ๋ถํ์ง ์์์ ์ฌ๋ฌ ์๋ฒ๋ฅผ ๋๋ค.
ํ๋๋ ์น/๋ชจ๋ฐ์ผ 'ํธ๋ํฝ ์ฒ๋ฆฌ' ์ฉ๋, ๋ค๋ฅธ ํ๋๋ '๋ฐ์ดํฐ ๋ฒ ์ด์ค' ์ฉ๋์ด๋ค.
์น๊ณ์ธต๊ณผ ๋ฐ์ดํฐ ๊ณ์ธต์ ๋ถ๋ฆฌํ๋ฉด, ๊ทธ ๋๊ฐ์ ๊ฐ์ง๋ฅผ ๊ฐ๊ฐ ๋ง๋ค ํ์ฅํด ๋๊ฐ ์ ์๋ค.
RDBMS(Relaitonal Data Base Management System), ๊ด๊ณํ ๋ฐ์ดํฐ ๋ฒ ์ด์ค
์ค๋ผํด, MySQL, PostgreSQL
NoSQL, ๋น ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค
Cassandra, HBase, Amazon DynamoDB, CouchDB, Neo4j

์ฌ์ค IP๋ ์ธํฐ๋ท์ ํตํด์๋ ์ ์์ด ์๋๋ค.
์น์ฌ์ดํธ๋ก ์ ์ ๋๋ ํธ๋ํฝ์ด ๊ฐํ๋ฅด๊ฒ ์ฆ๊ฐํ๋ฉด, ๋ก๋๋ฐธ๋ฐ์ค๋ก ์ฐ์ํ๊ฒ ๋์ฒ๊ฐ๋ฅํ๋ค. ์น์๋ฒ ๊ณ์ธต์ ๋ ๋ง์ ์๋ฒ๋ฅผ ์ถ๊ฐ ํ๊ธฐ๋ง ํ๋ฉด๋๊ณ , ๋ก๋ ๋ฐธ๋ฐ์ค๊ฐ ์๋์ ์ผ๋ก, ํธ๋ํฝ์ ๋ถ์ฐํ๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ค์คํ
๋ง์ ๋ฐ์ดํฐ ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ ์ด ๋ค์คํ๋ฅผ ์ง์ํ๋ค. ๋ณดํต ์๋ฒ ์ฌ์ด์ ์ฃผ(master)-๋ถ(slave)๋ฅผ ์ค์ ํ๊ณ , ์๋ณธ์ ์ฃผ์, ์ฌ๋ณธ์ ๋ถ์ ์ ์ฅํ๋ ๋ฐฉ์์ด๋ค.
์ฐ๋ ๋ฐฉ์์ ๋ง์คํฐ๋ง ์ง์ํ๋ค. ๋ถ๋, ์ฝ๊ธฐ๋ง ์ง์ํ๋ค. INSERT, DELETE, UPDATE ๋ฑ์ ์ฃผ ๋ฐ์ดํฐ ๋ฒ ์ด์ค๋ก๋ง ์ ๋ฌ๋ผ์ผ ํ๋ค.

๋ฐ์ดํฐ ๋ฒ ์ด์ค๋ฅผ ๋ค์คํ ํ๋ฉด ์ฌ๋ฌ ์ด์ ์ด ์๋ค.
๋ณดํต ์ฐ๊ธฐ ์ฐ์ฐ๋ณด๋ค, ์ฝ๊ธฐ ์ฐ์ฐ์ด ํจ์ฌ ๋ง๊ธฐ ๋๋ฌธ์ ์ฐ์ฐ์ด ๋ณ๋ ฌ๋ก ๋ถ์ฐ ์ฒ๋ฆฌ๋๋ฉฐ ์ฑ๋ฅ์ด์ข์์ง๋ค.
์์ ์ฑ์ด ์ฆ๊ฐํ๋ค. ์๋ฒ๊ฐ ์ผ๋ถ ํ๊ดด๋์ด๋, ๋ฐ์ดํฐ๊ฐ ๋ณด์กด๋๋ค.
๊ฐ์ฉ์ฑ(availability) : ์ฌ๋ฌ๊ฐ๋ฅผ ๋ณต์ ํด๋์์์ผ๋ก, ์ผ๋ถ์์ ์ฅ์ ๊ฐ ๋ฐ์ํด๋ ๋ค๋ฅธ ๊ณณ์์ ๊ฐ์ ธ์์ ๊ณ์ ์ด์ฉ๊ฐ๋ฅํ๋ค.

์บ์
์บ์๋ ์์ฃผ ์ฐธ์กฐ ๋๊ฑฐ๋ ๊ฐ๋น์ผ ์ฐ์ฐ ๊ฒฐ๊ณผ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ ์์ ๋๊ณ , ๋ค ์์ฒญ์ด ๋ ๋นจ๋ฆฌ ์ฒ๋ฆฌ๋ ์ ์๊ฒ ํ๋ ์ ์ฅ์ด๋ค.
app์ ์ฑ๋ฅ์ db๋ฅผ ์ผ๋ง๋ ์์ฃผ ํธ์ถํ๋๋์ ํฌ๊ฒ ์ข์ฐ๋๊ธฐ ๋๋ฌธ์, ์บ์๋ ๊ทธ๋ฐ๋ฌธ์ ๋ฅผ ์ํํ๋ค.
์บ์ ๊ณ์ธต
์บ์ ๊ณ์ธต(cashe tier)๋ ์ ์ ๋ณด๊ดํ๋ ์ฅ์๋ก db๋ณด๋ค ํจ์ฌ<<< ๋น ๋ฅด๋ค.
๋ณ๋ ์บ์ ๊ณ์ธต์ ๋๋ฉด์, db ๋ถํ๋ฅผ ์ค์ด๊ณ , ์บ์๊ณ์ธต์ ๊ท๋ชจ๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ํ์ฅํ๋ ๊ฒ๋ ๊ฐ๋ฅํ๋ค.

์ฝ๊ธฐ ์ฃผ๋ํ ์บ์ ์ ๋ต(read-through caching strategy)
์น์๋ฒ๋ ์์ฒญ์ ๋ฐ์ผ๋ฉด, ์บ์์ ์์ผ๋ฉด ํด๋นdb๋ฅผ ๋ฐํํ๋ค.
์บ์์ ์์ผ๋ฉด db์ง์๋ฅผ ํตํด์ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์์, ์บ์์ ์ ์ฅํด๋๊ณ , ํด๋ผ์ด์ธํธ์ ๋ฐํํ๋ค.
์บ์ ์๋ฒ๋ค์ ์ผ๋ฐ์ ์ธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก api๋ฅผ ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ ์ด์ฉ์ ๊ฐ๋จํ๋ค. (ex. memcached API)

์ฝ๋ ์ค๋ณ ์ฌ์ด ์ค๋ช
- SECONDS = 1 ์๊ฐ์ ๊ณ์ฐํ๊ธฐ ํธํ๋๋ก 1์ด(Second)๋ฅผ ์๋ฏธํ๋ ๋ณ์๋ฅผ ๋ง๋ค์ด ๋ ๊ฒ์ ๋๋ค.
- cache.set('myKey', 'hi there', 3600 * SECONDS) ๋ฐ์ดํฐ๋ฅผ ์์ ๋ณด๊ดํจ(์บ์)์ ์ ์ฅ(set)ํ๋ ๋ช
๋ น์ด์
๋๋ค.
- 'myKey': ๋ฐ์ดํฐ๋ฅผ ์ฐพ์ ๋ ์ธ ์ด๋ฆํ(Key)์ ๋๋ค.
- 'hi there': ์ค์ ๋ก ๋ณด๊ดํ ๋ด์ฉ(๋ฐ์ดํฐ)์ ๋๋ค.
- 3600 * SECONDS: ์ด ๋ฐ์ดํฐ๋ฅผ ๋ณด๊ดํ ์๊ฐ์ ๋๋ค. 3,600์ด, ์ฆ 1์๊ฐ ๋์๋ง ๋ณด๊ดํ๊ณ ๊ทธ ์ดํ์๋ ์๋์ผ๋ก ์ญ์ ํด ๋ฌ๋ผ๋ ๋ป์ ๋๋ค.
- cache.get('myKey') ๋ณด๊ดํจ์์ ๋ฐ์ดํฐ๋ฅผ ๋ค์ ๊บผ๋ด์ค๋(get) ๋ช ๋ น์ด์ ๋๋ค. 'myKey'๋ผ๋ ์ด๋ฆํ๊ฐ ๋ถ์ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์๋ฌ๋ผ๊ณ ์์ฒญํ๋ ๊ฒ์ด๋ฉฐ, ๋ง์ฝ 1์๊ฐ์ด ์ง๋์ง ์์๋ค๋ฉด ์ฒ์์ ๋ฃ์๋ 'hi there'๋ผ๋ ๋ฌธ๊ตฌ๋ฅผ ๊ฒฐ๊ณผ๋ก ๋๋ ค๋ฐ๊ฒ ๋ฉ๋๋ค
์บ์ ์ฌ์ฉ์ ์ ์ ์
1. ๋ฐ์ดํฐ ๊ฐฑ์ ์ ๋ณ๋ก ์๋๋ฐ ์ฐธ์กฐ๋ ์์ฃผํ๋ ๋ฐ์ดํฐ๋ฅผ ์บ์์ ๋ฃ์ผ๋ฉด ์ ์ฉํ๋ค.
2. ์์์ฑ ๋ฐ์ดํฐ๋ฅผ ๋๋๊ฑด ๋ฐ๋์ง ํ์ง ์๋ค. ์บ์ ์๋ฒ๋ ์ฌ์์ ๋๋ฉด ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ ์ฌ๋ผ์ง๋ค.
3. ์ธ์ ๋ง๋ฃ(Expire)ํ๋๊ฐ? ์ ์ฑ ์ ๋ง๋ จํ๋๊ฑด ์ข๋ค. ์์ผ๋ฉด, ๊ณ์ํด์ ์บ์์ ๋จ๊ธฐ ๋๋ฌธ์ด๋ค.
4. ์ผ๊ด์ฑ(Consistency)๋ ์ด๋ป๊ฒ ์ ์งํ๋๊ฐ? db์๋ณธ๊ณผ ์บ์๋ด ์ฌ๋ณธ์ด ๊ฐ์์ง์ด๋ค.
- ์ ์ฅ์์ ์๋ณธ์ ๊ฐฑ์ ํ๋ ์ฐ์ฐ๊ณผ ์บ์๋ฅผ ๊ฐฑ์ ํ๋ ์ฐ์ฐ์ด ๋จ์ผ ํธ๋์ญ์ ์ผ๋ก ์ฒ๋ฆฌ๋์ง ์์ผ๋ฉด, ์ผ๊ด์ฑ์ ๊นจ์ง ์ ์๋ค.
์ฌ๋ฌ ์ง์ญ์ ์์คํ ์ ํ์ฅํด๋๊ฐ๋ฉด, ์บ์~์ ์ฅ์์ฌ์ด ์ผ๊ด์ฑ ์ ์ง๋ ์ด๋ ค์ด ๋ฌธ์ ๊ฐ ๋ ์ ์๋ค.
ํ๋ถ๋ ผ๋ฌธ <Scaling Memcahe at Facebook> ์ฐธ์กฐ
5. ์ฅ์ ์ฒ๋ฆฌ : ์บ์ ์๋ฒ๊ฐ ํ ๋๋ง ์์ผ๋ฉด ๋จ์ผ ์ฅ์ ์ง์ (Single Point of Failure, SPOF)๊ฐ ๋ ์ ์๋ค.
๋จ์ผ ์ฅ์ ์ง์ (SPOF)์ ์ ์๋ ๋ค์๊ณผ ๊ฐ๋ค. ํน์ ์ง์ ์์์ ์ฅ์ ๊ฐ ์ ์ฒด ์์คํ ๋์์ ์ค๋จ ์์ผ๋ฒ๋ฆด ์ ์์ผ๋ฉด, ๊ทธ ์ง์ ์ ๋จ์ผ ์ฅ์ ์ง์ ์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.

SPOF๋ฅผ ํผํ๋ ค๋ฉด, ์ฌ๋ฌ ์ง์ญ์ ๊ฑธ์ณ ์บ์ ์๋ฒ๋ฅผ ๋ถ์ฐ ์์ผ์ผ ํ๋ค.
6. ์บ์ ๋ฉ๋ชจ๋ฆฌ์ ์ฉ๋ ํฌ๊ธฐ : ๋๋ฌด ์์ผ๋ฉด, ๋๋ฌด ๋ฐ๋ ค๋๋ฒ๋ฆฌ๋ฉด์ ์ฑ๋ฅ์ด ๋จ์ด์ง๋ค. ์บ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ณผํ ๋น(Overprovision)ํ๋ฉด, ๋ณด๊ด๋ ๋ฐ์ดํฐ๊ฐ ๊ฐ์๊ธฐ ๋์ด๋ ๋ ์๊ธฐ๋ ๋ฌธ์ ๋ ๋ฐฉ์งํ ์ ์๋ค.
7. ๋ฐ์ดํฐ ๋ฐฉ์ถ(Eviction) ์บ์๊ฐ ๊ฝ ์ฐจ๋ฒ๋ฆฌ๋ฉด, ์ถ๊ฐ ๋ฃ์ด์ผํ ๋ ๊ธฐ์กด ๋ฐ์ดํฐ๋ฅผ ๋ด๋ณด๋ด์ผํ๋ค. ์ด๊ฒ ๋ฐฉ์ถ ์ ์ฑ ์ด๋ค
๋ง์ง๋ง์ผ๋ก ์ฌ์ฉ์ง์ ์ด ๊ฐ์ฅ ์ค๋๋ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๋์ ์ฑ LRU(Least Recently Used) ๋ฅผ ๋ด๋ณด๋ด๋๊ฒ.
FIFO(First In First Out) ๊ฒฝ์ฐ์ ๋ง๊ฒ ์ ์ฉ์ ํ๋ค.
์ฝํ ์ธ ์ ์ก ๋คํธ์ํฌ(CDN)
CDN์ ์ ์ ์ฝํ ์ธ ๋ฅผ ์ ์กํ ๋ ์ฐ๋, ์ง๋ฆฌ์ ์ผ๋ก ๋ถ์ฐ๋ ์๋ฒ์ ๋คํธ์ํฌ๋ค. ์ด๋ฏธ์ง, ๋น๋์ค, CSS, JS ํ์ผ ๋ฑ์ ์บ์ํ ์ ์๋ค.
๋์ ์ฝํ ์ธ ์บ์ฑ์ ์๋ก์ด ๊ฐ๋ ์ผ๋ก, ์์ฒญ ๊ฒฝ๋ก(Request path), ์ง์ ๋ฌธ์์ด(Query String), ์ฟ ํค(Cookie) ์์ฒญ ํค๋(Request header) ๋ฑ์ ์ ๋ณด ๊ธฐ๋ฐ์ผ๋ก HTML ํ์ด์ง๋ฅผ ์บ์ํ๋ ๊ฒ์ด๋ค. [9]
CDN์ ์ฌ์ฉํด์ ์ ์ ์ฝํ ์ธ ๋ฅผ ์บ์ํ๋ ๋ฐฉ๋ฒ๋ง ์ผ๋จ ์ง์คํด์ ์ดํด๋ฅผ ์งํํ๋ค.
์ฌ์ฉ์๊ฐ ์น์ฌ์ดํธ๋ฅผ ๋ฐฉ๋ฌธํ๋ฉด, ์ฌ์ฉ์์๊ฒ ๊ฐ์ฅ ๊ฐ๊น์ด CDN ์๋ฒ๊ฐ ์ ์ ์ฝํ ์ธ ๋ฅผ ์ ๋ฌํ๋ค. CDN์๋ฒ๊ฐ ์ฌ์ฉ์๋ก๋ถํฐ ๋ฉ์๋ก ์น์ฌ์ดํธ๋ ์ฒ์ฒํ ๋ก๋๋๊ธฐ ๋๋ฌธ์ด๋ค. CDN ์๋ฒ๊ฐ SF์ ์์ผ๋ฉด, LA ์ฌ์ฉ์๋ ์ ๋ฝ ์ฌ์ฉ์๋ณด๋ค ๋น ๋ฅธ ์น์ฌ์ดํธ๋ฅผ ๋ณธ๋ค.
1-9๋ ์ด๋ป๊ฒ CDN ์ด ์ฌ์ดํธ ๋ก๋ฉ ์๊ฐ์ ์ค์๋์ง ๋ณด์ฌ์ค๋ค.

1. ์ฌ์ฉ์ a๊ฐ ์ด๋ฏธ์ง URL๋ก image.png์ ์ ๊ทผํ๋ค. url์ CDN์ฌ์ ์๊ฐ ์ ๊ณตํ ๊ฒ์ด๋ค.
ex) cloudfront, akamai CDN ์ URL ์์
- https://mysite.cloudfront.net/logo.jpg
2. CDN ์๋ฒ ์บ์์ ๊ทธ ์ด๋ฏธ์ง๊ฐ ์์ผ๋ฉด ์๋ณธ ์๋ฒ ์์ฒญํด์ ๊ฐ์ ธ์จ๋ค.
์๋ณธ ์๋ฒ๋ ์น ์๋ฒ์ผ ์๋ ์๊ณ AWS๊ฐ์ S3 ์จ๋ผ์ธ ์ ์ฅ์ ์ผ ์ ์๋ค.
3. ์๋ณธ ์๋ฒ๊ฐ CDN์ ๋ฐํํ๋ค. ์๋ต์ HTTPํค๋์๋ ํด๋น ํ์ผ์ด ์ผ๋ง๋ ์ค๋ ์บ์๋ ์ ์๋์ง TTL(Time-To-Live)๊ฐ์ด ์๋ค.
4. CDN ์๋ฒ๋ ํ์ผ์ ์บ์ํ๊ณ ์ฌ์ฉ์ A์๊ฒ ๋ฐํํ๋ค. ์ด๋ฏธ์ง๋ TTL ๋ช ์๋ ์๊ฐ์ด ๋๋ ๋๊น์ง ์บ์๋๋ค.
5. ์ฌ์ฉ์B๋ ๊ฐ์ ์ด๋ฏธ์ง ์์ฒญ์ CDN์ ์ ์กํ๋ค.
6. ๋ง๋ฃ๋์ง ์์ ์ด๋ฏธ์ง ์์ฒญ์ ์บ์๋ฅผ ํตํด ์ฒ๋ฆฌ๋๋ค.

1. ์ ์ ์ฝํ ์ธ (JS, CSS, ์ด๋ฏธ์ง ๋ฑ) ๋ ๋ ์ด์ ์น ์๋ฒ๋ฅผ ํตํด ์๋น์คํ์ง ์์ผ๋ฉฐ, CDN์ ํตํด ๋ ๋์ ์ฑ๋ฅ์ ๋ณด์ฅํ๋ค.
2. ์บ์๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ถํ๋ฅผ ์ค์ฌ์ค๋ค.
๋ฌด์ํ(Stateless) ์น ๊ณ์ธต
์น ๊ณ์ธต์ ์ํ์ ์ผ๋ก ํ์ฅํ๋ ๋ฐฉ๋ฒ์ด๋ค. ์ํ ์ ๋ณด(์ฌ์ฉ์ ์ธ์ ๋ฐ์ดํฐ์ ๋์ผ)๋ฅผ ์น ๊ณ์ธต์์ ์ ๊ฑฐํด์ผ ํ๋ค. ๋ฐ๋์งํ ์ ๋ต์ ์ํ์ ๋ณด๋ฅผ ๊ด๊ณํ ๋ฐ์ดํฐ ๋ฒ ์ด์ค๋ NoSQL๊ฐ์ ์ง์์ฑ ์ ์ฅ์์ ๋ณด๊ดํ๊ณ , ํ์ํ ๋ ๊ฐ์ ธ์ค๋ ๊ฒ์ด๋ค.
์ด๋ ๊ฒ ๊ตฌ์ฑ๋ ์น ๊ณ์ธต์ด ๋ฌด์ํ ์น ๊ณ์ธต์ด๋ค.
์ํ ์ ๋ณด ์์กด์ ์ธ ์ํคํ ์ฒ
์ํ ์ ๋ณด๋ฅผ ๋ณด๊ดํ๋ ์๋ฒ๋, ํด๋ผ์ด์ธํธ์ ์ํ๋ฅผ ์ ์งํด์ ์์ฒญ๋ค ์ฌ์ด์ ๊ณต์ ๋๊ฒ ํ๋ค. ๋ฌด์ํ ์๋ฒ์๋ ์ด๋ฐ ์ฅ์น๊ฐ ์๋ค.

๊ฐ์ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ํญ์ ๊ฐ์ ์๋ฒ๋ก ์ ์ก ๋์ด์ผ ํ๋ค๋๊ฒ, ์ํ ์ ๋ณด๋ฅผ ๋ณด๊ดํ๋ ์๋ฒ์ด๋ค.
๋ก๋๋ฐธ๋ฐ์๊ฐ ์ด๋ฅผ ์ํด์, ๊ณ ์ ์ธ์ (Sticky sesion) ๊ธฐ๋ฅ์ ์ ๊ณตํ๋๋ฐ[10], ์ด๋ ๋ก๋๋ฐธ๋ฐ์์ ๋ถํ๊ฐ ๊ฐํด์ง๋ค.
๋ํ, ๋ก๋๋ฐธ๋ฌ๋ ๋ท๋จ์ ์๋ฒ๋ฅผ ์ถ๊ฐํ๊ฑฐ๋, ์ ๊ฑฐํ๊ธฐ๋ ์ด๋ ค์์ง๋ค.
๋ฌด์ํ ์ํคํ ์ฒ

์ด ๊ตฌ์กฐ์์ ์ฌ์ฉ์์ HTTP์์ฒญ์ ์ด๋ค ์น์๋ฒ๋ก๋ ์ ๋ฌ์ด ๊ฐ๋ฅํ๋ค. ์น ์๋ฒ๋ ์ํ ์ ๋ณด๊ฐ ํ์ํ๋ฉด, ๊ณต์ ์ ์ฅ์(Shared storage)๋ก ๋ถํฐ db๋ฅผ ๊ฐ์ ธ์จ๋ค.
์ด ๊ตฌ์กฐ๋, ๋จ์ํ๊ณ ์์ ์ ์ด๊ณ , ๊ท๋ชจ ํ์ฅ์ด ์ฝ๋ค.

์ธ์ ๋ฐ์ดํฐ๋ฅผ ์น ๊ณ์ธต์์ ๋ถ๋ฆฌํ๊ณ ์ง์์ฑ ๋ฐ์ดํฐ ๋ณด๊ด์์์ ์ฅํ๋๋ก ๋ง๋ ๋ค.
๊ณต์ ์ ์ฅ์๋ RDBMS์ผ์๋, Memcahed/Redis ์บ์ ์์คํ ์ผ์๋, NoSQL์ผ ์๋ ์๋ค.
์ฌ๊ธฐ์ NoSQL์ธ๋ฐ, ๊ท๋ชจ ํ์ฅ์ด ๊ฐํธํด์๋ค. 1์ ๊ท๋ชจ ํ์ฅ(Autoscaling)์ ํธ๋ํฝ ์์ ๋ฐ๋ผ์ ์น ์๋ฒ๋ฅผ ์๋ ์ถ๊ฐํ๊ฑฐ๋ ์ญ์ ํ๋ ๊ธฐ๋ฅ์ด๋ค. ์ํ ์ ๋ณด๊ฐ ์น ์๋ฒ๋ก๋ถํฐ ์ ๊ฑฐ๋๋ฉด, ํธ๋ํฝ ์์ ๋ฐ๋ผ ์น์๋ฒ๋ฅผ ๋ฃ๊ฑฐ๋ ๋นผ๊ธฐ๋งํ๋ฉด ์๋ ๊ท๋ชจ ํ์ฅ์ด ๋๋ค.
์น์ฌ์ดํธ๊ฐ ๋งค์ฐ ๋นจ๋ฆฌ ์ฑ์ฅํด์ ์ ์ธ๊ณ ์ฌ์ฉ์๊ฐ ์ฐ๋ฉด ๊ฐ์ฉ์ฑ์ ๋์ด๊ณ , ์ ์ธ๊ณ ์ด๋์๋ ์พ์ ํ๋๋ก ์ฌ๋ฌ ๋ฐ์ดํฐ ์ผํฐ๋ฅผ ์ง์ํ๋๊ฒ ํ์์ ์ด๋ค.
๋ฐ์ดํฐ ์ผํฐ
๋ ๊ฐ์ ๋ฐ์ดํฐ ์ผํฐ๋ฅผ ์ด์ฉํ๋ ์ฌ๋ก๋ค. ์ฅ์ ๊ฐ ์์ผ๋ฉด, ๊ฐ๊น์ด ๋ฐ์ดํฐ ์ผํฐ๋ก ์ฌ์ฉ์๋ ์๋ด๋๋ค(geo-routing).
geoDNS๋ ์ฌ์ฉ์ x% ๋ US, (100-x)%๋ US-West ์ผํฐ๋ก ์๋ด๋๋ค๊ณ ๊ฐ์ ํ๋ค.


๋ค์ค ๋ฐ์ดํฐ ์ผํฐ ์ํคํ ์ฒ
์ผํฐ์ค ํ๋๊ฐ ์ฌ๊ฐํ ์ฅ์ ๊ฐ ๋ฐ์๋๋ฉด ๋ชจ๋ ํธ๋ํฝ์ ์ฅ์ ๊ฐ ์๋ ๋ฐ์ดํฐ ์ผํฐ๋ก ์ ์ก๋๋ค.
1. ํธ๋ํฝ ์ฐํ : ์ฌ๋ฐ๋ฅธ ์ผํฐ๋ก ํธ๋ํฝ์ ๋ณด๋ด๋ ํจ๊ณผ์ ์ธ ์ ๋ต์ ์ฐพ๋๋ค. GeoDNS๋ User์ ๊ฐ์ฅ ๊ฐ๊น์ด ์ผํฐ๋ก ํธ๋ํฝ์ ๋ณด๋ผ ์ ์๊ฒ ํ๋ค.
2. ๋ฐ์ดํฐ ๋๊ธฐํ : ์ผํฐ๋ง๋ค ๋ณ๋ db๋ฅผ ์ฌ์ฉ ์ค์ด๋ฉด, ์ฅ์ ๊ฐ ๋ณต๊ตฌ๋์ด ํธ๋ํฝ์ด ์์๋ ๋ค๋ฅธ db๋ก ์ฐํ ํ๋ค ํด๋, ํด๋น ์ผํฐ์ ํ์ํ db๊ฐ ์์ ์ ์๋ค. ์ด๋ฅผ ํด๊ฒฐํ๋ ์ ๋ต์ด, ์ฌ๋ฌ ์ผํฐ์ ๊ฑธ์ณ ๋ค์คํ ํ๋ ๊ฒ์ด๋ค. ๋ทํ๋ฆญ์ค[11]
3. ํ ์คํธ์ ๋ฐฐํฌ : ์น/app ์ ์ฌ๋ฌ ์์น์์ ํ ์คํธ ํด๋ณด๋ ๊ฒ๋ ์ค์ํ๋ค. ์๋ํ๋ ๋ฐฐํฌ ๋๊ตฌ๋๋ชจ๋ ๋ฐ์ดํฐ ์ผํฐ์ ๋์ผํ ์๋น์ค๊ฐ ์ค์น๋๋๋ก ํ๋๋ฐ ์ค์ํ ์ญํ ์ ํ๋ค.
์์คํ ์ด ๋ ํฐ ๊ท๋ชจ๋ก ํ์ฅ๋๋ ค๋ฉด, ์ปดํฌ๋ํธ๋ฅผ ๋ถ๋ฆฌํด์, ๋ ๋ฆฝ์ ํ์ฅ์ด ๊ฐ๋ฅํ ์ํ๋ก ๋ง๋๋ ๊ฒ์ด๋ค.
๋ฉ์์ง ํ(message queue)๋ ์ค์ ๋ง์ ๋ถ์ฐ ์์คํ ์ด ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์, ์ฑ์ฉํ๋ ํต์ฌ ์ ๋ต ์ค ํ๋๋ค.
๋ฉ์ธ์ง ํ
๋ฉ์ธ์ง ํ(๋ฌด์์ค, durability)๋ฅผ ๋ณด์ฅํ๋ค. ๋น๋๊ธฐ ํต์ ์ ์ง์ํ๋ ๊ตฌ์ฑ์ด๋ค. ์ํคํ ์ฒ๋ ๊ฐ๋จํ๋ค.

์์ฐ์/๋ฐํ์(pd/publisher) ์ ๋ ฅ์๋น์ค๊ฐ ๋ฉ์ธ์ง๋ฅผ ๋ง๋ค์ด์ ํ์ ๋ฐํํ๋ค. ํ์๋ ๋ณดํต ๊ตฌ๋ /์๋น์(consumer/subscriber)๋ผ ๋ถ๋ฆฌ๋ ์๋ฒ๊ฐ ์ฐ๊ฒฐ๋๋ฉด์, ๋ฉ์ธ์ง๋ฅผ ๋ฐ์์ ๊ทธ์ ๋ง๋ ๋์์ ์ํํ๋ค.
์ด๋ ๊ท๋ชจ ํ์ฅ์ฑ์ด ๋ณด์ฅ๋์ด์ผํ๊ณ , ์์ ์ ์ธ app์ ๊ตฌ์ฑํ๊ธฐ์ ์ข๋ค.
์์ฐ์๋ ์๋น์ ํ๋ก์ธ์ค๊ฐ ๋ค์ด๋์ด๋ ๋ฉ์ธ์ง๋ฅผ ๋ฐํ ํ ์์๊ณ , ์๋น์๋ ์์ฐ์๊ฐ ๊ฐ์ฉ์ํ๊ฐ ์๋์ฌ๋ ๋ฉ์ธ์ง๋ฅผ ์์ ํ ์ ์๋ค. ์ด๋ฏธ์ง์ ํฌ๋กํ, ์คํ๋, ๋ธ๋ฌ๋ง ๋ฑ์ ์ง์ํ๋ ์ฌ์ง ๋ณด์ app์ ๋ง๋ ๋ค๊ณ ์๋ฅผ ๋ค์.
๋ณด์ ์ ์ค๋ ๊ฑธ๋ฆด ์ ์๋ ํ๋ก์ธ์ค์ด๋ฏ๋ก, ๋น๋๊ธฐ์ ์ ์ฒ๋ฆฌํ๋ฉด ํธํ๋ค.
์ฌ์ง ๋ณด์ ์์ (job)์ ๋ฉ์ธ์ง ํ์ ๋ฃ๋๋ค. ์์ ํ๋ก์ธ์ค๋ค(worker)์ ์ด ์์ ์ ๋ฉ์ธ์ง ํ์์ ๊บผ๋ด์ ๋น๋๊ธฐ์ ์ผ๋ก ์๋ฃํ๋ค.
์์ฐ์, ์๋น์ ์๋น์ค์ ๊ท๋ชจ๋ ๊ฐ๊ธฐ ๋ ๋ฆฝ์ ์ผ๋ก ํ์ฅ ๋ ์ ์๋ค.
ํ์ ํฌ๊ธฐ๊ฐ ๋ ์ปค์ง๋ฉด ๋ ๋ง์ ์์ ํ๋ก์ธ์ค๋ฅผ ์ถ๊ฐํด์ผ ์ฒ๋ฆฌ ์๊ฐ์ ์ค์ผ ์ ์๋ค. ํ์ง๋ง ํ๊ฐ ๊ฑฐ์ ํญ์ ๋น์ด์๋ ์ํ๋ผ๋ฉด ,์์ ํ๋ก์ธ์ค ์๋ ์ค์ผ ์ ์์ ๊ฒ์ด๋ค.
๋ก๊ทธ, ๋ฉํธ๋ฆญ ๊ทธ๋ฆฌ๊ณ ์๋ํ
์ฌ์ ๊ท๋ชจ๊ฐ ์ปค์ง๊ณ ๋๋ฉด, ํ์์ ์ผ๋ก ๋ก๊ทธ(log), ๋ฉํธ๋ฆญ(metric), ์๋ํ(automation) ๊ฐ์๊ฑธ ํ์์ ์ผ๋ก ํฌ์ํด์ผํ๋ค.
1. ๋ก๊ทธ : ์๋ฌ ๋ก๊ทธ๋ฅผ ๋ชจ๋ํฐ๋ง ํ๋ค. ์์คํ ์ค๋ฅ์ ๋ฌธ์ ๋ฅผ ์ฝ๊ฒ ์ฐพ์๋ด๊ฒ ํ๊ธฐ ๋๋ฌธ์ด๋ค. ์๋ฒ ๋จ์๋ก ๋ชจ๋ํฐ๋ง ํ ์๋ ์์ง๋ง, ๋ก๊ทธ๋ฅผ ๋จ์ผ ์๋น์ค๋ก ๋ชจ์์ฃผ๋ ๋๊ตฌ๋ฅผ ํ์ฉํ๋ฉด ๋ ํธ๋ฆฌํ๊ฒ ๊ฒ์ํ๊ณ ์กฐํํ ์ ์๋ค.
2. ๋ฉํธ๋ฆญ : ๋ฉํธ๋ฆญ์ ์ ์์งํ๋ฉด ์ฌ์ ํํฉ์ ๊ดํ ์ ์ฉํ ์ ๋ณด๋ฅผ ์ป์ ์ ์๊ณ , ์์คํ ์ ํ์ฌ ์ํ๋ฅผ ์ฝ๊ฒ ํ์ ํ ์๋ ์๋ค.
- ํธ์คํธ ๋จ์ ๋ฉํธ๋ฆญ : CPU, ๋ฉ๋ชจ๋ฆฌ, ๋์คํฌ I/O ๋ฉํธ๋ฆญ ์ฌ๊ธฐ ํด๋น
- ์ข ํฉ(Aggregated) ๋ฉํธ๋ฆญ : db ๊ณ์ธต์ ์ฑ๋ฅ, ์บ์ ๊ณ์ธต์ ์ฑ๋ฅ
- ํต์ฌ ๋น์ฆ๋์ค ๋ฉํธ๋ฆญ : ์ผ๋ณ ๋ฅ๋ ์ฌ์ฉ์(daily active user), ์์ต(revenue), ์ฌ๋ฐฉ๋ฌธ(retention)
3. ์๋ํ: ์์คํ ๋ณต์ก์ฑ์ด ์ฌ๋ผ๊ฐ๋ฉด ์์ฐ์ฑ์ ๋์ด๊ธฐ ์ํด์ ์๋ํ ๋๊ตฌ๋ฅผ ํ์ฉํด์ผํ๋ค. ์ง์์ ํตํฉ ๋๊ตฌ๋ฅผ ํ์ฉํ๋ฉด, ๊ฐ๋ฐ์๊ฐ ๋ง๋๋ ์ฝ๋๊ฐ ๊ฒ์ฆ ์ ์ฐจ๋ฅผ ์๋์ผ๋ก ๊ฑฐ์น๋๋ก ํ ์ ์์ด์, ๋ฌธ์ ๋ฅผ ์ฝ๊ฒ ๊ฐ์งํ ์ ์๋ค.
๋น๋, ํ ์คํธ, ๋ฐฐํฌ ๋ฑ์ ์ ์ฐจ๋ฅผ ์๋ํํ๋ฉด ๊ฐ๋ฐ ์์ฐ์ฑ์ ํฌ๊ฒ ํฅ์์ํจ๋ค.
๋ฉ์ธ์ง ํ, ๋ก๊ทธ, ๋ฉํธ๋ฆญ, ์๋ํ ๋ฑ์ ๋ฐ์ํ์ฌ ์์ ํ ์ค๊ณ์

1. ๋ฉ์ธ์ง ํ๋ ๊ฐ ์ปดํฌ๋ํธ๊ฐ ๋ ๋์จํ ๊ฒฐํฉ ๋ ์ ์๊ฒํ๋ฉฐ, ๊ฒฐํจ์ ๋ํ ๋ด์ฑ์ ๋์ธ๋ค
2. ๋ก๊ทธ, ๋ชจ๋ํฐ๋ง, ๋ฉํธ๋ฆญ, ์๋ํ ๋ฑ ์ง์์ฅ์น๋ฅผ ์ถ๊ฐ
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ท๋ชจ ํ์ฅ
์์ง์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ท๋ชจ ํ์ฅ
์ค์ผ์ผ ์ ์ผ๋ก ๋ถ๋ฅด๊ธฐ๋ ํ๋ ์์ง์ ๊ท๋ชจํ์ฅ์, ๊ธฐ์กด ์๋ฒ์ ๋ ๋ง์, ๊ณ ์ฑ๋ฅ ์์(cpu, ram, disc ๋ฑ)์ ์ง์ํ๋ ๊ฒ์ด๋ค.
AWS ๋ RDS(Relational Database Service)๋ 24TB RAM ์๋ฒ๋ ์ ๊ณตํ๋ค. ์ด์ ๋ ๊ณ ์ฑ๋ฅ DB์๋ฒ๋ ์์ฒญ๋ ์์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๊ดํ๊ณ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ค. Stackoverflow.com์ 13๋ ๋์ ์ฒ๋ง๋ช ์ฌ์ฉ์๋ฅผ ์ ๋ถ ํ๋์ ๋ง์คํฐ db๋ฒ ์ด์ค๋ก ์ฒ๋ฆฌํ๋ค.
์์ง์ db ์ ์ฌ๊ฐํ ์ฝ์ 1. ์๋ฒ ํ๋์จ์ด์ ํ๊ณ. cpu, ram ๋ฑ์ ๋ฌดํ ์ฆ์ค์ ์๋๋ค.
2. SPOF(Single Point of Failure) ์ ์ํ์ฑ 3. ๋น์ฉ์ด ๋ง์ด๋ ๋ค. ๊ณ ์ฑ๋ฅ ์๋ฒ๋ ๋น์ฐ ๋น์ธ๋ค.
์ํ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ท๋ชจ ํ์ฅ
db ์ํ ํ์ฅ์ ์ค๋ฉ(sharding)์ผ๋ก ๋ถ๋ฅธ๋ค. ๋ ๋ง์ ์๋ฒ๋ฅผ ์ถ๊ฐํด์ ์ฑ๋ฅ์ ํฅ์ ์ํจ๋ค.

์ค๋ฉ์ ๋๊ท๋ชจ db๋ฅผ ์ค๋(shard)๋ผ ๋ถ๋ฅด๋ ์์ ๋จ์๋ค๋ก ๋ถํ ํ๋ ๊ธฐ์ ์ด๋ค.
๋ชจ๋ ์ค๋๋ ๊ฐ์ ์คํค๋ง๋ฅผ ์ฐ์ง๋ง ์ค๋์ ๋ณด๊ด๋๋ ๋ฐ์ดํฐ ์ฌ์ด์๋ ์ค๋ณต์ด ์๋ค.
์์๋ก user_id %4 ๋ฅผ ํด์ ํจ์๋ก, ๋ฐ์ดํฐ๊ฐ ๋ณด๊ด๋๋ ์ค๋๋ฅผ ์ ํ๋ค. ๊ฒฐ๊ณผ0์ด๋ฉด 0๋ฒ ์ค๋์, 1์ด๋ฉด 1๋ฒ ์ค๋์๋ณด๊ด ํ๋ ๊ฒ์ด๋ค.
user_id ๊ฐ์๊ฑธ ์ค๋ฉ ํค(sharding key)๋ผ๊ณ ํ๋ค. ์ค๋ฉ ํค๋ partition key๋ผ๊ณ ๋ ๋ถ๋ฅธ๋ค. ๋ฐ์ดํฐ๊ฐ ์ด๋ป๊ฒ ๋ถ์ฐ๋ ์ง ์ ํ๋ ํ๋์ด์์ ์นผ๋ผ์ผ๋ก ๊ตฌ์ฑํ๋ค.


์ค๋ฉ์ ์ ์ฉํ ์ํคํ ์ฒ.
db ๋ถํ๋ฅผ ์ค์ด๊ธฐ ์ํด์, ๊ตณ์ด RDBMS ๊ฐ ํ์์๋ ๊ธฐ๋ฅ์ ๋ชจ๋ NoSQL๋ก ์ด์ ํ๋ค. [14]

์์คํ ๊ท๋ชจ์ ํ์ฅ์ ์ง์๊ณผ ๋ฐ๋ณต์ด๋ค. ์ด๋ฒ ์ฅ์์ ๋ค๋ฃฌ ๋ด์ฉ์ ๊ณ์ ๋ฐ๋ณตํ๋ฉด, ์ํ๋ ๊ท๋ชจ์ ์์คํ ์ ๋ฌ์ฑํ๊ฒ๋๋ค.
์ด๋ฒ ์ฅ์์ ๋งบ์ผ๋ฉฐ, ์์คํ ๊ท๋ชจ ํ์ฅ์ ์ํด ์ดํด๋ณธ ๊ธฐ๋ฒ์ ๋ค์๊ณผ ๊ฐ๋ค.
1) ์น ๊ณ์ธต์ ๋ฌด์ํ ๊ณ์ธต์ผ๋ก
2) ๋ชจ๋ ๊ณ์ธต์ ๋ค์คํ ๋์
3) ๊ฐ๋ฅํ ๋ง์ ๋ฐ์ดํฐ๋ฅผ ์ ์ ํ๊ฒ ์บ์ํ ๊ฒ
4) ์ฌ๋ฌ ๋ฐ์ดํฐ ์ผํฐ๋ฅผ ์ง์ํ ๊ฒ
5) ์ ์ ์ฝํ ์ธ ๋ CDN์ ํตํด ์๋น์ค ํ ๊ฒ
6) ๋ฐ์ดํฐ ๊ณ์ธต์ ์ค๋ฉ์ผ๋ก ๊ท๋ชจ๋ฅผ ์ํ ํ์ฅํ ๊ฒ
7) ๊ฐ ๊ณ์ธต์ ๋ ๋ฆฝ์ ์๋น์ค๋ก ๋ถํ ํ ๊ฒ
8) ์ง์ ๋ชจ๋ํฐ๋ง, ๋ก๊ทธ, ์๋ํ, ๋ฉํธ๋ฆญ ์ ํ์ฉํ ๊ฒ
์ฐธ๊ณ ๋ฌธํ
[1] Hypertext Transfer Protocol: https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol
[2] Should you go Beyond Relational Databases?: https://blog.teamtreehouse.com/should-you-go-beyond-relational-databases
[3] Replication: https://en.wikipedia.org/wiki/Replication_(computing)
[4] Multi-master replication: https://en.wikipedia.org/wiki/Multi-master_replication
[5] NDB Cluster Replication: Multi-Master and Circular Replication: https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-replication-multi-master.html
[6] Caching Strategies and How to Choose the Right One: https://codeahoy.com/2017/08/11/caching-strategies-and-how-to-choose-the-right-one/
[7] R. Nishtala, “Facebook, Scaling Memcache at,” 10th USENIX Symposium on Networked Systems Design and Implementation (NSDI ’13).
[8] Single point of failure: https://en.wikipedia.org/wiki/Single_point_of_failure
[9] Amazon CloudFront Dynamic Content Delivery: https://aws.amazon.com/cloudfront/dynamic-content/
[10] Configure Sticky Sessions for Your Classic Load Balancer: https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-sticky-sessions.html
[11] Active-Active for Multi-Regional Resiliency: https://netflixtechblog.com/active-active-for-multi-regional-resiliency-c47719f6685b
[12] Amazon EC2 High Memory Instances: https://aws.amazon.com/ec2/instance-types/high-memory/
[13] What it takes to run Stack Overflow: http://nickcraver.com/blog/2013/11/22/what-it-takes-to-run-stack-overflow
[14] What The Heck Are You Actually Using NoSQL For: http://highscalability.com/blog/2010/12/6/what-the-heck-are-you-actually-using-nosql-for.html
'๐ฉโ๐ปDeveloper ๐ก > ๐พBack-end๐๏ธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| ๐ย ์์คํ ย ๋์์ธย &ย AIย ํ์ดํ๋ผ์ธย ํ์ตย ์ง๋ํ (0) | 2026.06.20 |
|---|---|
| 2์ฅ ๊ฐ๋ต์ ์ธ ๊ท๋ชจ ์ถ์ (0) | 2026.06.19 |
| Spring WebMVC Process ๋ก์ง๋ + React/Vue (0) | 2026.03.23 |
| ์ฃผ๋ฐฉ์ฅ ํฐ์บฃ๊ณผ ์๋ฐ ๋ ์ํผ ์๋ธ๋ฆฟ: ์น ํต์ ํ ํ ์ ๋ฆฌ (1) | 2026.03.12 |
| Hello, jsp! ์ ๋ฌธ] ํฐ์บฃ(Tomcat) ์ค์น์ ํ๋ก์ ํธ ๊ตฌ์กฐ ์๋ฒฝ ์ดํดํ๊ธฐ (0) | 2026.03.12 |