[์ฑ…] ๋Œ€๊ทœ๋ชจ ์„œ๋น„์Šค๋ฅผ ์ง€ํƒฑํ•˜๋Š” ๊ธฐ์ˆ 

December 29, 2022์— ์ž‘์„ฑ ยท January 1, 1970์— ๋ณ€๊ฒฝ๋จ

๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ๋Š” ์–ด๋–ค ์ ์ด ์–ด๋ ค์šด๊ฐ€?

  • ๋ฉ”๋ชจ๋ฆฌ ๋‚ด์—์„œ ๊ณ„์‚ฐํ•  ์ˆ˜ ์—†๋‹ค.
  • ๋ฉ”๋ชจ๋ฆฌ ๋‚ด์—์„œ ๊ณ„์‚ฐํ•  ์ˆ˜ ์—†๊ฒŒ ๋˜๋ฉด ๋””์Šคํฌ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•ด์•ผ ํ•œ๋‹ค.
  • ํ•˜์ง€๋งŒ ๋””์Šคํฌ์˜ I/O๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ณด๋‹ค ๋Š๋ฆฌ๋ฏ€๋กœ ์ด๋ฅผ ์–ด๋–ป๊ฒŒ ๋Œ€์ฒ˜ํ•˜๋Š”์ง€๊ฐ€ ์–ด๋ ค์šด ์ ์ด๋‹ค.

๋””์Šคํฌ๊ฐ€ ๋Š๋ฆฐ ์ด์œ ?

์ฝ๋Š” ์†๋„

  • (SSD๊ฐ€ ์•„๋‹Œ) ์›๋ฐ˜ํ˜•์˜ HDD๋Š” ์›๋ฐ˜์„ ์ฝ๋Š” ํ—ค๋“œ๊ฐ€ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ๋Œ์•„๊ฐ€๋ฉด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ฒŒ ๋œ๋‹ค.
  • ๋”ฐ๋ผ์„œ ๋ฐ์ดํ„ฐ์˜ ์œ„์น˜๊นŒ์ง€ ํ—ค๋“œ๋ฅผ ์˜ฎ๊ธฐ๋Š” ์‹œ๊ฐ„, ํ—ค๋“œ๋ฅผ ํšŒ์ „์‹œํ‚ค๋ฉด์„œ ์ฝ๋Š” ์‹œ๊ฐ„ ๋“ฑ์ด ์†Œ์š”๋˜๊ฒŒ ๋œ๋‹ค.
  • ์ฝ์–ด์•ผ ํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์—ฌ๊ธฐ์ €๊ธฐ ๋ถ„์‚ฐ๋˜์–ด ์žˆ๋‹ค๋ฉด ์ฝ๋Š”์‹œ๊ฐ„์ด ๋” ์˜ค๋ž˜๊ฑธ๋ฆฌ๊ฒŒ ๋œ๋‹ค. (๋”ฐ๋ผ์„œOS ์ฐจ์›์—์„œ๋Š” ์ด๋ฅผ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ณดํ†ต 4KB๋‹จ์œ„์˜ ๋ธ”๋ก์œผ๋กœ ๊ตฌ๋ถ„ํ•ด์„œ ์ €์žฅํ•œ๋‹ค)

์ „์†ก ์†๋„

  • ๋ฉ”๋ชจ๋ฆฌ์™€ ๋””์Šคํฌ๋Š” CPU์™€ ๋ฒ„์Šค๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š”๋ฐ
  • ๋ฉ”๋ชจ๋ฆฌ โ†”ย CPU์˜ ๋ฒ„์Šค๋Š” ๋†’์€ ๋Œ€์—ญํญ์˜ ๋ฒ„์Šค๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๊ณ , ๋””์Šคํฌ โ†”ย CPU๋Š” ๋น„๊ต์  ๋‚ฎ์€ ๋Œ€์—ญํญ์˜ ๋ฒ„์Šค๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋‹ค.

๋”ฐ๋ผ์„œ ๋””์Šคํฌ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์€ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ ๋ณด๋‹ค ํ•ญ์ƒ ๋Š๋ฆฌ๋‹ค. (์ฑ…์—์„œ๋Š” ๋ฉ”๋ชจ๋ฆฌ๋Š” ๋””์Šคํฌ๋ณด๋‹ค 105 ~ 106๋ฐฐ ์ด์ƒ ๋น ๋ฅด๋‹ค๊ณ  ํ•œ๋‹ค.)

์‹œ์Šคํ…œ ํ™•์žฅ์„ฑ

  • ์„œ๋ฒ„์—์„œ ๋ถ€ํ•˜๋กœ ์ธํ•ด ์ฒ˜๋ฆฌ ์†๋„๊ฐ€ ๋‚ฎ์•„์ง€๋ฉด ์‹œ์Šคํ…œ์„ ํ™•์žฅํ•ด์•ผ ํ•œ๋‹ค.
  • ํ™•์žฅ ๋ฐฉ๋ฒ•์—๋Š” scale out(์„œ๋ฒ„ ๋Œ€์ˆ˜๋ฅผ ๋Š˜๋ฆฌ๊ธฐ)๊ณผ scale up(์„œ๋ฒ„ ์„ฑ๋Šฅ์„ ๋†’์ด๊ธฐ) ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.
  • ์ฃผ๋กœ ์ €๋ ดํ•˜๊ณ  ํ™•์žฅ์— ์œ ์—ฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— scale out ๋ฐฉ๋ฒ•์„ ๋งŽ์ด ์“ด๋‹ค.

๋ถ€ํ•˜

๋ถ€ํ•˜์—๋Š” ๋‘ ๊ฐ€์ง€ ์ข…๋ฅ˜๊ฐ€ ์žˆ๋‹ค.

  • CPU ๋ถ€ํ•˜ โ†’ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„์—์„œ ๋งŽ์€ ๊ณ„์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ
  • I/O ๋ถ€ํ•˜ โ†’ ๋””์Šคํฌ ์ž…์ถœ๋ ฅ์ด ๋งŽ์€ ๊ฒฝ์šฐ. DB์— ๊ฑธ๋ฆฌ๋Š” ๋ถ€ํ•˜

DB ํ™•์žฅ์„ฑ ํ™•๋ณด์˜ ์–ด๋ ค์›€

  • ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„๋Š” ์ฃผ๋กœ CPU ๊ณ„์‚ฐ๋งŒ ์ˆ˜ํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋Œ€์ˆ˜๋ฅผ ๋Š˜๋ ค์„œ ํ™•์žฅํ•˜๊ธฐ ์‰ฝ์ง€๋งŒ DB๋Š” ๊ทธ๋ ‡์ง€ ์•Š๋‹ค.
  • ์—ฌ๋Ÿฌ ๋Œ€์˜ DB๋ฅผ ๋‘”๋‹ค๊ณ  ํ–ˆ์„ ๋•Œ, ํ•œ DB์— ์“ด ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฅธ DB๋“ค์— ์–ด๋–ป๊ฒŒ ๋™๊ธฐํ™” ํ•ด์•ผ ํ•˜๋Š”์ง€๋ถ€ํ„ฐ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด๋‹ค.

DB ๋ถ„์‚ฐํ•˜๊ธฐ

๋ฉ”๋ชจ๋ฆฌ ์ฆ์„ค๋งŒ์œผ๋กœ๋Š” ๋ถ€ํ•˜ ๊ฐ๋‹น์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด DB๋ฅผ ํŒŒํ‹ฐ์…”๋‹ ํ•ด์•ผํ•œ๋‹ค. ํŒŒํ‹ฐ์…”๋‹์€ ๊ตญ์†Œ์„ฑ์„ ํ™œ์šฉํ•ด์„œ ๋ถ„์‚ฐํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์บ์‹œ๊ฐ€ ์œ ํšจํ•˜๊ณ , ๊ทธ๋ž˜์„œ ํŒŒํ‹ฐ์…”๋‹์€ ํšจ๊ณผ์ ์ผ ์ˆ˜ ์žˆ๋‹ค.

๊ตญ์†Œ์„ฑ(locality)์„ ๊ณ ๋ คํ•˜๊ธฐ

  • DB ํ…Œ์ด๋ธ” ๋‹จ์œ„๋กœ ํŒŒํ‹ฐ์…”๋‹
  • ์š”์ฒญ ์œ ํ˜•์— ๋”ฐ๋ผ ํŒŒํ‹ฐ์…”๋‹
    • ex. bot์ธ์ง€ ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž์ธ์ง€

๋ถ„์‚ฐ์„ ๊ณ ๋ คํ•œ MySQL ์šด์šฉ๋ฐฉ๋ฒ•

  1. OS ์บ์‹œ ํ™œ์šฉํ•˜๊ธฐ

    • ๋ฐ์ดํ„ฐ๋Ÿ‰ < ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ ์œ ์ง€.
    • ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ฒŒ ๋˜๋ฉด ์กฐ๊ธˆ์˜ ์Šคํ‚ค๋งˆ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ ๋งŒ์œผ๋กœ๋„ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ธฐ๊ฐ€๋ฐ”์ดํŠธ ๋‹จ์œ„๋กœ ์ฆ๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋ ค๋Š” ํ…Œ์ด๋ธ”์€ ๋ ˆ์ฝ”๋“œ๊ฐ€ ๊ฐ€๋Šฅํ•œ ์ž‘์•„์ง€๋„๋ก ์ปดํŒฉํŠธํ•˜๊ฒŒ ์„ค๊ณ„.
  2. ์ •๊ทœํ™”

    • ์ •๊ทœํ™”๋ฅผ ํ•˜๋ฉด ํ…Œ์ด๋ธ” ์šฉ๋Ÿ‰์ด ์ค„์–ด์„œ ์ข‹์„ ์ˆ˜ ์žˆ์ง€๋งŒ
    • ๊ฒฝ์šฐ์— ๋”ฐ๋ผ์„œ๋Š” ์˜คํžˆ๋ ค ์ฟผ๋ฆฌ๊ฐ€ ๋ณต์žกํ•ด์„œ ์†๋„๊ฐ€ ๋–จ์–ด์งˆ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ trade-off๋ฅผ ๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค.
  3. DB ์ธ๋ฑ์Šค ์ ์ ˆํ•˜๊ฒŒ ์„ค์ •ํ•˜๊ธฐ

    • MySQL์˜ ์ธ๋ฑ์Šค๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ B+ํŠธ๋ฆฌ ๊ตฌ์กฐ (ํƒ์ƒ‰์†๋„ O(logn)) ์ด๋ฏ€๋กœ ์„ ํ˜• ํƒ์ƒ‰๋ณด๋‹ค ์›”๋“ฑํžˆ ๋น ๋ฅด๋‹ค.
  4. ํ™•์žฅ์„ ์ „์ œ๋กœ ์„ค๊ณ„ํ•˜๊ธฐ

    • ์ฝ๊ธฐ > ์“ฐ๊ธฐ: ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜(Replication)
      • DB๋“ค์„ Master-Slave๋กœ ๊ตฌ๋ถ„ํ•ด์„œ ์“ฐ๊ธฐ๋Š” Master์—, ์ฝ๊ธฐ๋Š” Slave์—์„œ ํ•˜๋Š” ๊ฒƒ.
      • Master์— ์“ฐ๋ฉด Slave๊ฐ€ ๋™์ผํ•œ ๋‚ด์šฉ์œผ๋กœ ์ž์‹ ์„ ๊ฐฑ์‹ ํ•œ๋‹ค.
        • ์ฐธ๊ณ ) ๋งˆ์Šคํ„ฐ-์Šฌ๋ ˆ์ด๋ธŒ์˜ ๋‹ค์ค‘ํ™” ๋ฐฉ๋ฒ•
          • 4๊ฐœ ์ด์ƒ์ด ํ•œ ์„ธํŠธ์ด๋‹ค.
          • ์Šฌ๋ ˆ์ด๋ธŒ๊ฐ€ ํ•˜๋‚˜ ๊ณ ์žฅ๋‚˜๋ฉด ๋‹ค๋ฅธ ํ•˜๋‚˜์˜ ์Šฌ๋ ˆ์ด๋ธŒ๋ฅผ ์ค‘์ง€์‹œํ‚ค๊ณ  ์ƒˆ ์„œ๋ฒ„์— ๋ณต์‚ฌํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์Šฌ๋ ˆ์ด๋ธŒ๊ฐ€ 3๊ฐœ ์ด์ƒ ํ•„์š”ํ•˜๋‹ค.
          • ๋งˆ์Šคํ„ฐ๊ฐ€ ๊ณ ์žฅ๋‚˜๋ฉด ์Šฌ๋ ˆ์ด๋ธŒ ์ค‘ ํ•˜๋‚˜๋ฅผ ๋งˆ์Šคํ„ฐ๋กœ ์Šน๊ฒฉ์‹œํ‚จ๋‹ค.
    • ์ฝ๊ธฐ < ์“ฐ๊ธฐ ๋ผ๋ฉด
      • ํ…Œ์ด๋ธ”์„ ๋ถ„ํ• ํ•ด์„œ ์“ฐ๊ธฐ ์ž‘์—…์„ ๋ถ„์‚ฐ
      • RDBMS ๋Œ€์‹  Key-Value ์ €์žฅ์†Œ ์‚ฌ์šฉํ•˜๊ธฐ
        • ๋‹จ์ˆœํžˆ ๊ฐ’์„ ์ €์žฅํ•˜๊ณ  ๊บผ๋‚ด๋ฏ€๋กœ, RDMBS์˜ ์Šคํ‚ค๋งˆ ๊ฒ€์‚ฌ, ์ •๋ ฌ ์ฒ˜๋ฆฌ ๋“ฑ์˜ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ „ํ˜€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์•„ ๋น ๋ฅด๋‹ค.
    • ์„œ๋กœ JOINํ•˜๋Š” ํ…Œ์ด๋ธ”์€ ๋ถ„์‚ฐํ•˜์ง€ ๋ง ๊ฒƒ.
      • ๋”˜, MySQL 5.1 ๋ถ€ํ„ฐ๋Š” ๋‹ค๋ฅธ ๋จธ์‹ ์˜ ํ…Œ์ด๋ธ”๊ณผ JOINํ•  ์ˆ˜ ์žˆ๋Š” FEDERATE ๊ธฐ๋Šฅ์ด ์กด์žฌ.

ํŒŒํ‹ฐ์…”๋‹์˜ ๋‹จ์ 

  • ์–ด๋””์— ์–ด๋–ค ํ…Œ์ด๋ธ”์ด ์žˆ๋Š”์ง€๋ฅผ ํ™•์ธํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์šด์˜์ด ๋ณต์žกํ•ด์ง„๋‹ค.
  • ๋Œ€์ˆ˜๊ฐ€ ๋Š˜์–ด๋‚˜๋ฏ€๋กœ ๊ณ ์žฅ๋ฅ ์ด ๋†’์•„์ง„๋‹ค.

์Šคํ† ๋ฆฌ์ง€ ์„ ํƒํ•˜๊ธฐ

์Šคํ† ๋ฆฌ์ง€ ์„ ํƒ์˜ ์ „์ œ ์กฐ๊ฑด

  • ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์•ก์„ธ์Šค ํŒจํ„ด์„ ์ดํ•ดํ•˜๊ธฐ
    • ํ‰๊ท  ํฌ๊ธฐ
    • ์ตœ๋Œ€ ํฌ๊ธฐ
    • ์‹ ๊ทœ ์ถ”๊ฐ€ ๋นˆ๋„
    • ๊ฐฑ์‹  ๋นˆ๋„
    • ์‚ญ์ œ ๋นˆ๋„
    • ์ฐธ์กฐ ๋นˆ๋„
    • ์‹ ๋ขฐ์„ฑ
    • ํ—ˆ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์žฅ์•  ๋ ˆ๋ฒจ

์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํ”„๋ก์‹œ/์บ์‹œ ์‹œ์Šคํ…œ

  • ํฌ์›Œ๋“œ(Forward) ํ”„๋ก์‹œ
    • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์™ธ๋ถ€ ๋„คํŠธ์›Œํฌ์— ์ ‘๊ทผํ•  ๋•Œ ๊ฒฝ์œ .
    • ํด๋ผ์ด์–ธํŠธ๋ฅผ ์™ธ๋ถ€์— ์ˆจ๊ธด๋‹ค.
  • ๋ฆฌ๋ฒ„์Šค(Reverse) ํ”„๋ก์‹œ
    • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„ ์•ž๋‹จ์— ๋‘๋Š” ๊ฒƒ.
    • ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์„œ๋ฒ„๋ฅผ ์ˆจ๊ธด๋‹ค.

๐Ÿ“– ์†Œ๊ฐ

2011๋…„์— ๋‚˜์˜จ ๊ฝค ์˜ค๋ž˜๋œ ์ฑ…์ด๋ผ ์š”์ฆ˜์—๋Š” ์•ˆ์“ฐ๋Š” ์˜›๋‚  ์ง€์‹์„ ๋‹ค๋ฃจ๊ณ  ์žˆ์„ ์ง€ ๊ฑฑ์ •ํ–ˆ์ง€๋งŒ, ๊ธฐ๋ณธ์ ์ธ ๋‚ด์šฉ๋“ค์„ ๋‹ค๋ฃจ๊ณ  ์žˆ์–ด์„œ ๋ฌธ์ œ๋˜์ง€ ์•Š์•˜๋‹ค..! ๋Œ€๊ทœ๋ชจ ์›น ์„œ๋น„์Šค์—์„œ๋Š” ์–ด๋–ค ๊ณ ๋ฏผ์„ ํ•˜๋Š”์ง€์— ๋Œ€ํ•ด ํญ๋„“๊ฒŒ ์•Œ ์ˆ˜ ์žˆ๋Š” ์ข‹์€ ๊ณ„๊ธฐ.

๋„์„œ ๋งํฌ