1์žฅ ์‚ฌ์šฉ์ž์ˆ˜์— ๋”ฐ๋ฅธ ๊ทœ๋ชจ ํ™•์žฅ์„ฑ

2026. 6. 18. 22:58ยท๐Ÿ‘ฉ‍๐Ÿ’ปDeveloper ๐Ÿ’ก/๐Ÿ’พBack-end๐Ÿ•Š๏ธ

 

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
'๐Ÿ‘ฉ‍๐Ÿ’ปDeveloper ๐Ÿ’ก/๐Ÿ’พBack-end๐Ÿ•Š๏ธ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • ๐Ÿ“š ์‹œ์Šคํ…œ ๋””์ž์ธ & AI ํŒŒ์ดํ”„๋ผ์ธ ํ•™์Šต ์ง„๋„ํ‘œ
  • 2์žฅ ๊ฐœ๋žต์ ์ธ ๊ทœ๋ชจ ์ถ”์ •
  • Spring WebMVC Process ๋กœ์ง๋„ + React/Vue
  • ์ฃผ๋ฐฉ์žฅ ํ†ฐ์บฃ๊ณผ ์ž๋ฐ” ๋ ˆ์‹œํ”ผ ์„œ๋ธ”๋ฆฟ: ์›น ํ†ต์‹  ํ•œ ํŒ ์ •๋ฆฌ
fulfilling_enjoyable yeona๐Ÿถ๐Ÿฆซ
fulfilling_enjoyable yeona๐Ÿถ๐Ÿฆซ
Quantitative Research Engineer & Quantitative Strategist | Multimodal Alpha (Price/News/On-chain) | Regime-aware, Cost-included Backtests | Remote-first ์—ฐ๋ฆฌ์˜ ๋‚œ ๋จธ๋‹ˆ๐Ÿ’ฐ๊ฐ€ ์ข‹์•„๐Ÿ’™๐Ÿฅณ ์ถฉ๋งŒํ•˜๊ฒŒ ๊ทธ๋ฆฌ๊ณ  ์ฆ๊ฒ๊ฒŒ ๐Ÿถ ๐Ÿฆซ ๐Ÿ’›
  • Eliana Lee
    Product & AI Engineer
    AboutMe ๋ชฉํ‘œ GitHub _yeonlee___ Eliana_Eden
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๐Ÿค ๐Ÿ˜Ž ์•ˆ๋…•โ˜ƒ๏ธ๐Ÿ’ž (125)
      • ๐Ÿ’™ ๐Ÿค Diary๐Ÿฐ ๐ŸŽ€ ๐Ÿงธ (37)
        • ๐Ÿ—ฝ๋ฏธ๊ตญ DS & CS ๋ฐ•์‚ฌ ์ด๋ฏผ๐Ÿ‹ (26)
        • ๐Ÿ›ซ์—ฌํ–‰ ์ด์•ผ๊ธฐ (1)
        • ๐Ÿ“’์˜ค๋Š˜ ์ด์•ผ๊ธฐ๐Ÿ’’๐Ÿซง๐ŸŒค๏ธ (6)
        • ๐Ÿฐโ˜˜๏ธ๐Ÿป‍โ„๏ธ๊ฐ•์•„์ง€ ์œก์•„ (0)
      • ๐ŸฌActuary๐Ÿคธ‍โ™€๏ธโœจ (1)
      • ๐Ÿ‘ฉ‍๐Ÿ’ปDeveloper ๐Ÿ’ก (65)
        • โš’๏ธ์‚ฝ์งˆ ๊ธฐ๋ก๊ธฐ๐Ÿ“[TIL] (6)
        • ๐Ÿ–ผ๏ธFront-end๐ŸŽจ (3)
        • ๐Ÿ’พBack-end๐Ÿ•Š๏ธ (29)
        • ๐Ÿคน‍โ™€๏ธAlgorithm & Coding Test๐Ÿ’ƒ (9)
        • ๐Ÿ—ปData๐Ÿ”๏ธ (1)
        • ๐Ÿ“Project๐Ÿ• (9)
      • ๐Ÿ’ฐ๊ฒฝ์ œ์  ์ž์œ  ๋‹ฌ์„ฑโœŒ๏ธ๐ŸคŸ (9)
        • ๐Ÿ“ŠQuant๐Ÿ“ˆ๐Ÿ‘ (5)
        • ๐Ÿฐ๐Ÿ›’๐Ÿฅ‡ (1)
        • ๐Ÿ’Ž ํˆฌ์ž ์‹ค์ „ ๊ฒฝํ—˜ โ˜บ๏ธ (1)
        • ๐Ÿ… Bitcoin 15๊ฐœ ๋ชจ์œผ๊ธฐ : 2040๋…„ 200์–ต+ (0)
        • ๐ŸŒŽ๋ฏธ๊ตญ ์‹œ์žฅ๐Ÿฆ (0)
      • ๐ŸŒค๏ธCloud๐ŸŒค๏ธโ˜๏ธ (2)
        • AWS (1)
        • Kubernetes (0)
        • Google Cloud Professional (0)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

    • git
  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    AWS
    ์‹œ์นด๊ณ ๋Œ€ํ•™๊ต
    ์‹œ์นด๊ณ ๋Œ€
    ์‹œ์นด๊ณ 
    Java
    ๊ฐ€์„ํ•™๊ธฐ
    ๋ฏธ๊ตญ์œ ํ•™
    ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
    ๋ฏธ๊ตญ๋น„์ž
    CS
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.5
fulfilling_enjoyable yeona๐Ÿถ๐Ÿฆซ
1์žฅ ์‚ฌ์šฉ์ž์ˆ˜์— ๋”ฐ๋ฅธ ๊ทœ๋ชจ ํ™•์žฅ์„ฑ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”