## ๐Ÿ“Œ Brief Summary Bundle Size Optimization(๋ฒˆ๋“ค ํฌ๊ธฐ ์ตœ์ ํ™”)์€ ํด๋ผ์ด์–ธํŠธ๋กœ ์ „์†ก๋˜๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ž์‚ฐ์˜ ๋ฌผ๋ฆฌ์  ์šฉ๋Ÿ‰์„ ์ตœ์†Œํ™”ํ•˜์—ฌ ์ดˆ๊ธฐ ๋กœ๋”ฉ ์„ฑ๋Šฅ(LCP)๊ณผ ๋Ÿฐํƒ€์ž„ ๋ฐ˜์‘์„ฑ(TBT/INP)์„ ๊ฐœ์„ ํ•˜๋Š” ๊ธฐ์ˆ ์  ๊ณต์ •์ด๋‹ค. ์ฝ”๋“œ ๋ถ„ํ• (Code Splitting), ์ง€์—ฐ ๋กœ๋”ฉ(Lazy Loading), ํŠธ๋ฆฌ ์‰์ดํ‚น ๋“ฑ์„ ํ†ตํ•ด ๋ธŒ๋ผ์šฐ์ €์˜ ํŒŒ์‹ฑ ๋ฐ ์‹คํ–‰ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ๊ทผ๋ณธ์ ์œผ๋กœ ์ค„์ด๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•œ๋‹ค. ## ๐Ÿ“– Core Content 1. **๋ฒˆ๋“ค ํŒฝ์ฐฝ์˜ ์›์ธ ์ง„๋‹จ** - ๋‹จ์ผ ์—”ํŠธ๋ฆฌ ํฌ์ธํŠธ(`index.js`)์— ๋ชจ๋“  ์ข…์†์„ฑ(React, heavy libraries)์ด ๊ฒฐํ•ฉ๋œ ๊ตฌ์กฐ. - ๋ฌด๋ถ„๋ณ„ํ•œ Eager Import์™€ ๊ฑฐ๋Œ€ํ•œ ์ „์ด์  ์ข…์†์„ฑ(Transitive Dependencies)์œผ๋กœ ์ธํ•œ ๋ฉ”์ธ ์Šค๋ ˆ๋“œ ์ ์œ ์œจ ์ƒ์Šน. 2. **์ฝ”๋“œ ๋ถ„ํ•  ๋ฐ ์ง€์—ฐ ๋กœ๋”ฉ (Strategic Splitting)** - `React.lazy()`์™€ ``๋ฅผ ํ™œ์šฉํ•˜์—ฌ ํŠน์ • ๋ผ์šฐํŠธ๋‚˜ ๋ฌด๊ฑฐ์šด UI ์š”์†Œ(์ฐจํŠธ, ๋ชจ๋‹ฌ ๋“ฑ)๋ฅผ ๋…๋ฆฝ์ ์ธ ์ฒญํฌ(Chunk)๋กœ ๋ถ„๋ฆฌ. - ์‚ฌ์šฉ์ž๊ฐ€ ํ•„์š”๋กœ ํ•˜๋Š” ์‹œ์ ์—๋งŒ ์ฝ”๋“œ๋ฅผ ๋กœ๋“œํ•˜์—ฌ ์ดˆ๊ธฐ ๋ฒˆ๋“ค ํŽ˜์ด๋กœ๋“œ๋ฅผ ํš๊ธฐ์ ์œผ๋กœ ์ ˆ๊ฐ. 3. **๋ฒค๋” ๋ถ„ํ•  ์ „๋žต (Vendor Splitting)** - Vite/Rollup์˜ `manualChunks` ์„ค์ •์„ ํ†ตํ•ด ์ž์ฃผ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š” ํ•ต์‹ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(React ๋“ฑ)๋ฅผ ๋ณ„๋„์˜ ์ฒญํฌ๋กœ ๊ณ ์ •. - ๋ธŒ๋ผ์šฐ์ € ์บ์‹ฑ ํšจ์œจ์„ ๊ทน๋Œ€ํ™”ํ•˜์—ฌ ์žฌ๋ฐฉ๋ฌธ์ž์˜ ๋กœ๋”ฉ ์†๋„๋ฅผ ๊ฐ€์†ํ™”. 4. **์„œ๋ฒ„ ์ปดํฌ๋„ŒํŠธ(RSC)๋ฅผ ํ†ตํ•œ ๊ทผ๋ณธ์  ์ ˆ๊ฐ** - ์ƒํ˜ธ์ž‘์šฉ์ด ์—†๋Š” ์ •์  UI๋ฅผ ์„œ๋ฒ„์—์„œ ๋ Œ๋”๋งํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ๋กœ ์ „์†ก๋˜๋Š” JS ํŽ˜์ด๋กœ๋“œ๋ฅผ '0'์œผ๋กœ ์ˆ˜๋ ด์‹œํ‚ค๋Š” ์•„ํ‚คํ…์ฒ˜ ์ ์šฉ. 5. **๋ถ„์„ ๋ฐ ์ •์ œ ๋„๊ตฌ ํ™œ์šฉ** - `rollup-plugin-visualizer` ๋˜๋Š” Webpack Bundle Analyzer๋ฅผ ํ†ตํ•ด ๋ฒˆ๋“ค ๋‚ด๋ถ€์˜ 'Bloat'์„ ์‹œ๊ฐ์ ์œผ๋กœ ์‹๋ณ„ํ•˜๊ณ  ์ œ๊ฑฐ. ## โš–๏ธ Trade-offs & Caveats - **์›Œํ„ฐํด(Waterfall) ํ˜„์ƒ**: ์ง€์—ฐ ๋กœ๋”ฉ์„ ๋‚จ๋ฐœํ•  ๊ฒฝ์šฐ ์ฒญํฌ ๊ฐ„์˜ ์˜์กด์„ฑ์œผ๋กœ ์ธํ•ด ์ˆœ์ฐจ์  ๋กœ๋”ฉ ์ง€์—ฐ์ด ๋ฐœ์ƒํ•˜์—ฌ ์ฒด๊ฐ ์„ฑ๋Šฅ์ด ์˜คํžˆ๋ ค ์ €ํ•˜๋  ์ˆ˜ ์žˆ๋‹ค. - **๋„คํŠธ์›Œํฌ ์š”์ฒญ ์ˆ˜ ์ฆ๊ฐ€**: ๋ฒˆ๋“ค์„ ๋„ˆ๋ฌด ์ž‘๊ฒŒ ์ชผ๊ฐœ๋ฉด HTTP ์š”์ฒญ ์ˆ˜๊ฐ€ ๊ธ‰์ฆํ•˜์—ฌ ๋„คํŠธ์›Œํฌ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ ์ ˆํ•œ ์ฒญํฌ ์‚ฌ์ด์ฆˆ(์˜ˆ: 30KB~100KB) ์œ ์ง€๊ฐ€ ํ•„์š”ํ•˜๋‹ค. - **์บ์‹œ ๋ฌดํšจํ™” ๊ด€๋ฆฌ**: ์ฒญํฌ ๋ถ„ํ•  ์ „๋žต์ด ์ž˜๋ชป๋  ๊ฒฝ์šฐ ์ž‘์€ ์ฝ”๋“œ ์ˆ˜์ •์—๋„ ๋ชจ๋“  ๋ฒค๋” ์ฒญํฌ์˜ ํ•ด์‹œ๊ฐ€ ๋ณ€๊ฒฝ๋˜์–ด ์บ์‹œ ํšจ์œจ์ด ๋–จ์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค. ## ๐Ÿ”— Knowledge Connections ### Related Concepts (Auto-Linked) * [[Code Splitting]] * [[Core_Web_Vitals]] * [[Hydration]] * [[Index]] * [[Lazy Loading]] * [[Optimization]] * [[React]] * [[Research]] * [[Rollup]] ### Related Concepts - **Code Splitting**: ๋ฒˆ๋“ค์„ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ๋ถ„๋ฆฌํ•˜๋Š” ๊ตฌํ˜„ ํŒจํ„ด (๊ด€๊ณ„: ์‹ค์ฒœ ๋ฐฉ๋ฒ•) - **Core Web Vitals**: ๋ฒˆ๋“ค ์ตœ์ ํ™”์˜ ์„ฑ๊ณต ์—ฌ๋ถ€๋ฅผ ์ธก์ •ํ•˜๋Š” ์ •๋Ÿ‰์  ์ง€ํ‘œ (๊ด€๊ณ„: ์„ฑ๋Šฅ ํ‰๊ฐ€) - **Hydration**: ๋ฒˆ๋“ค ํฌ๊ธฐ๊ฐ€ ํด์ˆ˜๋ก ์ง์ ‘์ ์œผ๋กœ ์ง€์—ฐ๋˜๋Š” ํด๋ผ์ด์–ธํŠธ ํ™œ์„ฑํ™” ๊ณผ์ • (๊ด€๊ณ„: ์ง์ ‘ ์˜ํ–ฅ) ### Deeper Research Questions 1. Vite์˜ `manualChunks` ์„ค์ • ์‹œ ๋ณ€๋™ ์ฃผ๊ธฐ๊ฐ€ ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์„ ์–ด๋–ป๊ฒŒ ๊ทธ๋ฃนํ™”ํ•˜๋Š” ๊ฒƒ์ด ์บ์‹œ ํžˆํŠธ์œจ์— ๊ฐ€์žฅ ์œ ๋ฆฌํ•œ๊ฐ€? 2. `React.lazy`๋ฅผ ๋น„๋™๊ธฐ ๋ฐ์ดํ„ฐ ํŽ˜์นญ ๋กœ์ง๊ณผ ๊ฒฐํ•ฉํ•  ๋•Œ ๋ ˆ์ดํ„ด์‹œ๋ฅผ ์ตœ์†Œํ™”ํ•˜๋Š” ํ”„๋ฆฌํŽ˜์นญ(Prefetching) ์ „๋žต์€? 3. ํŠธ๋ฆฌ ์‰์ดํ‚น์ด ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” CommonJS ๊ธฐ๋ฐ˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ESM ํ™˜๊ฒฝ์—์„œ ์–ด๋–ป๊ฒŒ ํšจ์œจ์ ์œผ๋กœ ๊ฒฉ๋ฆฌํ•  ๊ฒƒ์ธ๊ฐ€? 4. ์„œ๋ฒ„ ์ปดํฌ๋„ŒํŠธ ํ™˜๊ฒฝ์—์„œ ํด๋ผ์ด์–ธํŠธ ๋ฒˆ๋“ค์— ์˜๋„์น˜ ์•Š๊ฒŒ ํฌํ•จ๋˜๋Š” ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๋กœ์ง์„ ์–ด๋–ป๊ฒŒ ์ •์ ์œผ๋กœ ๊ฐ์ง€ํ•  ๊ฒƒ์ธ๊ฐ€? 5. ๋ฒˆ๋“ค ์••์ถ• ๊ธฐ๋ฒ•(Gzip vs Brotli)๊ณผ ๋ฒˆ๋“ค ํฌ๊ธฐ ์ตœ์ ํ™” ์‚ฌ์ด์˜ ์‹ค์ œ ์‚ฌ์šฉ์ž ๋กœ๋”ฉ ์‹œ๊ฐ„ ์ƒ๊ด€๊ด€๊ณ„๋Š”? ### Practical Application Contexts - **Vite Configuration**: `vite.config.ts`์—์„œ Rollup ์˜ต์…˜์„ ์กฐ์ •ํ•˜์—ฌ ๋ฒค๋” ์ฒญํฌ ๋ถ„๋ฆฌ. - **Performance Budgeting**: CI/CD ๋‹จ๊ณ„์—์„œ ํŠน์ • ๋ฒˆ๋“ค ์‚ฌ์ด์ฆˆ ์ดˆ๊ณผ ์‹œ ๋นŒ๋“œ๋ฅผ ์‹คํŒจํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ์„ฑ๋Šฅ ์˜ˆ์‚ฐ ์„ค์ •. ### Adjacent Topics - **Brotli / Gzip Compression** - **Tree Shaking & ES Modules** - **HTTP/2 & HTTP/3 Multi-plexing**