Post

๐Ÿข 12. System design & Scalability

๊ทœ๋ชจ ํ™•์žฅ์„ฑ (scalability) ์€ ๊ฐ€์žฅ ์‰ฌ์šด ์ข…๋ฅ˜์˜ ๋ฌธ์ œ

โญ ๋ฌธ์ œ๋ฅผ ๋‹ค๋ฃจ๋Š” ๋ฐฉ๋ฒ•

  • ์†Œํ†ตํ•˜๋ผ ์˜์‚ฌ์†Œํ†ต ๋Šฅ๋ ฅ์„ ํ‰๊ฐ€ํ•˜๊ธฐ ์œ„ํ•จ
  • ์ฒ˜์Œ์—๋Š” ํฌ๊ด„์ ์œผ๋กœ ์ ‘๊ทผํ•˜๋ผ ํŠน์ • ๋ถ€๋ถ„์„ ๊ณผ๋„ํ•˜๊ฒŒ ํŒŒ๊ณ ๋“ค์ง€ ๋ง๋ผ
  • ํ™”์ดํŠธ๋ณด๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ผ ํ™”์ดํŠธ๋ณด๋“œ์— ์ œ์•ˆํ•˜๋Š” ๊ทธ๋ฆผ์„ ๊ทธ๋ฆฌ๋ฉด์„œ ์„ค๋ช…ํ•ด๋ผ
  • ๋ฉด์ ‘๊ด€์ด ์šฐ๋ คํ•˜๋Š” ๋ถ€๋ถ„์„ ์ธ์ •ํ•˜๋ผ ๋ฉด์ ‘๊ด€์ด ์งš์€ ๋ฌธ์ œ์ ์„ ์ธ์ •ํ•˜๊ณ  ์ ์ ˆํ•˜๊ฒŒ ์ˆ˜์ •ํ•ด๋ผ
  • ๊ฐ€์ •์„ ํ•  ๋•Œ ์ฃผ์˜ํ•˜๋ผ ์ž˜๋ชป๋œ ๊ฐ€์ •์€ ๋ฌธ์ œ๋ฅผ ์™„์ „ํžˆ ๋‹ค๋ฅด๊ฒŒ ๋ฐ”๊ฟ” ๋ฒ„๋ฆด ์ˆ˜ ์žˆ๋‹ค
  • ์—ฌ๋Ÿฌ๋ถ„์ด ์ƒ๊ฐํ•˜๋Š” ๊ฐ€์ •์„ ๋ช…ํ™•ํžˆ ์–ธ๊ธ‰ํ•˜๋ผ ๋ฉด์ ‘๊ด€ํ•œํ…Œ ๊ฐ€์ •ํ•  ๊ฒƒ์„ ์•Œ๋ฆฌ๋ผ
  • ํ•„์š”ํ•˜๋‹ค๋ฉด ์–ด๋ฆผ์žก์•„ ๋ณด๋ผ ํ•„์š”ํ•œ ๊ณต๊ฐ„์ด ์–ผ๋งˆ๋‚˜ ๋˜๋Š”์ง€ ์–ด๋ฆผ์žก์•„ ๋ด๋ผ
  • ๋›ฐ์–ด๋“ค๋ผ ์žฅ๋‹จ์ ์„ ์—ด๋ฆฐ ๋งˆ์Œ์œผ๋กœ ๋ฐ›์•„๋“ค๋ผ

์ตœ๊ณ ์˜ ์„ค๊ณ„๋ฅผ ํ•ด๋‚ด๋Š” ๊ฒƒ๋ณด๋‹ค ๋Œ€๊ฒŒ ๊ทธ ๊ณผ์ •์„ ์ค‘์š”ํ•˜๊ฒŒ ๋ณธ๋‹ค

โญ ์‹œ์Šคํ…œ ์„ค๊ณ„: ๋‹จ๊ณ„์  ์ ‘๊ทผ๋ฒ•

1๋‹จ๊ณ„: ๋ฌธ์ œ์˜ ๋ฒ”์œ„๋ฅผ ์„ค์ •ํ•˜๋ผ

๋งŒ๋“ค๊ณ ์ž ํ•˜๋Š” ์‹œ์Šคํ…œ๊ณผ ๋ฉด์ ‘๊ด€์ด ์›ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ™์€์ง€ ํ™•์‹คํžˆ ํ•˜๊ธฐ ์œ„ํ•ด ๋ฌธ์ œ์˜ ๋ฒ”์œ„๋ฅผ ํ•œ์ •ํ•ด๋ผ

  • URL์„ TinyURL๋กœ ์ถ•์•ฝ
  • URL์„ ๋ถ„์„
  • TinyURL๊ณผ ์—ฐ๊ฒฐ๋œ URL์„ ๊ฒ€์ƒ‰
  • ์‚ฌ์šฉ์ž ๊ณ„์ • ๋ฐ ๋งํฌ ๊ด€๋ฆฌ

2๋‹จ๊ณ„: ํ•ฉ๋ฆฌ์ ์ธ ๊ฐ€์ •์„ ๋งŒ๋“ค์–ด๋ผ

๊ฐ€์ •์„ ์„ธ์šฐ๋Š” ๊ฒƒ๋„ ๊ดœ์ฐฎ์ง€๋งŒ, ํ•ฉ๋‹นํ•ด์•ผ ํ•œ๋‹ค

์–ด๋–ค ๊ฐ€์ •์„ ์„ธ์šฐ๋ ค๋ฉด โ€œ์ œํ’ˆ์— ๋Œ€ํ•œ ๊ฐโ€์ด ์žˆ์–ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ๋‹ค

3๋‹จ๊ณ„: ์ค‘์š”ํ•œ ๋ถ€๋ถ„์„ ๋จผ์ € ๊ทธ๋ ค๋ผ

์‹œ์Šคํ…œ์˜ ์ฃผ์š”ํ•œ ๋ถ€๋ถ„์„ ๋‹ค์ด์–ด๊ทธ๋žจ์œผ๋กœ ๊ทธ๋ ค๋ผ

์‹œ์Šคํ…œ์˜ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰๊นŒ์ง€ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ๊ทธ ํ๋ฆ„์„ ๋ณด์ด์•„๋ผ

ํ˜„์žฌ ๋‹จ๊ณ„์—์„  ๊ทœ๋ชจ ํ™•์žฅ์„ฑ ๋ฌธ์ œ๋ฅผ ๋ฌด์‹œํ•ด๋„ ๋œ๋‹ค

4๋‹จ๊ณ„: ํ•ต์‹ฌ ๋ฌธ์ œ์ ์„ ์ฐพ์œผ๋ผ

๋งˆ์Œ์†์—์„œ ๊ธฐ๋ณธ์ ์ธ ์„ค๊ณ„๋ฅผ ๋งˆ์นœ ๋’ค์—๋Š” ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ํ•ต์‹ฌ ๋ฌธ์ œ์— ์ง‘์ค‘ํ•ด์•ผ ํ•œ๋‹ค

์–ด๋Š ๋ถ€๋ถ„์ด ๋ณ‘๋ชฉ์ง€์ ์ผ๊นŒ? ์ด ์‹œ์Šคํ…œ์ด ํ’€์–ด์•ผ ํ•  ์ฃผ๋œ ๋ฌธ์ œ๋Š” ๋ฌด์—‡์ธ๊ฐ€?

5๋‹จ๊ณ„: ํ•ต์‹ฌ ๋ฌธ์ œ์ ์„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋„๋ก ๋‹ค์‹œ ์„ค๊ณ„ํ•˜๋ผ

ํ•ต์‹ฌ ๋ฌธ์ œ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์•Œ์•„๋ƒˆ๋‹ค๋ฉด ์ด์ œ๋Š” ๊ทธ์— ๋งž๊ฒŒ ์—ฌ๋Ÿฌ๋ถ„์˜ ์„ค๊ณ„๋ฅผ ์ˆ˜์ •ํ•ด์•ผ ํ•œ๋‹ค

๋‹ค์ด์–ด๊ทธ๋žจ์„ ๋ฐ”๋€ ์„ค๊ณ„์— ๋งž๊ฒŒ ์ˆ˜์ •ํ•˜๋ผ

๋ณธ์ธ์˜ ์‹œ์Šคํ…œ์— ์กด์žฌํ•˜๋Š” ์–ด๋–ค ์ œ์•ฝ์‚ฌํ•ญ๋„ ์—ด๋ฆฐ ๋งˆ์Œ์œผ๋กœ ๋ฐ›์•„๋“ค์ผ ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค

โญ ๊ทœ๋ชจ ํ™•์žฅ์„ ์œ„ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜: ๋‹จ๊ณ„๋ณ„ ์ ‘๊ทผ๋ฒ•

๋‹จ์ˆœํžˆ ์‹œ์Šคํ…œ ์ „์ฒด๊ฐ€ ์•„๋‹Œ ์‹œ์Šคํ…œ์˜ ํ•œ ๋ถ€๋ถ„ ํ˜น์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์„ค๊ณ„ํ•ด ๋ณด๋ผ๋Š” ์š”์ฒญ์„ ๋ฐ›์„ ์ˆ˜๋„ ์žˆ๋Š”๋ฐ, ๋ฐ˜๋“œ์‹œ ๊ทœ๋ชจ ํ™•์žฅ์„ฑ์„ ์‹ ๊ฒฝ์จ๋ผ

1๋‹จ๊ณ„: ์งˆ๋ฌธํ•˜๋ผ

์ดˆ๋ฐ˜์—๋Š” ๋ฌธ์ œ๋ฅผ ์ œ๋Œ€๋กœ ์ดํ•ดํ–ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•œ ์งˆ๋ฌธ ์‹œ๊ฐ„์ด ํ•„์š”ํ•˜๋‹ค

2๋‹จ๊ณ„: ํ˜„์‹ค์  ์ œ์•ฝ์„ ๋ฌด์‹œํ•˜๋ผ

๋ฉ”๋ชจ๋ฆฌ ์ œ์•ฝ์ด ์—†๊ณ , ์ปดํ“จํ„ฐ ํ•œ ๋Œ€์—์„œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด๋ผ

3๋‹จ๊ณ„: ํ˜„์‹ค๋กœ ๋Œ์•„์˜ค๋ผ

์–ด๋–ค ๋…ผ๋ฆฌ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋‚˜๋ˆŒ ๊ฒƒ์ธ๊ฐ€, ํŠน์ • ์ปดํ“จํ„ฐ๊ฐ€ ์–ด๋Š ๋ฐ์ดํ„ฐ ์กฐ๊ฐ์„ ์‚ฌ์šฉํ–ˆ๋Š”์ง€ ๋“ฑ ์ƒ๊ฐํ•ด๋ด๋ผ

4๋‹จ๊ณ„: ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ผ

์ƒํ™ฉ์— ๋”ฐ๋ผ ๋ฌธ์ œ์  ์ž์ฒด๋ฅผ ์™„์ „ํžˆ ํ•ด๊ฒฐํ•  ์ˆ˜๋„ ์žˆ๊ณ , ๊ทธ ์ˆ˜์ค€์„ ์™„ํ™”์‹œํ‚ค๋Š” ๋ฐ ๊ทธ์น  ์ˆ˜๋„ ์žˆ๋‹ค

์ˆœํ™˜์  ์ ‘๊ทผ๋ฒ•์ด ์ผ๋ฐ˜์ ์œผ๋กœ ์œ ์šฉํ•˜๋‹ค! ์–ด๋–ค ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ฉด, ๋˜ ๋‹ค๋ฅธ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ , ๊ทธ ๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ ํ•ด๊ฒฐํ•ด ๋‚˜๊ฐ€๊ณ ๋ฅผ ๋ฐ˜๋ณตํ•˜๋Š” ์ž‘์—…์ด๋‹ค

๋ฌธ์ œ๋ฅผ ๋ถ„์„ํ•˜๊ณ  ํ’€ ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ์„ ์ž…์ฆํ•˜๋ผ

โญ ์‹œ์Šคํ…œ ์„ค๊ณ„์˜ ํ•ต์‹ฌ ๊ฐœ๋…

์‹œ์Šคํ…œ ์„ค๊ณ„ ๋ฌธ์ œ๊ฐ€ ๋ฌด์—‡์„ ์•Œ๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ฌธ์ œ๋Š” ์•„๋‹ˆ์ง€๋งŒ, ํŠน์ • ๊ฐœ๋…์„ ์•Œ๊ณ  ์žˆ์œผ๋ฉด ๋ฌธ์ œ๋ฅผ ๋” ์‰ฝ๊ฒŒ ํ’€ ์ˆ˜ ์žˆ๋‹ค

์ˆ˜ํ‰์ (horizontal) vs. ์ˆ˜์ง์ (vertical) ๊ทœ๋ชจ ํ™•์žฅ

  • ์ˆ˜์ง์  ๊ทœ๋ชจ ํ™•์žฅ: ํŠน์ • ๋…ธ๋“œ์˜ ์ž์›์˜ ์–‘์„ ๋Š˜๋ฆฌ๋Š” ๋ฐฉ๋ฒ•
  • ์ˆ˜ํ‰์  ๊ทœ๋ชจ ํ™•์žฅ: ๋…ธ๋“œ์˜ ๊ฐœ์ˆ˜๋ฅผ ๋Š˜๋ฆฌ๋Š” ๋ฐฉ๋ฒ•

์„œ๋ฒ„ ๋ถ€ํ•˜ ๋ถ„์‚ฐ ์žฅ์น˜(load balancer)

  • ์„œ๋ฒ„์— ๊ฑธ๋ฆฌ๋Š” ๋ถ€ํ•˜๋ฅผ ์—ฌ๋Ÿฌ ๋Œ€์˜ ์„œ๋ฒ„์— ๊ท ์ผํ•˜๊ฒŒ ๋ถ„์‚ฐ์‹œํ‚ฌ ์ˆ˜ ์žˆ๊ณ  ์„œ๋ฒ„ ํ•œ ๋Œ€ ๋•Œ๋ฌธ์— ์ „์ฒด ์‹œ์Šคํ…œ์ด ์ฃฝ๊ฑฐ๋‚˜ ๋‹ค์šด๋˜๋Š” ์ƒํ™ฉ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค
  • ์„œ๋ฒ„ ์—ฌ๋Ÿฌ ๋Œ€๊ฐ€ ๊ทผ๋ณธ์ ์œผ๋กœ ๋˜‘๊ฐ™์€ ์ฝ”๋“œ์™€ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ํ•˜๋Š” ๋„คํŠธ์›Œํฌ๋ฅผ ๊ตฌํ˜„ํ•ด๋†”์•ผ ํ•œ๋‹ค

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ญ์ •๊ทœํ™”(denormalization)์™€ NoSQL

  • SQL ๊ฐ™์€ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์กฐ์ธ ์—ฐ์‚ฐ์€ ์‹œ์Šคํ…œ์ด ์ปค์งˆ์ˆ˜๋ก ๊ต‰์žฅํžˆ ๋Š๋ ค์ง„๋‹ค
  • ์—ญ์ •๊ทœํ™”๊ฐ€ ์ด๋Ÿฐ๊ฒƒ๋“ค ์ค‘ ํ•˜๋‚˜๋‹ค
  • ์—ญ์ •๊ทœํ™”๋ž€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์—ฌ๋ถ„์˜ ์ •๋ณด๋ฅผ ์ถ”๊ฐ€ํ•ด์„œ ์ฝ๊ธฐ ์—ฐ์‚ฐ ์†๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚จ ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค
  • ๋‘ ํ…Œ์ด๋ธ”์„ ์กฐ์ธํ•˜๊ธฐ๋ณด๋‹จ ์ •๋ณด๋ฅผ ์ถ”๊ฐ€๋กœ ์ €์žฅํ•ด ๋” ๋น ๋ฅด๊ฒŒ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค
  • NoSQL์€ join ์—ฐ์‚ฐ ์ž์ฒด๊ฐ€ ์—†์–ด ๊ทœ๋ชจ ํ™•์žฅ์„ฑ์ด ์ข‹๋„๋ก ์„ค๊ณ„๋˜์–ด ์žˆ๋‹ค

โญ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ถ„ํ• (์ƒค๋”ฉ)

์ƒค๋”ฉ(sharding)์€ ๋ฐ์ดํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ ์ปดํ“จํ„ฐ์— ๋‚˜๋ˆ ์„œ ์ €์žฅํ•˜๋Š” ๋™์‹œ์— ์–ด๋–ค ๋ฐ์ดํ„ฐ๊ฐ€ ์–ด๋–ค ์ปดํ“จํ„ฐ์— ์ €์žฅ๋˜์–ด ์žˆ๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ์‹

  • ์ˆ˜์ง์  ๋ถ„ํ• (vertical partitioning)
    • ์ž๋ฃŒ์˜ ํŠน์„ฑ๋ณ„๋กœ ๋ถ„ํ• ํ•˜๋Š” ๋ฐฉ์‹
    • ํ•œ ๊ฐ€์ง€ ๋‹จ์ ์€ ํŠน์ • ํ…Œ์ด๋ธ”์˜ ํฌ๊ธฐ๊ฐ€ ์ผ์ • ์ˆ˜์ค€ ์ด์ƒ์ด ๋˜๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ์žฌ๋ถ„ํ• ํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ๋‹ค
  • ํ‚ค & ํ•ด์‹œ ๊ธฐ๋ฐ˜ ๋ถ„ํ• 
    • mod(key, n) ์˜ ๊ฐ’์„ N๊ฐœ์˜ ์„œ๋ฒ„์— ๋ถ„ํ•  ์ €์žฅํ•˜๋ฉด ๋œ๋‹ค
    • ํ•œ ๊ฐ€์ง€ ๋ฌธ์ œ์ ์€ ์„œ๋ฒ„์˜ ๊ฐœ์ˆ˜๊ฐ€ ์‚ฌ์‹ค์ƒ ๊ณ ์ •๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค
    • ์„œ๋ฒ„๋ฅผ ์ƒˆ๋กœ ์ถ”๊ฐ€ํ•  ๋•Œ ๋งˆ๋‹ค ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ ์žฌ๋ถ„๋ฐฐํ•ด์•ผ ํ•œ๋‹ค
  • ๋””๋ ‰ํ„ฐ๋ฆฌ ๊ธฐ๋ฐ˜ ๋ถ„ํ• 
    • ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์„ ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ์กฐํšŒ ํ…Œ์ด๋ธ”(lookup table)์„ ์œ ์ง€ํ•˜๋Š” ๋ฐฉ๋ฒ•
    • ์ƒ๋Œ€์ ์œผ๋กœ ์„œ๋ฒ„๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ์‰ฝ์ง€๋งŒ, ๋‘๊ฐ€์ง€ ์‹ฌ๊ฐํ•œ ๋‹จ์ ์ด ์žˆ๋”ฐ
      • ์กฐํšŒ ํ…Œ์ด๋ธ”์ด ๋‹จ์ผ ์žฅ์•  ์ง€์ ์ด ๋  ์ˆ˜ ์žˆ๋‹ค
      • ์ง€์†์ ์œผ๋กœ ํ…Œ์ด๋ธ”์„ ์ฝ๋Š” ํ–‰์œ„๊ฐ€ ์ „์ฒด ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ๋‹ค

โญ ์บ์‹ฑ(caching)

  • ์ธ๋ฉ”๋ชจ๋ฆฌ ์บ์‹œ๋ฅผ ์ด์šฉํ•ด ๊ฒฐ๊ณผ๋ฅผ ๋น ๋ฅด๊ฒŒ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค
    • ๋ฉ”๋ชจ๋ฆฌ ์บ์‹œ๋Š” key-value ์Œ์œผ๋กœ ๊ฐ–๋Š” ๊ฐ„๋‹จํ•œ ๊ตฌ์กฐ์ด๋‹ค
  • ์ผ๋ฐ˜์ ์œผ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ ์‚ฌ์ด์— ์ž๋ฆฌ์žก๊ณ  ์žˆ๋‹ค
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์–ด๋–ค ์ž๋ฃŒ๋ฅผ ์š”์ฒญํ•˜๋ฉด ์บ์‹œ๋ฅผ ๋จผ์ € ํ™•์ธํ•œ๋‹ค
    • ์บ์‹œ๊ฐ€ ํ•ด๋‹น ํ‚ค๊ฐ’์„ ๊ฐ–๊ณ  ์žˆ์ง€ ์•Š์œผ๋ฉด ๊ทธ๋•Œ ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ๋ฅผ ํ™•์ธํ•œ๋‹ค

โญ ๋น„๋™๊ธฐ์‹ ์ฒ˜๋ฆฌ & ํ

  • ์ด์ƒ์ ์ด๋ผ๋ฉด, ์†๋„๊ฐ€ ๋Š๋ฆฐ ์—ฐ์‚ฐ์€ ๋น„๋™๊ธฐ์‹(asynchronous)์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•œ๋‹ค
  • ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ํ•ด๋‹น ์—ฐ์‚ฐ์ด ๋๋‚˜๊ธฐ๊นŒ์ง€ ํ•˜์—ผ์—†์ด ๊ธฐ๋‹ค๋ ค์•ผ ํ•œ๋‹ค
  • ์–ด๋–ค ๊ฒฝ์šฐ๋Š” ์ด ์—ฐ์‚ฐ์„ ๋ฏธ๋ฆฌ ํ•ด ๋†“์„ ์ˆ˜๋„ ์žˆ๋‹ค
  • ์ž‘์—…์ด ๋๋‚˜๋ฉด ์‚ฌ์šฉ์ž์—๊ฒŒ ์ž‘์—…์ด ๋๋‚ฌ๋‹ค๊ณ  ์ง์ ‘ ์•Œ๋ ค ์ฃผ๊ธฐ๋„ ํ•œ๋‹ค

โญ ๋„คํŠธ์›Œํฌ ์„ฑ๋Šฅ ์ฒ™๋„

  • ๋Œ€์—ญํญ(handwidth)
    • ๋‹จ์œ„ ์‹œ๊ฐ„์— ์ „์†กํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ์˜ ์ตœ๋Œ€์น˜
  • ์ฒ˜๋ฆฌ๋Ÿ‰(throughput)
    • ๋‹จ์œ„ ์‹œ๊ฐ„์— ์‹ค์ œ๋กœ ์ „์†ก๋œ ๋ฐ์ดํ„ฐ์˜ ์–‘
  • ์ง€์—ฐ ์†๋„(latency)
    • ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋Š” ๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„

โญ MapReduce

  • ๊ต‰์žฅํžˆ ์ปค๋‹ค๋ž€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋œ๋‹ค
    • Map์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›์€ ๋’ค <key, value> ์Œ์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค
    • Reduce ๋Š” key์™€ ๊ด€๋ จ value ๋ฅผ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›์•„ ์ฒ˜๋ฆฌ ๊ณผ์ •์„ ๊ฑฐ์ณ ์ƒˆ๋กœ์šด ํ‚ค๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค
    • ๊ทœ๋ชจ ํ™•์žฅ์ด ์ˆ˜์›Œ์ง„๋‹ค

โญ ์‹œ์Šคํ…œ ์„ค๊ณ„ ์‹œ ๊ณ ๋ คํ•  ์ 

  • ์‹คํŒจ: ์‹คํŒจ์— ๋Œ€ํ•œ ๋Œ€๋น„์ฑ…์ด ํ•„์š”ํ•˜๋‹ค
  • ๊ฐ€์šฉ์„ฑ: ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์‹œ์Šคํ…œ์˜ ์‹œ๊ฐ„์„ ๋ฐฑ๋ถ„์œจ๋กœ ๋‚˜ํƒ€๋‚ธ ๊ฒƒ
  • ์‹ ๋ขฐ์„ฑ: ํŠน์ • ๋‹จ์œ„ ์‹œ๊ฐ„์— ์‹œ์Šคํ…œ์ด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•  ํ™•๋ฅ ๋กœ ๋‚˜ํƒ€๋‚ธ ๊ฒƒ
  • ์ฝ๊ธฐ ์ค‘์‹ฌ vs ์“ฐ๊ธฐ ์ค‘์‹ฌ: ์“ฐ๋Š” ์—ฐ์‚ฐ์ด ๋งŽ๋‹ค๋ฉด ํ, ์ฝ๋Š” ์—ฐ์‚ฐ์ด ๋งŽ๋‹ค๋ฉด ์บ์‹œ
  • ๋ณด์•ˆ: ๋ณด์•ˆ ์œ„ํ˜‘์€ ์‹œ์Šคํ…œ์— ์—„์ฒญ๋‚œ ํ•ด๋ฅผ ๊ฐ€ํ•œ๋‹ค (์„ค๊ณ„ํ•ด๋ผ)

โญ ์™„๋ฒฝํ•œ ์‹œ์Šคํ…œ์€ ์—†๋‹ค

  • ์™„๋ฒฝํ•˜๊ฒŒ ๋™์ž‘ํ•˜๋Š” ์‹œ์Šคํ…œ ์„ค๊ณ„๋ž€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค
  • ๋”์ฐํ•œ ์‹œ์Šคํ…œ์€ ๋งค์šฐ ๋งŽ๋‹ค
  • ์‚ฌ๋ก€๋ฅผ ์ž˜ ์ดํ•ดํ•˜๊ณ , ๋ฌธ์ œ์˜ ๋ฒ”์œ„๋ฅผ ์„ค์ •ํ•˜๊ณ , ํ•ฉ๋ฆฌ์ ์ธ ๊ฐ€์ •์„ ์„ธ์šด ๋’ค, ๋ช…ํ™•ํ•˜๊ฒŒ ์„ค๊ณ„ํ•œ ์‹œ์Šคํ…œ์„ ๋งŒ๋“ค๋ผ
This post is licensed under CC BY 4.0 by the author.