2024-04-05.md

๐Ÿก

DIL: ๋ชจ๋˜ ๋ฆฌ์•กํŠธ ๋”ฅ ๋‹ค์ด๋ธŒ, 5์ฃผ์ฐจ-5

์Šคํ„ฐ๋””: ์›”๊ฐ„ CS, https://github.com/monthly-cs/2024-03-modern-react-deep-dive
์˜ค๋Š˜ ์ง„ํ–‰: ๊ฐœ์ธ๊ณต๋ถ€


DIL-week5-5_2024-04-05

| DIL ์ฃผ์ฐจ | ๋ฒ”์œ„ | ๋‚ด์šฉ | ์˜ค๋Š˜์ฐจ ์ง„๋„ | | -------- | ---- | -------------------------------------------------- | ----------- | | 5์ฃผ์ฐจ | 9์žฅ | ๋ชจ๋˜ ๋ฆฌ์•กํŠธ ๊ฐœ๋ฐœ ๋„๊ตฌ๋กœ ๊ฐœ๋ฐœ ๋ฐ ๋ฐฐํฌ ํ™˜๊ฒฝ ๊ตฌ์ถ•ํ•˜๊ธฐ | 566p~616p |

์˜ค๋Š˜ ์ฝ์€ ๋‚ด์šฉ์„ markdown์œผ๋กœ ๊ฐ„๋‹จํžˆ ๋ฉ”๋ชจ
์ฝ์€ ์‹œ๊ฐ„: 9์‹œ~11์‹œ


๋ชจ๋˜ ๋ฆฌ์•กํŠธ ๊ฐœ๋ฐœ ๋„๊ตฌ: ๊นƒํ—ˆ๋ธŒ 100% ํ™œ์šฉํ•˜๊ธฐ

package.json์˜ dependencies

semantic versioning ์œ ์˜์  ๋ฒ„์ „

  • ์ฃผ.๋ถ€.์ˆ˜

| version | ๋ฒ„์ „ | ๋‚ด์šฉ | | ------- | ---- | --------------------------------------- | | Major | ์ฃผ | ๊ธฐ์กด ๋ฒ„์ „๊ณผ ํ˜ธํ™˜๋˜์ง€ ์•Š๊ฒŒ API๊ฐ€ ๋ฐ”๋€œ | | Minor | ๋ถ€ | ๊ธฐ์กด ๋ฒ„์ „๊ณผ ํ˜ธํ™˜๋˜๋ฉด์„œ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ์ถ”๊ฐ€ | | Patch | ์ˆ˜ | ๊ธฐ์กด ๋ฒ„์ „๊ณผ ํ˜ธํ™˜๋˜๋ฉด์„œ ๋ฒ„๊ทธ๋ฅผ ์ˆ˜์ • |

  • ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์žˆ์œผ๋ฉด ๋ฐ˜๋“œ์‹œ ๋ฒ„์ „์—…
  • Major 0์€ ์ดˆ๊ธฐ ๊ฐœ๋ฐœ ex) recoil
  • Patch๋Š” ์ด์ „ ๋ฒ„์ „ API์™€ ํ˜ธํ™˜๋˜๋Š” ๋ฒ„๊ทธ ์ˆ˜์ •์˜ ๊ฒฝ์šฐ์—๋งŒ ์˜ฌ๋ฆฐ๋‹ค (๋‚ด๋ถ€ ๊ธฐ๋Šฅ์„ ๊ณ ์นจ)
    • ๋ฒ„๊ทธ ์ˆ˜์ •์ด API ์ŠคํŽ™์„ ๋ณ€๊ฒฝ์„ ๋™๋ฐ˜ํ•œ๋‹ค๋ฉด, Major๋ฅผ ์˜ฌ๋ฆฐ๋‹ค
    • Major๋ฅผ ์˜ฌ๋ฆฌ๊ธฐ ์ข€ ๊ทธ๋ ‡๋‹ค? API๋ฅผ deprecated ์ฒ˜๋ฆฌ ํ›„, ์ƒˆ API๋ฅผ ๋งŒ๋“ค์–ด ๋ถ€ ๋ฒ„์ „์„ ์˜ฌ๋ฆฌ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค

npm ๋ฒ„์ „ ๊ทœ์น™ (์œ ์˜์ „ ๋ฒ„์ „ ๊ธฐ๋ฐ˜)

| ๋ฒ„์ „ | ๋‚ด์šฉ | ํ•ด๋‹น | | ------------- | ---------------------------------- | --------------------- | | react@16.0.0 | ์ •ํ™•ํžˆ ํ•ด๋‹น ๋ฒ„์ „๋งŒ ์˜์กด | 16.0.0 | | react@^16.0.0 | 16.0.0๊ณผ ํ˜ธํ™˜๋˜๋Š” ๋ฒ„์ „ | 16.0.0๋ถ€ํ„ฐ 17.0.0๋ฏธ๋งŒ | | react@~16.0.0 | ํŒจ์น˜ ๋ฒ„์ „์— ๋Œ€ํ•ด์„œ๋งŒ ํ˜ธํ™˜๋˜๋Š” ๋ฒ„์ „ | 16.0.0~16.1.0 ๋ฏธ๋งŒ |

  • ์˜ˆ์‹œ) colors.js ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ: 1.4.0์—์„œ 1.4.1๋กœ patch ์˜ฌ๋ฆฌ๋Š” ๊ณผ์ •์—์„œ ํ˜ธํ™˜์•ˆ๋˜๋Š” ํŒจํ‚ค์ง€๋ฅผ ๋ฐฐํฌํ•˜๋Š” ๋ถˆ์ƒ์‚ฌ

dependencies

  • package.json์˜ dependencies: ์ž์‹  ์™ธ์˜ npm ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ •์˜

| ๋ฒ„์ „ | ๋‚ด์šฉ | | | ---------------- | ------------------------------------------------------------- | --------------------------------------------------------------------- | | dependencies | npm install ํŒจํ‚ค์ง€๋ช… | ํ”„๋กœ์ ํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ๊ผญ ํ•„์š”ํ•œ ํŒจํ‚ค์ง€ | | devDependencies | npm install ํŒจํ‚ค์ง€๋ช… --save-dev | ํ”„๋กœ์ ํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐ๋Š” ํ•„์š”ํ•˜์ง€ ์•Š์ง€๋งŒ, ๊ฐœ๋ฐœ ๋‹จ๊ณ„์—์„œ ํ•„์š”ํ•œ ํŒจํ‚ค์ง€ | | peerDependencies | {โ€peerDependenciesโ€:{โ€reactโ€:โ€>=16.8โ€, โ€react-domโ€:โ€>=16.8โ€}} | ์„œ๋น„์Šค๋ณด๋‹ค๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ํŒจํ‚ค์ง€์— ์ž์ฃผ ์“ฐ์ด๋Š” ๋‹จ์œ„ |

  • dev dependencies๋ฅผ ๊ตฌ๋ถ„ํ•ด์•ผ ํ• ๊นŒ?
    1. dependencies์™€ devDependecies ๋ชจ๋‘ node_modules์— ์„ค์น˜ํ•œ๋‹ค. ๋ฒˆ๋“ค๋Ÿฌ๊ฐ€ ์ฝ”๋“œ์˜ ์‹œ์ž‘์ ๋ถ€ํ„ฐ ์ข…์†์„ฑ ํŒ๋‹จ โ†’ ํ•„์š”ํ•œ ํŒŒ์ผ์„ ๋นŒ๋“œํ•ด์„œ ๊ฒฐ๊ณผ๋ฌผ์„ ๋งŒ๋“ฆ
      • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ตœ์ข… ๊ฒฐ๊ณผ๋ฌผ์—๋Š” ์˜ํ–ฅ์ด ์—†๋‹ค
    2. ๋ณต์žกํ•ด์ง„ ๊ฐœ๋ฐœ ํŒŒ์ดํ”„๋ผ์ธ
      • ์˜›~๋‚  โ‡’ npm install --only=production์œผ๋กœ ํ•„์š”ํ•œ ํŒจํ‚ค์ง€ ๋น ๋ฅด๊ฒŒ ์„ค์น˜
      • ์ง€๊ธˆ ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด? typescript์˜ @types/๊ฐ™์€ ํƒ€์ดํ•‘ ํŒŒ์ผ๋„ devDependencies์— ์„ ์–ธ๋˜์–ด tsc๊ฐ€ ์‹คํ–‰ ์•ˆ๋จ
  • npm์— ์—…๋กœ๋“œํ•  ํŒจํ‚ค์ง€๋ฅผ ๊ฐœ๋ฐœํ•œ๋‹ค๋ฉด?
    • dependencies์— ์žˆ๋Š” ํŒจํ‚ค์ง€๋“ค๋งŒ ์ตœ์ข… ํŒจํ‚ค์ง€์— ํฌํ•จ๋˜๊ฒŒ ํ•ด์•ผ ํ•จ
    • ํ–ฅํ›„ ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์˜ ์˜์กด์„ฑ์„ ์ฝ๊ฑฐ๋‚˜ ์ถœ์‹œํ•˜๊ธฐ ์œ„ํ•ด ์ฐจ์ด๋ฅผ ์•Œ์•„์•ผํ•จ
  • ๊ฐœ๋ฐœ ์ทจ์•ฝ์ 
    • critical, high, moderate, low
    • react ํŒ€ โ†’ false positive์— ๋Œ€ํ•ด ๋Œ€์‘ํ•˜์ง€ ์•Š๊ฒ ๋‹ค
      • ์ทจ์•ฝ์ ์ด ์žˆ์œผ๋‚˜, ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ฑฐ๋‚˜, ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค๊ณ  ์ž์ฒด์ ์œผ๋กœ ํŒ๋‹จํ•œ ์ทจ์•ฝ์ ์€ ๊ณต์‹์ ์œผ๋กœ ๋Œ€์‘ํ•˜์ง€ ์•Š๊ฒ ๋‹ค.
  • ์˜์กด์„ฑ ๊ด€๋ จ ์ด์Šˆ๋ฅผ ๋ฐฉ์ง€ํ•˜๋Š” ๋ฐฉ๋ฒ•์€?
    • ๋‚ด์žฌํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“ˆ์„ ๋‚ด์žฌํ™”ํ•˜๊ณ , ์˜์กด์„ฑ์„ ์ตœ์†Œํ•œ์œผ๋กœ ์œ ์ง€ํ•œ๋‹ค
      • ์œ„ํ˜‘์— ๋…ธ์ถœ๋  ํ™•๋ฅ ์„ ๋‚ฎ์ถ˜๋‹ค
      • ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์—์„œ ์–ด๋ ต๋‹ค.
    • ํ™œ๋ฐœํ•˜๊ฒŒ ์œ ์ง€๋ณด์ˆ˜๋˜๋Š” ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
      • ์œ ์ง€๋ณด์ˆ˜ ์ฃผ์ฒด๊ฐ€ ์—†๋‹ค๋ฉด? ์ ์ฐจ ์˜์กด์„ฑ ๋ฌธ์ œ๊ฐ€ ๋‹น๋ฉดํ•˜๊ฒŒ ๋œ๋‹ค.
  • Dependabot๊ณผ npm์˜ overrides๋ฅผ ํ™œ์šฉํ•ด์„œ ๋„์›€์„ ๋ฐ›๊ธฐ
  • Github์€ de facto ์ €์žฅ์†Œ: Dependabot, Copilot, Github Pages, Private, Enterprise

๋ฆฌ์•กํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌํ•˜๊ธฐ, SaaS 3๊ฐ€์ง€

  • ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค
    • Amazon Web Service
    • Google Cloud Platform
    • Microsoft Azure

๋ฆฌ์•กํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ

| SaaS | ํŠน์ง• | ์ œ๊ณต | ๊ณตํ™ˆ | | ------------ | ----------------------------- | ------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------- | | Netlitfy | ๋ฃจํŠธ์— netlify.toml ํŒŒ์ผ ์ƒ์„ฑ | ๋ฐฐํฌ ์•Œ๋ฆผ, ์„œ๋น„์Šค ํ†ตํ•ฉ Integrations (Sentry, Aloglia, Redis), ์„œ๋ฒ„๋ฆฌ์Šค ํ•จ์ˆ˜, Identity ์ธ์ฆ | https://www.netlify.com/pricing/ | | Vercel | preset ์„ค์ • | ์•Œ๋ฆผ, ์„œ๋ฒ„๋ฆฌ์Šค ํ•จ์ˆ˜, ํ…œํ”Œ๋ฆฟ ์ง€์›๐Ÿค” | https://vercel.com/ | | DigitalOcean | ๋‹ค์–‘ํ•œ ํด๋ผ์šฐ๋“œ ์ปดํ“จํŒ… ์„œ๋น„์Šค | ์•Œ๋ฆผ, ์ปจํ…Œ์ด๋„ˆ ์ง์ ‘ ์ ‘๊ทผ, ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค(์ปจํ…Œ์ด๋„ˆ ์ œ๊ณต ์œ„์ฃผ), ๋„๋ฉ”์ธ ์—ฐ๊ฒฐ | https://www.digitalocean.com/, ๋ธ”๋กœ๊ทธ https://www.digitalocean.com/blog |

  • TOML์€? โ€œTomโ€™s Obvious, Minimal Languageโ€, YAML ์œ ์‚ฌ
    • https://toml.io/en/
      [[plugins]];
      package = "@netlify/plugin-nextjs";
      
  • ์‰ฝ๊ณ  ๋น ๋ฅธ ๋ฐฐํฌ โ‡’ MVP, ์ œํ•œ์ ์ธ ํŠธ๋ž˜ํ”ฝ์˜ ์‚ฌ์ดํŠธ