์ฌ์ค ๋ ๊ฐ์ ์ทจ์ค์ ์ ์ฅ์์๋ ๋๊ท๋ชจ ์์คํ ์ ์ง์ ๊ฒฝํํด๋ณด๋ ๊ฒ ์ฝ์ง ์๋ค. ํ์ง๋ง ๋๋ถ๋ถ ๊ธฐ์ ์์ ๋๊ท๋ชจ ์์คํ ์ ๋ํ ์ง์์ ์๊ตฌํ๋ ๊ฒ ๊ฐ์์, ์กฐ๊ธ ์ ๋ฆฌํด๋๋ ค๊ณ ํ๋ค. ์์ ์ ์ฝ์์ง๋ง ๊ธฐ์ต์ด ๊ฐ๋ฌผ๊ฐ๋ฌผํด์ ๋ค์ ๊ธฐ๋กํ๋ ค๊ณ ํ๋ค.
์ฐธ๊ณ ๋์ ๐โ ๊ฐ์ ๋ฉด์ ์ฌ๋ก๋ก ๋ฐฐ์ฐ๋ ๋๊ท๋ชจ ์์คํ ์ค๊ณ ๊ธฐ์ด
๊ด๊ณํ DB๋ RDBMS์ด๋ผ๊ณ ๋ ๋ถ๋ฅด๋๋ฐ, ๊ฐ์ฅ ์ ๋ช ํ ๊ฑธ๋ก๋ MySQL, ์ค๋ผํด, PostgreSQL์ด ์กด์ฌํ๋ค. ๊ด๊ณํ DB๋ ์๋ฃ๋ฅผ ํ ์ด๋ธ๊ณผ ์ด, ์นผ๋ผ์ผ๋ก ํํํ๋ค. SQL์ ์ฌ์ฉํ๋ฉด ์ฌ๋ฌ ํ ์ด๋ธ์ ์กด์ฌํ๋ ๋ฐ์ดํฐ๋ฅผ ๊ทธ ๊ด๊ณ์ ๋ฐ๋ผ ์กฐ์ธ(join)ํ์ฌ ํฉ์น๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค.
๋น ๊ด๊ณํDB๋ NOSQL์ด๋ผ๊ณ ๋ ๋ถ๋ฅด๋๋ฐ, ๋ํ์ ์ผ๋ก CouchDB, Neo4j, Cassandra, HBase, Amazon DynamoDB ๋ฑ์ด ์กด์ฌํ๋ค. ๋ํ ๋ค ๋ถ๋ฅ๋ก ๋ถ๋ฆฌํ ์ ์๋๋ฐ, ํค-๊ฐ(key-value) ์ ์ฅ์, ๊ทธ๋ํ ์ ์ฅ์(graph store), ์นผ๋ผ ์ ์ฅ์(column store), ๋ฌธ์ ์ ์ฅ์(document store) ๋ฑ์ด ์๋ค. ์ด๋ฐ ๋น ๊ด๊ณํDB๋ ์กฐ์ธ(join) ์ฐ์ฐ์ ์ง์ํ์ง ์๋๋ค.
๋๋ถ๋ถ์ ๊ฐ๋ฐ์๋ ๊ด๊ณํ DB๋ฅผ ๋ง์ด ์ฌ์ฉํ์ง๋ง ๊ตฌ์ถํ ์์คํ ์ ์ ํฉํ์ง ์์ผ๋ฉด ๋น ๊ด๊ณํDB๋ ๊ณ ๋ ค๋ฅผ ํด์ผํ๋ค. ์๋์ ๊ฐ์ ๊ฒฝ์ฐ๋ค.
1.์์ฃผ ๋ฎ์ ์๋ต ์ง์ฐ์๊ฐ(latency)์ด ์๊ตฌ๋จ
2.๋ค๋ฃจ๋ ๋ฐ์ดํฐ๊ฐ ๋น์ ํ(unstructured)์ด๋ผ ๊ด๊ณํ ๋ฐ์ดํฐ๊ฐ ์๋
3.๋ฐ์ดํฐ(json, yaml, xml ๋ฑ)๋ฅผ ์ง๋ ฌํํ๊ฑฐ๋(serialize) ์ญ์ง๋ ฌํ(deserialize)ํ ์ ์๊ธฐ๋ง ํ๋ฉด ๋จ
4. ์์ฃผ ๋ง์ ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ํ์๊ฐ ์์
์ ํ ๋ฐ์ดํฐ๋ ์์ ์ด๋ SQL ํ ์ด๋ธ์ฒ๋ผ ํ๊ณผ ์ด์ด ์ ํด์ ธ ์๋ ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ๋ฅผ ๋งํ๋ค. ๊ทธ๋์ ๊ฒ์์ด๋ ๋ถ์์ด ์ฝ๊ณ , ๊ด๊ณํ DB์ ์ ์ฅ๋๋ค.
๋ฐ๋๋ก ๋น์ ํ ๋ฐ์ดํฐ๋ ์ด๋ฏธ์ง, ๋์์์ฒ๋ผ ๊ณ ์ ๋ ๊ตฌ์กฐ๊ฐ ์๋ ๋ฐ์ดํฐ๋ก, ์คํค๋ง๊ฐ ์๊ธฐ ๋๋ฌธ์ NoSQL์ด๋ ํ์ผ ์์คํ ์ ์ ์ฅํ๋ฉฐ ๋ถ์์ด๋ ์ฒ๋ฆฌ๊ฐ ์๋์ ์ผ๋ก ๋ณต์กํ๋ค.
์๋ฒ์ ๊ณ ์ฌ์ ์์(CPU, RAM ๋ฑ)์ ์ถ๊ฐํ์ฌ ์ฑ๋ฅ์ ๊ฐ์ ํ๋ ๋ฐฉ๋ฒ
์๊ท๋ชจ ํธ๋ํฝ์๋ ์ ํฉํ์ง๋ง, ๋๊ท๋ชจ ์๋น์ค์๋ ํ๊ณ๊ฐ ์์
์ด๋ฌํ ๋จ์ ๋๋ฌธ์, ๋๊ท๋ชจ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ง์ํ๋ ๊ณณ์ ์ํ์ ๊ท๋ชจ ํ์ฅ๋ฒ์ด ์ ์ ํ๋ค.
๋ ๋ง์ ์๋ฒ๋ฅผ ์ถ๊ฐํ์ฌ ์ฑ๋ฅ์ ๊ฐ์ ํ๋ ๋ฐฉ๋ฒ
๋ถํ ๋ถ์ฐ ์งํฉ(load balancing set)์ ์ํ ์น ์๋ฒ๋ค์๊ฒ ํธ๋ํฝ์ ๊ณ ๋ฅด๊ฒ ๋ถ์ฐํ๋ ์ญํ ์ ํ๋ค.

๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ฌ์ฉ์๊ฐ ๊ณต๊ฐ IP ์ฃผ์(public IP address)๋ก ์ ์ํ๋ฉด,
์น ์๋ฒ๋ ํด๋ผ์ด์ธํธ์ ์ ์์ ์ง์ ์ฒ๋ฆฌํ์ง ์๋๋ค.
๋ ๋์ ๋ณด์์ ์ํด ์๋ฒ ๊ฐ ํต์ ์๋ ์ฌ์ค IP ์ฃผ์(private IP address)๋ฅผ ์ฌ์ฉํ๋ค.
๋ก๋๋ฐธ๋ฐ์๋ ์น ์๋ฒ์ ํต์ ํ ๋ ์ฌ์ค ์ฃผ์(private IP address)๋ฅผ ์ด์ฉํ๋ค.
๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ๋ถํ ๋ถ์ฐ ์งํฉ์ ์น ์๋ฒ๋ฅผ ์ถ๊ฐํ๋ฉด, ์ฅ์ ์๋๋ณต๊ตฌ ๋ฌธ์ (no failover)๊ฐ ํด์๋๊ณ ,
์น ๊ณ์ธต์ ๊ฐ์ฉ์ฑ(availability)์ด ํฅ์๋๋ค.
์๋๋ฆฌ์ค
์๋ฒ 1์ด ๋ค์ด๋๋ฉด ๋ชจ๋ ํธ๋ํฝ์ ์๋ฒ 2๋ก ์ ์ก๋๋ค. ๋ฐ๋ผ์ ์น ์ฌ์ดํธ ์ ์ฒด๊ฐ ๋ค์ด๋๋ ์ผ์ด ๋ฐฉ์ง๋๋ค. ๋ถํ๋ฅผ ๋๋๊ธฐ ์ํด ์๋ก์ด ์๋ฒ๋ฅผ ์ถ๊ฐ ๊ฐ๋ฅํ๋ค.
์น ์ฌ์ดํธ๋ก ์ ์ ๋๋ ํธ๋ํฝ์ด ๊ฐํ๋ฅด๊ฒ ์ฆ๊ฐํ๋ฉด ๋ ๋์ ์๋ฒ๋ก ํธ๋ํฝ์ ๊ฐ๋นํ ์ ์๋ ์์ ์ด ์ค๋๋ฐ, ๋ก๋๋ฐธ๋ฐ์๊ฐ ์กด์ฌํ๋ฏ๋ก ์ฐ์ํ๊ฒ ๋์ฒ๊ฐ ๊ฐ๋ฅํ๋ค. ๋ฐ๋ก ์น ์๋ฒ ๊ณ์ธต์ ๋ ๋ง์ ์๋ฒ๋ฅผ ์ถ๊ฐํ๊ธฐ๋ง ํ๋ฉด ๋๋ค. ๊ทธ๋ฌ๋ฉด ๋ก๋ ๋ฐธ๋ฌ์๊ฐ ์๋์ผ๋ก ํธ๋ํฝ์ ๋ถ์ฐํด์ค๋ค.
๋ง์ DBMS๋ ๋ค์คํ๋ฅผ ์ง์ํ๋ค! ๋ณดํต์ ์๋ฒ ์ฌ์ด์ ์ฃผ(master) - ๋ถ(slave)๊ด๊ณ๋ฅผ ์ค์ ํ๊ณ ๋ฐ์ดํฐ ์๋ณธ์ ์ฃผ ์๋ฒ์, ์ฌ๋ณธ์ ๋ถ ์๋ฒ์ ์ ์ฅํ๋ ๋ฐฉ์์ด๋ค. ์์ฆ์๋ master, slave๊ฐ ์ธ์ข ์ฐจ๋ณ(?), ์ด์จ๋ ์ฐจ๋ณ์ ๋๋ ์ฉ์ด๋ผ ๊ธ์งํ๋ค๊ณ ํ๋๋ฐ ์์ง๊น์ง๋ ๋ง์ด ์ฌ์ฉํ๋ ๊ฒ ๊ฐ๋ค.

์ฐ๊ธฐ ์ฐ์ฐ (write operation)์ ์ฃผ DB (master DB)์์๋ง ์ฒ๋ฆฌ๋๋ฉฐ,
์ฝ๊ธฐ ์ฐ์ฐ (read operation)์ ๋ถ DB (slave DB)๊ฐ ์ฃผ DB๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ๋ณต์ ๋ฐ์ ์ํํ๋ค.
DB๋ฅผ ๋ณ๊ฒฝํ๋ ๋ช ๋ น์ด(INSERT, DELETE, UPDATE ๋ฑ)๋ ๋ชจ๋ ์ฃผ DB๋ก ์ ๋ฌ๋๋ค.
๋๋ถ๋ถ์ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฝ๊ธฐ ์ฐ์ฐ(read operation)์ ๋น์ค์ด ์ฐ๊ธฐ ์ฐ์ฐ(write operation)๋ณด๋ค ํฌ๊ธฐ ๋๋ฌธ์, ๋ถ DB์ ์๊ฐ ๋ถ DB๋ณด๋ค ๋ง์ ๊ฒฝ์ฐ๊ฐ ์ผ๋ฐ์ ์ด๋ค.
Slave ์๋ฒ๊ฐ ํ ๋๋ฟ์ธ ๊ฒฝ์ฐ
ํด๋น slave ์๋ฒ๊ฐ ์๋ก์ด master ์๋ฒ์ ์ญํ ์ ์ํํ๊ฒ ๋๋ฉฐ, ๋ชจ๋ DB ์ฐ์ฐ์ ์ผ์์ ์ผ๋ก ์๋ก์ด master ์๋ฒ์์ ์ํ๋๋ค.
slave ์๋ฒ๊ฐ ์ฌ๋ฌ ๋์ธ ๊ฒฝ์ฐ, ์ฝ๊ธฐ ์ฐ์ฐ์ ๋๋จธ์ง slave ์๋ฒ๋ค๋ก ๋ถ์ฐ๋๋ฉฐ, ์๋ก์ด slave ์๋ฒ๊ฐ ์ฅ์ ์๋ฒ๋ฅผ ๋์ฒดํ๋ค.
์ด์ slave ์๋ฒ ๋ฐ์ดํฐ๊ฐ ์ต์ ์ด ์๋ ๊ฒฝ์ฐ
์๋ฒ ๋ค์ด ์ ๋๊ธฐํ๋์ง ์์ ์ํ๋ผ๋ฉด, ์๋ ๋ฐ์ดํฐ๋ ๋ณต๊ตฌ ์คํฌ๋ฆฝํธ(recovery script)๋ฅผ ๋๋ ค ์ถ๊ฐํด์ผ ํ๋ค.
๋ค์ค ๋ง์คํฐ(multi-masters), ์ํ ๋ค์คํ(circular replication)
์ด๋ฌํ ๋ฐฉ์์ ๋์
ํ๋ฉด ์ ์ํฉ์ ๋์ํ๋ ๋ฐ ๋์์ด ๋ ์ ์๋ค.

์บ์(cache)๋ฅผ ๋ถ์ด๊ณ ์ ์ ์ฝํ ์ธ ๋ฅผ ์ฝํ ์ธ ์ ์ก ๋คํธ์ํฌ(CDN)๋ก ์ฎ๊ธฐ๋ฉด ๊ฐ์ ์ด ๊ฐ๋ฅํ๋ค.
๊ฐ๋น์ผ ์ฐ์ฐ ๊ฒฐ๊ณผ or ์์ฃผ ์ฐธ์กฐ๋๋ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ ์์ ๋๊ณ , ๋ค์ด์ ์์ฒญ์ด ๋ณด๋ค ๋นจ๋ฆฌ ์ฒ๋ฆฌ๋ ์ ์๋๋ก ํ๋ ์ ์ฅ์
๋ฐ์ดํฐ๊ฐ ์ ์ ๋ณด๊ด๋๋ ๊ณณ์ผ๋ก DB๋ณด๋ค ํจ์ฌ ๋น ๋ฅด๋ค. ๋ณ๋์ ์บ์ ๊ณ์ธต์ ๋๋ฉด, ์ฑ๋ฅ์ด ๊ฐ์ ๋ ๋ฟ๋ง ์๋๋ผ DB์ ๋ถํ๋ ์ค์ผ ์ ์๊ณ , ์บ์ ๊ณ์ธต์ ๊ท๋ชจ๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ํ์ฅ ์ํค๋๊ฒ๋ ๊ฐ๋ฅํ๋ค.

์บ์๋ ์ธ์ ํ์ํ๊ฐ?
๋ฐ์ดํฐ ๊ฐฑ์ ์ด ์์ฃผ ์ผ์ด๋์ง ์์ง๋ง, ์กฐํ๊ฐ ๋น๋ฒํ๊ฒ ๋ฐ์ํ๋ ๊ฒฝ์ฐ ์บ์ ๊ณ์ธต์ ์ถ๊ฐํ๋ ๊ฒ์ด ์ข๋ค.
์ด๋ค ๋ฐ์ดํฐ๋ฅผ ์บ์์ ๋์ด์ผ ํ๋๊ฐ?
์บ์๋ ํ๋ฐ์ฑ ๋ฉ๋ชจ๋ฆฌ์ ๋ฐ์ดํฐ๋ฅผ ๋๋ ๊ฒ์ด๋ฏ๋ก, ์์์ ์ผ๋ก ๋ณด๊ดํด์ผ ํ๋ ๋ฐ์ดํฐ๋ ์บ์์ ๋๋ ๊ฒ์ ์ ํฉํ์ง ์๋ค.
์บ์ ๋ฐ์ดํฐ ๋ง๋ฃ(expire) ๊ธฐํ์?
์บ์์ ์ ์ฅ๋ ๋ฐ์ดํฐ๊ฐ ์ธ์ ๋ง๋ฃ๋ ์ง ์ ์ฑ
์ ์ ํด์ผ ํ๋ค.
๋ฐ์ดํฐ ์ ์ฅ์ ์๋ณธ๊ณผ์ ์ผ๊ด์ฑ ์ ์ง
DB ์๋ณธ๊ณผ ์บ์ ๋ด ๋ฐ์ดํฐ๊ฐ ์ต๋ํ ๋์ผํ๊ฒ ์ ์ง๋์ด์ผ ํ๋ค.
์ฅ์ ๋์ฒ
์บ์ ์๋ฒ๋ฅผ ๋จ์ผ๋ก ์ด์ํ๋ฉด ํด๋น ์๋ฒ๊ฐ SPOF(Single Point of Failure)๊ฐ ๋ ์ ์๋ค.
์บ์ ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ
์บ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์์ผ๋ฉด ๋ฐ์ดํฐ๊ฐ ์์ฃผ ์บ์์์ ๋ฐ๋ ค ์บ์ ์ฑ๋ฅ์ด ๋จ์ด์ง ์ ์๋ค.
๋ฐ์ดํฐ ๋ฐฉ์ถ ์ ์ฑ
(Eviction Policy)
์บ์๊ฐ ๊ฝ ์ฐผ์ ๋ ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ์ ๊ฑฐํ ์ง ๊ฒฐ์ ํ๋ ์ ์ฑ
์ด ํ์ํ๋ค.

์ด๋ค ์ฌ์ฉ์๊ฐ ์ฌ์ดํธ์ ๋ฐฉ๋ฌธํ๋ฉด, ๊ทธ ์ฌ์ฉ์์๊ฒ ๊ฐ์ฅ ๊ฐ๊น์ด CDN ์๋ฒ๊ฐ ์ ์ ์ฝํ ์ธ ๋ฅผ ์ ๋ฌํ๊ฒ ๋๋ค. ์ฌ์ฉ์๊ฐ CDN์๋ฒ๋ก๋ถํฐ ๋ฉ๋ฉด ๋ฉ์๋ก ์น ์ฌ์ดํธ๋ ์ฒ์ฒํ ๋ก๋๋๋ค. ์์ ์๋ ๊ทธ๋ฆผ์ ๋ณด๋ฉด CDN์ด ์ฌ์ดํธ ๋ก๋ฉ ์๊ฐ์ ์ด๋ป๊ฒ ๊ฐ์ ํ๋์ง ํ์ธ์ด ๊ฐ๋ฅํ๋ค.

์ฌ์ฉ์ ์์ฒญ
image.png)์ ์ ๊ทผํ๋ค.CDN ์๋ฒ ํ์ธ
์๋ณธ ์๋ฒ ์๋ต
CDN ์บ์ ๋ฐ ์ฌ์ฉ์ ๋ฐํ
๋ค๋ฅธ ์ฌ์ฉ์ ์์ฒญ
์บ์ ํ์ฉ
๋น์ฉ
CDN์ ๋ณดํต ์ 3์ ์ฌ์
์(third-party providers)๊ฐ ์ด์ํ๋ฉฐ, CDN์ผ๋ก ๋ค์ด๊ฐ๊ณ ๋๊ฐ๋ ๋ฐ์ดํฐ ์ ์ก๋์ ๋ฐ๋ผ ๋น์ฉ์ด ์ฒญ๊ตฌ๋จ.
์์ฃผ ์ฌ์ฉํ์ง ์๋ ์ฝํ
์ธ ๋ฅผ ์บ์ฑํ์ง ์๋ ๊ฒ์ ์ด๋์ด ํฌ์ง ์์ผ๋ฏ๋ก, CDN์์ ๋นผ๋ ๊ฒ์ ๊ณ ๋ คํด์ผ ํจ.
์ ์ ํ ๋ง๋ฃ ์ํ ์ค์
์์์ฑ์ด ์ค์ํ(time-sensitive) ์ฝํ
์ธ ์ ๊ฒฝ์ฐ ๋ง๋ฃ ์์ ์ ์ ์ ํด์ผ ํจ.
CDN ์ฅ์ ์ ๋ํ ๋์ฒ ๋ฐฉ์
CDN ์์ฒด๊ฐ ์ฃฝ์์ ๊ฒฝ์ฐ ์น์ฌ์ดํธ/์ ํ๋ฆฌ์ผ์ด์
์ด ์ด๋ป๊ฒ ๋์ํด์ผ ํ๋์ง ๊ณ ๋ ค ํ์.
์ฝํ
์ธ ๋ฌดํจํ(invalidation)
์์ง ๋ง๋ฃ๋์ง ์์ ์ฝํ
์ธ ๋ผ ํ๋๋ผ๋ ์๋ ๋ฐฉ๋ฒ์ผ๋ก CDN์์ ์ ๊ฑฐ ๊ฐ๋ฅ:
์น ๊ณ์ธต์ ์ํ์ ์ผ๋ก ํ์ฅ(์ค์ผ์ผ ์์)ํ๋ ๋ฐฉ๋ฒ์ ๊ณ ๋ฏผํ ๋ ค๋ฉด, ์ฐ์ ์ํ ์ ๋ณด(์ฌ์ฉ์ ์ธ์ ๋ฐ์ดํฐ ๋ฑ)๋ฅผ ์น ๊ณ์ธต์์ ์ ๊ฑฐํด์ผํ๋ค.

๊ฐ ์๋ฒ๊ฐ ์๋ก ๋ค๋ฅธ ํด๋ผ์ด์ธํธ์ ์ํ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ ๊ฒฝ์ฐ, ์ํ ์์กด์ ์ธ ์ํคํ ์ฒ๋ ์ด๋ ๊ฒ ์ค๋ช ํ ์ ์๋ค.
์ฌ์ฉ์ A, B, C๋ ๊ฐ๊ฐ ์๋ฒ 1, 2, 3์ ์ธ์ ๋ฐ์ดํฐ์ ์ํ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฏ๋ก, HTTP ์์ฒญ์ด ํด๋น ์๋ฒ๋ก ์ ๋ฌ๋์ด์ผ๋ง ์ธ์ฆ ์ ์ฐจ๊ฐ ์ ์์ ์ผ๋ก ์งํ๋๋ค.
๋ฌธ์ ๋ ๊ฐ์ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ด ํญ์ ๊ฐ์ ์๋ฒ๋ก๋ง ์ ๋ฌ๋์ด์ผ ํ๋ค๋ ์ ์ด๋ค.
์ด๋ฅผ ์ํด ๋๋ถ๋ถ์ ๋ก๋๋ฐธ๋ฐ์๋ ๊ณ ์ ์ธ์ (sticky session) ๊ธฐ๋ฅ์ ์ ๊ณตํ์ง๋ง, ๋ก๋๋ฐธ๋ฐ์์ ๋ถ๋ด์ ์ค ์ ์๋ค.

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

์ธ์ ๋ฐ์ดํฐ๋ฅผ ์น ๊ณ์ธต์์ ๋ถ๋ฆฌํ๊ณ , ์ง์์ฑ ๋ฐ์ดํฐ ๋ณด๊ด์์ ์ ์ฅํ๋๋ก ํ์๋ค. ์ด ๊ณต์ ์ ์ฅ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด NoSOL, ๋๋ Redis ๊ฐ์ ์บ์ ์์คํ ์ด๋ RDB์ผ ์๋ ์๋ค.
์๋ ๊ท๋ชจ ํ์ฅ(autoscaling)์ ํธ๋ํฝ ์์ ๋ฐ๋ผ ์น ์๋ฒ๋ฅผ ์๋์ผ๋ก ์ถ๊ฐํ๊ฑฐ๋ ์ญ์ ํ๋ ๊ธฐ๋ฅ์ ๋งํ๋ค.
์ํ ์ ๋ณด๊ฐ ์น ์๋ฒ๋ค ๋ก๋ถํฐ ์ ๊ฑฐ๋์์ผ๋ฏ๋ก, ํธ๋ํฝ ์์ ๋ฐ๋ผ ์น ์๋ฒ๋ฅผ ๋ฃ๊ฑฐ๋ ๋นผ๊ธฐ๋ง ํ๋ฉด ์๋์ผ๋ก ๊ท๋ชจ๋ฅผ ํ์ฅํ ์ ์๋ ์ฉ์ดํ ๊ตฌ์กฐ๋ฅผ ๋๊ฒ ๋๋ค. ๊ฐ์ฉ์ฑ์ ๋์ด๊ณ ์ ์ธ๊ณ ์ด๋์๋ ์พ์ ํ๊ฒ ์ฌ์ฉ ๊ฐ๋ฅํ๊ฒ ํ ๋ ค๋ฉด ์ฌ๋ฌ ๋ฐ์ดํฐ ์ผํฐ(data center)๋ฅผ ์ง์ํ๋๊ฒ์ด ํ์๋ค.
๋ฉ์์ง์ ๋ฌด์์ค(durability, ์ฆ ๋ฉ์์ง ํ์ ์ผ๋จ ๋ณด๊ด๋ ๋ฉ์์ง๋ ์๋น์๊ฐ ๊บผ๋ผ ๋๊น์ง ์์ ํ ๋ณด๊ด๋๋ค๋ ํน์ฑ)์ ๋ณด์ฅํ๋, ๋น๋๊ธฐ ํต์ ์ ์ง์ํ๋ ์ปดํฌ๋ํธ
๋ฉ์์ง์ ๋ฒํผ ์ญํ ์ ํ๋ฉฐ, ๋น๋๊ธฐ์ ์ผ๋ก ์ ์ก
์์ฐ์(producer, publisher): ์ ๋ ฅ ์๋น์ค๊ฐ ๋ฉ์์ง๋ฅผ ๋ง๋ค์ด ํ์ ๋ฐํ(publish)
์๋น์(consumer, subscriber): ํ์ ์ฐ๊ฒฐ๋์ด ๋ฉ์์ง๋ฅผ ๋ฐ์ ์ฒ๋ฆฌ

์์: ์ด๋ฏธ์ง ๋ณด์ ์ฑ
์ด๋ฏธ์ง ํฌ๋กญ, ์คํ๋, ๋ธ๋ฌ๋ง ๋ฑ์ ๊ธฐ๋ฅ ์ง์
๋ณด์ ์์ ์ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๋ ํ๋ก์ธ์ค โ ๋น๋๊ธฐ ์ฒ๋ฆฌ๊ฐ ํธ๋ฆฌ
๋์ ์์)
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ท๋ชจ๋ฅผ ํ์ฅํ๋ ๋ฐ์๋ ๋ ๊ฐ์ง ์ ๊ทผ๋ฒ์ด ์กด์ฌํ๋ค. ํ๋๋ ์์ง์ ๊ท๋ชจ ํ์ฅ , ๋ ๋ค๋ฅธ ํ๋๋ ์ํ์ ๊ท๋ชจ ํ์ฅ ์ด๋ค.
๋จ์

์์ ๊ทธ๋ฆผ์ user_id ๊ฐ์ ๋ฐ๋ผ ์ค๋์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ๋ ๊ธฐ์ค์ ์ ํ๋ค. ์๋ฅผ ๋ค๋ฉด, user_id %4๋ฅผ ํด์ ํจ์๋ก ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๊ฐ ๋ณด๊ด๋๋ ์ค๋๋ฅผ ์ ํ ์ ์๋ค. ๊ฒฐ๊ณผ๊ฐ 0์ด๋ผ๋ฉด 0๋ฒ ์ค๋์ ๋ฃ๋๋ค.
๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ๋ถ์ฐํ ์ง ๊ฒฐ์ ํ๋ ํ๋ ์ด์์ ์นผ๋ผ, ์ฆ ์ค๋ฉ ํค(sharding key, partition key)๋ฅผ ์ด๋ป๊ฒ ์ ํ๋๋๊ฐ ๋งค์ฐ ์ค์ํ๋ค.
์ค๋ฉ ํค๋ฅผ ํตํด ์ฌ๋ฐ๋ฅธ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ง์๋ฅผ ๋ณด๋ด ๋ฐ์ดํฐ ์กฐํ๋ ๋ณ๊ฒฝ์ ์ฒ๋ฆฌํ์ฌ ํจ์จ์ ๋์ผ ์ ์๋ค.
์ค๋ฉ ํค๋ฅผ ์ ํ ๋๋ ๋ฐ์ดํฐ๋ฅผ ๊ณ ๋ฅด๊ฒ ๋ถํ ํ ์ ์๋๋ก ํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ค์ํ๋ค.
๋ฐ์ดํฐ๊ฐ ๋๋ฌด ๋ง์ ํ๋์ ์ค๋๋ก๋ ๋ ์ด์ ๊ฐ๋นํ๊ธฐ ์ด๋ ค์ด ๊ฒฝ์ฐ, ์๋ก์ด ์ค๋๋ฅผ ์ถ๊ฐํด์ผ ํ๋ค.
๋๋ ์ค๋ ๊ฐ ๋ฐ์ดํฐ ๋ถํฌ๊ฐ ๊ท ๋ฑํ์ง ๋ชปํ์ฌ ์ค๋ ์์ง(shard exhaustion)์ด ๋ฐ์ํ ๋๋ ์ค๋ ํค๋ฅผ ๊ณ์ฐํ๋ ํจ์๋ฅผ ๋ณ๊ฒฝํ๊ณ ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฐฐ์นํด์ผ ํ๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ: ์์ ํด์(Consistent Hashing) ๊ธฐ๋ฒ์ ํ์ฉ
ํซ์คํ ํค(hotspot key) ๋ฌธ์ ๋ผ๊ณ ๋ ํ๋๋ฐ, ํน์ ์ค๋์ ์ง์๊ฐ ์ง์ค๋์ด ์๋ฒ์ ๊ณผ๋ถํ๊ฐ ๊ฑธ๋ฆฌ๋ ํ์์ด๋ค.
์: SNS ์ ํ๋ฆฌ์ผ์ด์
์์ ๋ง์ด ๊ฒ์๋๋ ๋จ์ด(Justin Bieber, Lady Gaga ๋ฑ)๋ฅผ ๊ฐ์ ์ค๋์ ์ ์ฅํ๋ฉด, ํด๋น ์ค๋๋ read ์ฐ์ฐ์ผ๋ก ์ธํด ๊ณผ๋ถํ๊ฐ ๋ฐ์ํ ์ ์๋ค.
ํ๋์ DB๋ฅผ ์ฌ๋ฌ ์ค๋๋ก ๋ถํ ํ ๊ฒฝ์ฐ, ์ฌ๋ฌ ์ค๋์ ๊ฑธ์น ๋ฐ์ดํฐ ์กฐ์ธ์ด ์ด๋ ค์์ง๋ค.
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด DB๋ฅผ ๋น์ ๊ทํํ์ฌ, ํ๋์ ํ ์ด๋ธ์์ ์ง์๊ฐ ์ํ๋ ์ ์๋๋ก ์ค๊ณํ๋ ๋ฐฉ๋ฒ์ด ์๋ค.
์ ๋ฒ๋ฌ์ ํ์ฟ ์ค์นด๋ฅผ ๋ค๋ ์ค๋ฉด์ ์ฐ์ ์ฌ์ง์ด๋ค. ์กฐ๊ธ์ ํ๋ค๊ธฐ๋ ํ์ง๋ง, ์ทจ์ค์ ํ๋ฉด์ ๋ฐ์๋ ์คํธ๋ ์ค๊ฐ ์กฐ๊ธ ๋ ์๊ฐ๊ธด ํ๋ค.
๋ค์ ์ฃผ๋ฉด ์๋น๊ตฐ์ผ๋ก 2๋ฐ 3์ผ ๋ค๋
์์ผ ํ๋ค.
์กฐ๊ธ ๊ท์ฐฎ๊ธฐ๋ ํ์ง๋ง, ๊ทธ๋๋ ๋ค์น์ง ๋ง๊ณ ๋ฌด์ฌํ ๋ค๋
์์ผ๋ฉด ์ข๊ฒ ๋ค.
