๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
System Design

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

by ์ฃผ๋ฐœ2 2025. 2. 25.
๋ฐ˜์‘ํ˜•

https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=278536695

 

[์ „์ž์ฑ…] ๊ฐ€์ƒ ๋ฉด์ ‘ ์‚ฌ๋ก€๋กœ ๋ฐฐ์šฐ๋Š” ๋Œ€๊ทœ๋ชจ ์‹œ์Šคํ…œ ์„ค๊ณ„ ๊ธฐ์ดˆ

16๊ฐ€์ง€ ์‹ค์ œ ์‹œ์Šคํ…œ ์„ค๊ณ„ ๋ฉด์ ‘ ๋ฌธ์ œ์™€ ์ƒ์„ธํ•œ ๋‹ต์•ˆ์„ ์ œ์‹œํ•œ๋‹ค. ์‹œ์Šคํ…œ ๋™์ž‘ ์›๋ฆฌ๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ๋ณด์—ฌ ์ฃผ๋Š” 188๊ฐœ์˜ ๋„ํ•ด๋กœ ์„ค๋ช…ํ•˜๋ฉด์„œ 4๋‹จ๊ณ„ ์ ‘๊ทผ๋ฒ•์œผ๋กœ ๋ฉด์ ‘ ๋ฌธ์ œ๋ฅผ ํ’€ ์ˆ˜ ์žˆ๋„๋ก ๋•๋Š”๋‹ค. ์ด ์ฑ…

www.aladin.co.kr

 

์ด๋ฒˆ ์žฅ์—์„œ๋Š” ํ•œ ๋ช…์˜ ์‚ฌ์šฉ์ž๋ฅผ ์ง€์›ํ•˜๋Š” ์‹œ์Šคํ…œ์—์„œ ์‹œ์ž‘ํ•˜์—ฌ ์ตœ์ข…์ ์œผ๋กœ ์ˆ˜๋ฐฑ๋งŒ ์‚ฌ์šฉ์ž๋ฅผ ์ง€์›ํ•˜๋Š” ์‹œ์Šคํ…œ์„ ์„ค๊ณ„ํ•œ๋‹ค.

 

๋‹จ์ผ ์„œ๋ฒ„

๋ชจ๋“  ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋‹จ ํ•œ๋Œ€์˜ ์„œ๋ฒ„์—์„œ ์‹คํ–‰๋˜๋Š” ๊ฐ„๋‹จํ•œ ์‹œ์Šคํ…œ์œผ๋กœ ์‹œ์ž‘ํ•œ๋‹ค.

  1. ์‚ฌ์šฉ์ž๊ฐ€ ๋„๋ฉ”์ธ(api.mysite.com)์„ ํ†ตํ•ด ์›น์‚ฌ์ดํŠธ์— ์ ‘์†ํ•œ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ๋„๋ฉ”์ธ ์ด๋ฆ„์„ DNS(Domain Name Service)์— ์งˆ์˜ํ•˜์—ฌ IP ์ฃผ์†Œ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •์ด ํ•„์š”ํ•˜๋‹ค.
  2. DNS ์กฐํšŒ ๊ฒฐ๊ณผ๋กœ IP ์ฃผ์†Œ(15.125.23.214)๊ฐ€ ๋ฐ˜ํ™˜๋˜๊ณ , ์ด๋Š” ์›น ์„œ๋ฒ„์˜ ์ฃผ์†Œ์ด๋‹ค.
  3. ์œ„์—์„œ ์ฐพ์€ IP ์ฃผ์†Œ๋กœ HTPT ์š”์ฒญ์ด ์ „๋‹ฌ๋œ๋‹ค.
  4. ์š”์ฒญ์„ ๋ฐ›์€ ์›น ์„œ๋ฒ„๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์—ฐ๋™, ์ฒ˜๋ฆฌ ํ›„ 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) ๋“ฑ์˜ ์ด์ ์ด ์žˆ๋‹ค.

 

์บ์‹œ

์บ์‹œ๋Š” ๋น„์šฉ์ด ๋น„์‹ผ ์—ฐ์‚ฐ ๊ฒฐ๊ณผ ํ˜น์€ ์ž์ฃผ ์ฐธ์กฐ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ ์ƒ์— ๋‘๊ณ , ๋ณด๋‹ค ๋น ๋ฅธ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์ €์žฅ์†Œ๋‹ค.

๋ณ„๋„์˜ ์บ์‹œ ๊ณ„์ธต์„ ํ†ตํ•ด ์„ฑ๋Šฅ ๊ฐœ์„  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ถ€ํ•˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

 

Cache - Look Aside

์œ„ ๊ทธ๋ฆผ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์บ์‹œ ๊ณ„์ธต์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

 

์บ์‹œ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๊ณ ๋ คํ•ด์•ผ ํ•  ์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • ์บ์‹œ๋Š” ์–ด๋–ค ์ƒํ™ฉ์— ์ ํ•ฉํ•œ๊ฐ€? (๊ฐฑ์‹ ์€ ์ž์ฃผ ์ผ์–ด๋‚˜์ง€ ์•Š๊ณ , ์ฐธ์กฐ๊ฐ€ ๋นˆ๋ฒˆํ•˜๊ฒŒ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ)
  • ์–ด๋– ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์บ์‹œ์— ๋‘์–ด์•ผ ํ•˜๋Š”๊ฐ€?
  • ์บ์‹œ์— ๋ณด๊ด€๋œ ๋ฐ์ดํ„ฐ๋Š” ์–ด๋–ป๊ฒŒ ๋งŒ๋ฃŒ(Expire)๊ฐ€ ๋˜์–ด์•ผ ํ•˜๋Š”๊ฐ€?
  • ์ผ๊ด€์„ฑ(consistency)์€ ์–ด๋–ป๊ฒŒ ์œ ์ง€๋˜๋Š”๊ฐ€?
  • ์žฅ์• ์—๋Š” ์–ด๋–ป๊ฒŒ ๋Œ€์ฒ˜ํ•  ๊ฒƒ์ธ๊ฐ€?
  • ์บ์‹œ์˜ ๋ฉ”๋ชจ๋ฆฌ๋Š” ์–ผ๋งˆ๋‚˜ ํฌ๊ฒŒ ์žก์„ ๊ฒƒ์ธ๊ฐ€?
  • ๋ฐ์ดํ„ฐ ๋ฐฉ์ถœ(eviction) ์ •์ฑ…์€ ๋ฌด์—‡์ธ๊ฐ€? (ex. LRU - ๋งˆ์ง€๋ง‰ ์‚ฌ์šฉ๋œ ์‹œ์ ์ด ๊ฐ€์žฅ ์˜ค๋ž˜๋œ ๋ฐ์ดํ„ฐ ๋‚ด๋ณด๋‚ด๊ธฐ)

(์บ์‹œ ์ „๋žต์— ๋Œ€ํ•œ ๋น„๊ต๋Š” ํ•ด๋‹น ๋งํฌ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.)

 

์ฝ˜ํ…์ธ  ์ „์†ก ๋„คํŠธ์›Œํฌ(CDN)

CDN์€ ์ •์  ์ฝ˜ํ…์ธ ๋ฅผ ์ „์†กํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๋ฌผ๋ฆฌ์ ์œผ๋กœ ๋ถ„์‚ฐ๋œ ์„œ๋ฒ„์˜ ๋„คํŠธ์›Œํฌ์ด๋‹ค.

์ด๋ฏธ์ง€, ๋น„๋””์˜ค, CSS, JS ํŒŒ์ผ ๋“ฑ ์ •์  ์ฝ˜ํ…์ธ ์— ๋Œ€ํ•ด ์บ์‹ฑ์ฒ˜๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

CDN (Content Delivery Network)

์œ„ ์ด๋ฏธ์ง€๋Š” 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

๋Œ“๊ธ€