๊ด€๋ฆฌ ๋ฉ”๋‰ด

JunHyeok

[CS] Copy-On-Write ๋ณธ๋ฌธ

Computer Science

[CS] Copy-On-Write

junhyeok-log 2024. 5. 30. 10:39

๐ŸฆŠ Copy-On-Write (COW)

1. ์šด์˜ ์ฒด์ œ์—์„œ์˜ Copy-On-Write

์šด์˜ ์ฒด์ œ์—์„œ fork ์‹œ์Šคํ…œ ์ฝœ์„ ์‚ฌ์šฉํ•  ๋•Œ, ์ž์‹ ํ”„๋กœ์„ธ์Šค๋Š” ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ Copy-On-Write (COW) ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ์˜ ํšจ์œจ์„ฑ์„ ํฌ๊ฒŒ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. COW์˜ ์ฃผ์š” ํŠน์ง•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

  • ์ดˆ๊ธฐ ๋ณต์‚ฌ ์ง€์—ฐ
    fork ํ˜ธ์ถœ ์‹œ ๋ถ€๋ชจ์™€ ์ž์‹ ํ”„๋กœ์„ธ์Šค๋Š” ๋™์ผํ•œ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ ํŽ˜์ด์ง€๋ฅผ ๊ฐ€๋ฆฌํ‚ต๋‹ˆ๋‹ค.
    ์‹ค์ œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์‚ฌํ•˜์ง€ ์•Š๊ณ , ๋ถ€๋ชจ์™€ ์ž์‹์ด ๋™์ผํ•œ ๋ฉ”๋ชจ๋ฆฌ ํŽ˜์ด์ง€๋ฅผ ์ฝ์Šต๋‹ˆ๋‹ค.
    ์ด ํŽ˜์ด์ง€๋“ค์€ read-only ๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.

  • ์‹ค์ œ ์“ฐ๊ธฐ ์‹œ์ ์—์„œ์˜ ๋ณต์‚ฌ:
    ๋ถ€๋ชจ ๋˜๋Š” ์ž์‹ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ํŽ˜์ด์ง€์— write ์ž‘์—…์„ ์‹œ๋„ํ•˜๋ฉด ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
    ์šด์˜ ์ฒด์ œ๋Š” ์ด ์‹œ์ ์—์„œ ํ•ด๋‹น ํŽ˜์ด์ง€๋ฅผ ๋ณต์‚ฌํ•˜๊ณ , ์“ฐ๊ธฐ ๊ฐ€๋Šฅํ•œ ํŽ˜์ด์ง€๋ฅผ ์ƒˆ๋กœ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.
    ์ดํ›„, ๋‘ ํ”„๋กœ์„ธ์Šค๋Š” ๊ฐ์ž ๋…๋ฆฝ์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ํŽ˜์ด์ง€๋ฅผ ๊ฐ–๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

  • ํšจ์œจ์„ฑ:
    ๋ฉ”๋ชจ๋ฆฌ์™€ CPU ์ž์›์„ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    ์ดˆ๊ธฐ fork ์‹œ์ ์—์„œ๋Š” ํŽ˜์ด์ง€๋ฅผ ๋ณต์‚ฌํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ, ์†๋„๊ฐ€ ๋นจ๋ผ์ง‘๋‹ˆ๋‹ค.

2. ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ์˜ Copy-On-Write

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ๋„ COW๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์„ฑ์„ ์œ„ํ•ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๐Ÿšฅ

  • ์ดˆ๊ธฐ ๋ณต์‚ฌ ์ง€์—ฐ
    ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜์Œ์—๋Š” ๊ณต์œ ํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
    ๋ณต์‚ฌ๊ฐ€ ํ•„์š”ํ•œ ์‹œ์ ๊นŒ์ง€ ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์‚ฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  • ์‹ค์ œ ์“ฐ๊ธฐ ์‹œ์ ์—์„œ์˜ ๋ณต์‚ฌ
    ๋ฐ์ดํ„ฐ๊ฐ€ ์ˆ˜์ •๋  ๋•Œ๊นŒ์ง€ ๋ณต์‚ฌ๋ฅผ ์ง€์—ฐ์‹œํ‚ต๋‹ˆ๋‹ค.
    ์ˆ˜์ •์ด ๋ฐœ์ƒํ•  ๋•Œ๋งŒ ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.

3. ๋‘ ๊ฒฝ์šฐ์˜ ์œ ์‚ฌ์ ๊ณผ ์ฐจ์ด์ 

  • ์œ ์‚ฌ์ 
    ๋‘˜ ๋‹ค ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ์˜ ํšจ์œจ์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ง€์—ฐ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.
    ์‹ค์ œ ์“ฐ๊ธฐ ์ž‘์—…์ด ๋ฐœ์ƒํ•  ๋•Œ๋งŒ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค. (Lazy)
    ์ดˆ๊ธฐ์—๋Š” read-only ์ฝ๊ธฐ ์ „์šฉ์œผ๋กœ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•ฉ๋‹ˆ๋‹ค.

  • ์ฐจ์ด์ :

    • ์šฉ๋„:
      ๐Ÿ’ฟ ์šด์˜ ์ฒด์ œ์—์„œ๋Š” ์ฃผ๋กœ ํ”„๋กœ์„ธ์Šค ๊ฐ„ ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์„ฑ์„ ์œ„ํ•ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
      ๐Ÿฆœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ๋Š” ์ฃผ๋กœ ํฐ ๋ฐ์ดํ„ฐ์˜ ๋ณต์‚ฌ ์‹œ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์œ„ํ•ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
    • ๊ตฌํ˜„ ๋ ˆ๋ฒจ:
      ์šด์˜ ์ฒด์ œ์˜ COW๋Š” ํ•˜๋“œ์›จ์–ด ๋ ˆ๋ฒจ์˜ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”๊ณผ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์œ ๋‹›(MMU)์— ์˜ํ•ด ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค.
      ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ COW๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๋ ˆ๋ฒจ์—์„œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์™€ ๊ด€๋ จ๋œ ์ฐธ์กฐ ์นด์šดํŒ… ๋ฐ ๋ณต์‚ฌ ๋กœ์ง์„ ํ†ตํ•ด ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค.

๐Ÿฆข Copy-On-Write in Swift!

์Šค์œ„ํ”„ํŠธ์—์„œ์˜ Copy-On-Write(COW) ๊ธฐ๋ฒ•์€ ๊ฐ’ ํƒ€์ž…(value type)์ธ ๋ฐฐ์—ด(Array), ๋”•์…”๋„ˆ๋ฆฌ(Dictionary), ์„ธํŠธ(Set) ๋“ฑ์˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์—์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ๋ฒ•์€ ๋ฐฐ์—ด์„ ๋ณต์‚ฌํ•  ๋•Œ ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค.

์Šค์œ„ํ”„ํŠธ์—์„œ์˜ COW๋Š”
์ฐธ์กฐ ์นด์šดํŒ…(reference counting)๊ณผ
์“ฐ๊ธฐ์— ๋Œ€ํ•œ ๋ณต์‚ฌ(copy-on-write) ๋‘ ๊ฐ€์ง€ ํ•ต์‹ฌ ๊ฐœ๋…์„ ๋ฐ”ํƒ•์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

1. ์ฐธ์กฐ ์นด์šดํŒ… (Reference Counting)

  • ์ดˆ๊ธฐ ์ƒํƒœ ๋ฐฐ์—ด array1์„ ์ƒ์„ฑํ•˜๊ณ , ์ด๋ฅผ array2์— ํ• ๋‹นํ•˜๋ฉด ๋‘ ๋ฐฐ์—ด์€ ๊ฐ™์€ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค. ์ด ์ƒํƒœ์—์„œ ๋ฐฐ์—ด์˜ ์‹ค์ œ ๋ฐ์ดํ„ฐ๋Š” ๋™์ผํ•œ ๋ฉ”๋ชจ๋ฆฌ ๋ธ”๋ก์„ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค.
  • ์ฐธ์กฐ ์นด์šดํŠธ ์ฆ๊ฐ€ array1๊ณผ array2 ๋ชจ๋‘ ๋™์ผํ•œ ๋ฉ”๋ชจ๋ฆฌ ๋ธ”๋ก์„ ์ฐธ์กฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ฐธ์กฐ ์นด์šดํŠธ๋Š” 2๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
var array1: [Int] = [0, 1, 2, 3]
var array2 = array1

// ์ฐธ์กฐ ์นด์šดํŠธ๋Š” 2

2. ์“ฐ๊ธฐ์— ๋Œ€ํ•œ ๋ณต์‚ฌ (Copy-On-Write)

  • ์ˆ˜์ • ์‹œ์  array2์— ๋ณ€๊ฒฝ์ด ๋ฐœ์ƒํ•  ๋•Œ, ์Šค์œ„ํ”„ํŠธ๋Š” COW๋ฅผ ํ†ตํ•ด array2์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋  ๋•Œ๊นŒ์ง€ ๋™์ผํ•œ ๋ฉ”๋ชจ๋ฆฌ ๋ธ”๋ก์„ ์‚ฌ์šฉํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ array2๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด, ์Šค์œ„ํ”„ํŠธ๋Š” ์‹ค์ œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์‚ฌํ•˜์—ฌ ์ƒˆ๋กœ์šด ๋ฉ”๋ชจ๋ฆฌ ๋ธ”๋ก์„ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์—์„œ ์ฐธ์กฐ ์นด์šดํŠธ๋ฅผ ํ™•์ธํ•˜์—ฌ, ์ฐธ์กฐ ์นด์šดํŠธ๊ฐ€ 1 ์ด์ƒ์ผ ๊ฒฝ์šฐ์—๋งŒ ๋ณต์‚ฌ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
array2.append(4)

// ์ด ์‹œ์ ์—์„œ array2๋Š” ์ƒˆ๋กœ์šด ๋ฉ”๋ชจ๋ฆฌ ๋ธ”๋ก์„ ํ• ๋‹น๋ฐ›์Šต๋‹ˆ๋‹ค.
// ์ฐธ์กฐ ์นด์šดํŠธ๋Š” 1๋กœ ๊ฐ์†Œ (array2๊ฐ€ ์ƒˆ๋กœ์šด ๋ฉ”๋ชจ๋ฆฌ ๋ธ”๋ก์„ ๊ฐ€์ง€๊ธฐ ๋•Œ๋ฌธ)

์Šค์œ„ํ”„ํŠธ์—์„œ์˜ CoW์™€ ์ฐธ์กฐ

  • ์ดˆ๊ธฐ ์ƒํƒœ: array1๊ณผ array2๋Š” ๋™์ผํ•œ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ์ฐธ์กฐํ•˜๊ณ , ์ฐธ์กฐ ์นด์šดํŠธ๋Š” 2์ž…๋‹ˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ: array2์— ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ์ด ๋ฐœ์ƒํ•˜๋ฉด, ์Šค์œ„ํ”„ํŠธ๋Š” array2์˜ ์ƒˆ๋กœ์šด ๋ฉ”๋ชจ๋ฆฌ ๋ธ”๋ก์„ ํ• ๋‹นํ•˜์—ฌ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด array2๋Š” ์ƒˆ๋กœ์šด ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ๊ฐ€์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

โ˜ƒ๏ธ OS์˜ CoW์™€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ CoW ๋น„๊ต

OS์˜ CoW (์˜ˆ: fork ์‹œ์Šคํ…œ ์ฝœ)

  • ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ” ์—”ํŠธ๋ฆฌ(PTE) ๋ณต์‚ฌ: fork ์‹œ์Šคํ…œ ์ฝœ์€ ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค์˜ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ” ์—”ํŠธ๋ฆฌ๋ฅผ ์ž์‹ ํ”„๋กœ์„ธ์Šค์— ๋ณต์‚ฌํ•˜์—ฌ ๋‘˜ ๋‹ค ๊ฐ™์€ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ ํŽ˜์ด์ง€๋ฅผ ์ฐธ์กฐํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์ฝ๊ธฐ ์ „์šฉ์œผ๋กœ ์„ค์ •๋œ ์ด ํŽ˜์ด์ง€๋Š” ๋‘˜ ์ค‘ ํ•˜๋‚˜๊ฐ€ ์“ฐ๊ธฐ๋ฅผ ์‹œ๋„ํ•  ๋•Œ ๋ณต์‚ฌ๋ฉ๋‹ˆ๋‹ค.
  • ํŽ˜์ด์ง€ ํดํŠธ ์ฒ˜๋ฆฌ: ์“ฐ๊ธฐ ์‹œ๋„๊ฐ€ ์žˆ์„ ๋•Œ ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ , ํ•ด๋‹น ํŽ˜์ด์ง€๊ฐ€ ๋ณต์‚ฌ๋˜์–ด ๋…๋ฆฝ์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ CoW (์˜ˆ: ์Šค์œ„ํ”„ํŠธ)

  • ์ฐธ์กฐ ์นด์šดํŒ… ๋ฐฐ์—ด์ด๋‚˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์˜ ์ฐธ์กฐ ์นด์šดํŠธ๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ์ฐธ์กฐ๊ฐ€ ์žˆ์„ ๋•Œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด ์ƒˆ๋กœ์šด ๋ฉ”๋ชจ๋ฆฌ ๋ธ”๋ก์„ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ๋ณต์‚ฌ ์“ฐ๊ธฐ ์‹œ๋„๊ฐ€ ์žˆ์„ ๋•Œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ๋ณต์‚ฌํ•˜์—ฌ ๋…๋ฆฝ์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.


Lazy-Loading..?๐Ÿน


Copy-On-Write(COW)

  • ๋ชฉ์  ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ์˜ ํšจ์œจ์„ฑ ๊ทน๋Œ€ํ™”.
  • ์ž‘๋™ ๋ฐฉ์‹ ์ดˆ๊ธฐ์—๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์‚ฌํ•˜์ง€ ์•Š๊ณ  ์ฐธ์กฐ๋ฅผ ๊ณต์œ ํ•˜๋‹ค๊ฐ€, ์‹ค์ œ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋Š” ์‹œ์ ์— ๋ณต์‚ฌ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ ์‚ฌ๋ก€ ์šด์˜ ์ฒด์ œ์˜ fork ์‹œ์Šคํ…œ ์ฝœ, ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ๊ฐ’ ํƒ€์ž… ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ(์˜ˆ: ์Šค์œ„ํ”„ํŠธ์˜ ๋ฐฐ์—ด).

Lazy Loading

  • ๋ชฉ์  ์„ฑ๋Šฅ ์ตœ์ ํ™” ๋ฐ ์ดˆ๊ธฐํ™” ์ง€์—ฐ์„ ํ†ตํ•œ ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ ์ตœ์†Œํ™”.
  • ์ž‘๋™ ๋ฐฉ์‹ ์‹ค์ œ๋กœ ํ•„์š”ํ•ด์งˆ ๋•Œ๊นŒ์ง€ ๋ฆฌ์†Œ์Šค๋ฅผ ๋กœ๋“œํ•˜์ง€ ์•Š๊ณ  ๋Œ€๊ธฐํ•˜๋‹ค๊ฐ€, ํ•ด๋‹น ๋ฆฌ์†Œ์Šค๊ฐ€ ์ฒ˜์Œ ํ•„์š”ํ•ด์ง€๋Š” ์‹œ์ ์— ๋กœ๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ ์‚ฌ๋ก€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ฐ์ดํ„ฐ ํŽ˜์น˜, ๊ฐ์ฒด ์ดˆ๊ธฐํ™”, ์ด๋ฏธ์ง€ ๋กœ๋”ฉ ๋“ฑ.

COW์™€ Lazy Loading์˜ ์œ ์‚ฌ์ 

  • ์ง€์—ฐ๋œ ์ž‘์—… ์ˆ˜ํ–‰ ๋‘˜ ๋‹ค ์ดˆ๊ธฐํ™” ์‹œ์ ์— ๋ชจ๋“  ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๊ณ , ์‹ค์ œ๋กœ ํ•„์š”ํ•ด์ง€๋Š” ์‹œ์ ๊นŒ์ง€ ์ž‘์—…์„ ์ง€์—ฐ์‹œํ‚ต๋‹ˆ๋‹ค.
  • ํšจ์œจ์ ์ธ ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ ๋‘˜ ๋‹ค ๋ฆฌ์†Œ์Šค๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ๋‚ญ๋น„๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

COW์™€ Lazy Loading์˜ ์ฐจ์ด์ 

  • ์ ์šฉ ๋ฒ”์œ„
    • COW๋Š” ์ฃผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์„ฑ ๋ฐ ๋ฐ์ดํ„ฐ ๋ณต์‚ฌ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
    • Lazy Loading์€ ์ฃผ๋กœ ์„ฑ๋Šฅ ์ตœ์ ํ™” ๋ฐ ์ดˆ๊ธฐํ™” ์ง€์—ฐ์„ ํ†ตํ•ด ๋ฆฌ์†Œ์Šค๋ฅผ ์ ˆ์•ฝํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • ์ž‘์—…์˜ ์ข…๋ฅ˜
    • COW๋Š” ๋ฐ์ดํ„ฐ์˜ ์‹ค์ œ ๋ณต์‚ฌ ์ž‘์—…์„ ์ง€์—ฐ์‹œํ‚ต๋‹ˆ๋‹ค.
    • Lazy Loading์€ ๋ฐ์ดํ„ฐ๋‚˜ ๋ฆฌ์†Œ์Šค์˜ ๋กœ๋”ฉ ๋˜๋Š” ์ดˆ๊ธฐํ™”๋ฅผ ์ง€์—ฐ์‹œํ‚ต๋‹ˆ๋‹ค.

COW์™€ Lazy Loading์€ ๋ชจ๋‘ ํ•„์š”ํ•  ๋•Œ๊นŒ์ง€ ์ž‘์—…(๋ณต์‚ฌ,์ดˆ๊ธฐํ™”)์„ ์ง€์—ฐ์‹œ์ผœ ๋ฆฌ์†Œ์Šค๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ์ „๋žต์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ COW๋Š” ์ฃผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ๋ณต์‚ฌ ์ตœ์ ํ™”์™€ ๊ด€๋ จ์ด ์žˆ๊ณ .
Lazy Loading์€ ๋ฆฌ์†Œ์Šค ์ดˆ๊ธฐํ™” ๋ฐ ๋กœ๋”ฉ ์ตœ์ ํ™”์™€ ๊ด€๋ จ์ด ์žˆ๋‹ค๋Š” ์ ์—์„œ ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค!