์๋ฐ์คํฌ๋ฆฝํธ ํ๋ ์์ํฌ ์ฑ๋ฅ์ ์ข ํฉ์ ์ผ๋ก ๋ถ์ํฉ๋๋ค. ๋ฒ๋ค ํฌ๊ธฐ์ ๊ธฐ๋ฅ์ ๋น๊ตํ์ฌ ํ๋ก์ ํธ์ ๊ฐ์ฅ ์ ํฉํ ๋๊ตฌ๋ฅผ ์ ํํ ์ ์๋๋ก ๋์๋๋ฆฝ๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ ํ๋ ์์ํฌ ์ฑ๋ฅ: ๋ฒ๋ค ํฌ๊ธฐ vs. ๊ธฐ๋ฅ ๋น๊ต
์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ํฉํ ์๋ฐ์คํฌ๋ฆฝํธ ํ๋ ์์ํฌ๋ฅผ ์ ํํ๋ ๊ฒ์ ์ฑ๋ฅ, ํ์ฅ์ฑ, ์ ์ง๋ณด์์ฑ์ ํฐ ์ํฅ์ ๋ฏธ์น ์ ์๋ ์ค์ํ ๊ฒฐ์ ์ ๋๋ค. ์๋ง์ ์ต์ ์ด ์กด์ฌํ๊ธฐ ๋๋ฌธ์, ๊ฐ๋ฐ์๋ค์ ์ข ์ข ํ๋ก์ ํธ์ ํน์ ์๊ตฌ์ฌํญ์ ๊ฐ์ฅ ์ ํฉํ ํ๋ ์์ํฌ๋ฅผ ์ ํํ๋ ๋ฐ ์ด๋ ค์์ ๊ฒช์ต๋๋ค. ์ด ๊ธ์์๋ ์ธ๊ธฐ ์๋ ์๋ฐ์คํฌ๋ฆฝํธ ํ๋ ์์ํฌ์ ๋ฒ๋ค ํฌ๊ธฐ์ ๊ธฐ๋ฅ ์ธํธ๋ฅผ ๋น๊ตํ์ฌ ์ ๋ณด์ ์ ๊ฐํ ์ ํ์ ํ ์ ์๋๋ก ์ข ํฉ์ ์ธ ๋ถ์์ ์ ๊ณตํฉ๋๋ค.
์ฑ๋ฅ์ ์ค์์ฑ ์ดํดํ๊ธฐ
์ฑ๋ฅ์ ์ฌ์ฉ์ ๊ฒฝํ์ ํต์ฌ ์์์ ๋๋ค. ๋ก๋ฉ์ด ๋๋ฆฌ๊ฑฐ๋ ๋ฐ์์ด ์๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉ์์ ๋ถ๋ง, ์ฐธ์ฌ๋ ๊ฐ์, ๊ทธ๋ฆฌ๊ณ ๊ถ๊ทน์ ์ผ๋ก๋ ๋น์ฆ๋์ค ์์ค๋ก ์ด์ด์ง ์ ์์ต๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ ํ๋ ์์ํฌ๋ ํนํ ๋จ์ผ ํ์ด์ง ์ ํ๋ฆฌ์ผ์ด์ (SPA)๊ณผ ํ๋ก๊ทธ๋ ์๋ธ ์น ์ฑ(PWA)์ ๋งฅ๋ฝ์์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ๋ฐ์ ์ธ ์ฑ๋ฅ์ ๊ฒฐ์ ํ๋ ๋ฐ ์ค์ํ ์ญํ ์ ํฉ๋๋ค.
๊ณ ๋ คํด์ผ ํ ์ฃผ์ ์ฑ๋ฅ ์งํ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ์ต์ด ์ฝํ ์ธ ํ ํ์ธํธ(FCP): ํ๋ฉด์ ์ฒซ ๋ฒ์งธ ์ฝํ ์ธ ๊ฐ ๋ํ๋๊ธฐ๊น์ง ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ๋๋ค.
- ์ต๋ ์ฝํ ์ธ ํ ํ์ธํธ(LCP): ๊ฐ์ฅ ํฐ ์ฝํ ์ธ ์์๊ฐ ํ๋ฉด์ ํ์๋๊ธฐ๊น์ง ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ๋๋ค.
- ์ํธ์์ฉ๊น์ง์ ์๊ฐ(TTI): ์ ํ๋ฆฌ์ผ์ด์ ์ด ์์ ํ ์ํธ์์ฉ ๊ฐ๋ฅํด์ง๊ธฐ๊น์ง ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ๋๋ค.
- ์ด ์ฐจ๋จ ์๊ฐ(TBT): ๋ฉ์ธ ์ค๋ ๋๊ฐ ์๋ฐ์คํฌ๋ฆฝํธ ์คํ์ผ๋ก ์ธํด ์ฐจ๋จ๋ ์ด ์๊ฐ์ ๋๋ค.
๋ฒ๋ค ํฌ๊ธฐ๋ฅผ ์ต์ํํ๊ณ ์๋ฐ์คํฌ๋ฆฝํธ ์คํ์ ์ต์ ํํ๋ ๊ฒ์ ์ด๋ฌํ ์งํ๋ฅผ ๊ฐ์ ํ๊ณ ์ํํ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ๋ ๋ฐ ํ์์ ์ ๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ ํ๋ ์์ํฌ ์ฑ๋ฅ์ ์ํฅ์ ๋ฏธ์น๋ ์์ธ
๋ช ๊ฐ์ง ์์ธ์ด ์๋ฐ์คํฌ๋ฆฝํธ ํ๋ ์์ํฌ์ ์ฑ๋ฅ์ ๊ธฐ์ฌํฉ๋๋ค:
- ๋ฒ๋ค ํฌ๊ธฐ: ๋ธ๋ผ์ฐ์ ๊ฐ ๋ค์ด๋ก๋ํ๊ณ ํ์ฑํด์ผ ํ๋ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ ํฌ๊ธฐ์ ๋๋ค. ๋ฒ๋ค ํฌ๊ธฐ๊ฐ ์์์๋ก ์ผ๋ฐ์ ์ผ๋ก ๋ก๋ฉ ์๊ฐ์ด ๋นจ๋ผ์ง๋๋ค.
- ๋ ๋๋ง ์ ๋ต: ํ๋ ์์ํฌ๊ฐ DOM(๋ฌธ์ ๊ฐ์ฒด ๋ชจ๋ธ)์ ์ ๋ฐ์ดํธํ๋ ๋ฐฉ์์ ๋๋ค. ๊ฐ์ DOM ๋น๊ต(diffing)์ ๊ฐ์ ํจ์จ์ ์ธ ๋ ๋๋ง ์ ๋ต์ DOM ์กฐ์ ํ์๋ฅผ ์ต์ํํ๊ณ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
- ์ฝ๋ ์ต์ ํ: ํธ๋ฆฌ ์์ดํน(์ฌ์ฉํ์ง ์๋ ์ฝ๋ ์ ๊ฑฐ) ๋ฐ ์ฝ๋ ๋ถํ (์ ํ๋ฆฌ์ผ์ด์ ์ ๋ ์์ ์ฒญํฌ๋ก ๋๋๊ธฐ)์ ํฌํจํ์ฌ ์ฑ๋ฅ์ ์ํด ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ์ต์ ํํ๋ ํ๋ ์์ํฌ์ ๋ฅ๋ ฅ์ ๋๋ค.
- ๋ฐํ์ ์ค๋ฒํค๋: ํ๋ ์์ํฌ์ ๋ฐํ์ ํ๊ฒฝ์ ์ํด ๋ฐ์ํ๋ ์ค๋ฒํค๋์ ์์ ๋๋ค.
- ์ปค๋ฎค๋ํฐ ์ง์ ๋ฐ ์ํ๊ณ: ํฌ๊ณ ํ๋ฐํ ์ปค๋ฎค๋ํฐ๋ ์ฑ๋ฅ ํฅ์์ ๋์์ด ๋๋ ๊ท์คํ ๋ฆฌ์์ค, ๋๊ตฌ ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค.
์ธ๊ธฐ ์๋ฐ์คํฌ๋ฆฝํธ ํ๋ ์์ํฌ ๋น๊ต
๊ฐ์ฅ ์ธ๊ธฐ ์๋ ์๋ฐ์คํฌ๋ฆฝํธ ํ๋ ์์ํฌ ๋ช ๊ฐ์ง๋ฅผ ๋ฒ๋ค ํฌ๊ธฐ์ ๊ธฐ๋ฅ ์ธํธ๋ฅผ ๊ธฐ์ค์ผ๋ก ๋น๊ตํด ๋ณด๊ฒ ์ต๋๋ค:
๋ฆฌ์กํธ(React)
์ค๋ช : ๋ฆฌ์กํธ๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌ์ถํ๊ธฐ ์ํ ์๋ฐ์คํฌ๋ฆฝํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. ์ปดํฌ๋ํธ ๊ธฐ๋ฐ ์ํคํ ์ฒ, ๊ฐ์ DOM, ์ ์ธ์ ํ๋ก๊ทธ๋๋ฐ ์คํ์ผ๋ก ์ ๋ช ํฉ๋๋ค.
๋ฒ๋ค ํฌ๊ธฐ: ํต์ฌ ๋ฆฌ์กํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋น๊ต์ ์์ง๋ง, ์ค์ ๋ฒ๋ค ํฌ๊ธฐ๋ ํ๋ก์ ํธ์ ์ฌ์ฉ๋๋ ์ถ๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ข ์์ฑ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค. ๊ธฐ๋ณธ์ ์ธ ๋ฆฌ์กํธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฒ๋ค ํฌ๊ธฐ๋ ์ฝ 100-200 KB ์ ๋์ด์ง๋ง, ๋ ๋ณต์กํ ๊ธฐ๋ฅ๊ณผ ์๋ํํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ถ๊ฐ๋๋ฉด ํฌ๊ฒ ์ฆ๊ฐํ ์ ์์ต๋๋ค.
๊ธฐ๋ฅ:
- ์ปดํฌ๋ํธ ๊ธฐ๋ฐ ์ํคํ ์ฒ
- ํจ์จ์ ์ธ ๋ ๋๋ง์ ์ํ ๊ฐ์ DOM
- UI ์ปดํฌ๋ํธ ์์ฑ์ ์ํ JSX ๊ตฌ๋ฌธ
- ํฌ๊ณ ํ๋ฐํ ์ปค๋ฎค๋ํฐ
- ๊ด๋ฒ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ๋๊ตฌ ์ํ๊ณ (์: Redux, React Router)
- ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง(SSR) ์ง์
- ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ์ถ์ ์ํ ๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ
์ฑ๋ฅ ๊ณ ๋ ค์ฌํญ:
- ๋ฆฌ์กํธ์ ๊ฐ์ DOM ๋น๊ต ์๊ณ ๋ฆฌ์ฆ์ ์ผ๋ฐ์ ์ผ๋ก ํจ์จ์ ์ด์ง๋ง, ๋ณต์กํ ์ปดํฌ๋ํธ ๊ตฌ์กฐ์ ์ฆ์ ์ ๋ฐ์ดํธ์ ์ํด ์ฑ๋ฅ์ด ์ํฅ์ ๋ฐ์ ์ ์์ต๋๋ค.
- ์๋ํํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ฒ๋ค ํฌ๊ธฐ๋ฅผ ํฌ๊ฒ ์ฆ๊ฐ์ํฌ ์ ์์ต๋๋ค.
- ๋๊ท๋ชจ ๋ฆฌ์กํธ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฑ๋ฅ์ ์ต์ ํํ๋ ค๋ฉด ์ ์ ํ ์ฝ๋ ๋ถํ ๊ณผ ์ง์ฐ ๋ก๋ฉ์ด ํ์์ ์ ๋๋ค.
์์: ํ ๊ธ๋ก๋ฒ ์ ์์๊ฑฐ๋ ๊ธฐ์ ์ด ๋ฆฌ์กํธ๋ฅผ ์ฌ์ฉํ์ฌ ์จ๋ผ์ธ ์คํ ์ด๋ฅผ ๊ตฌ์ถํ๊ณ ์์ผ๋ฉฐ, ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ UI ์์๋ฅผ ๋ง๋ค๊ธฐ ์ํ ์ปดํฌ๋ํธ ๊ธฐ๋ฐ ์ํคํ ์ฒ์ ๋ค์ํ ๊ฒฐ์ ๊ฒ์ดํธ์จ์ด ๋ฐ ๋ง์ผํ ๋๊ตฌ์์ ํตํฉ์ ์ํ ๊ด๋ฒ์ํ ์ํ๊ณ๋ฅผ ํ์ฉํ๊ณ ์์ต๋๋ค.
์ต๊ทค๋ฌ(Angular)
์ค๋ช : ์ต๊ทค๋ฌ๋ ๊ตฌ๊ธ์ด ๊ฐ๋ฐํ ํฌ๊ด์ ์ธ ์๋ฐ์คํฌ๋ฆฝํธ ํ๋ ์์ํฌ์ ๋๋ค. ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ, ์์กด์ฑ ์ฃผ์ , ๋ผ์ฐํ ๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ํฌํจํ์ฌ ๋ณต์กํ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๊ธฐ ์ํ ์์ ํ ์๋ฃจ์ ์ ์ ๊ณตํฉ๋๋ค.
๋ฒ๋ค ํฌ๊ธฐ: ์ต๊ทค๋ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฆฌ์กํธ๋ ๋ทฐ์ ๋นํด ๋ฒ๋ค ํฌ๊ธฐ๊ฐ ํฐ ๊ฒฝํฅ์ด ์์ต๋๋ค. ๊ธฐ๋ณธ์ ์ธ ์ต๊ทค๋ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฒ๋ค ํฌ๊ธฐ๋ ์ฝ 500 KB์์ 1 MB ์ ๋์ด์ง๋ง, ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณต์ก์ฑ๊ณผ ์ฌ์ฉ๋ ๋ชจ๋์ ๋ฐ๋ผ ๋ฌ๋ผ์ง ์ ์์ต๋๋ค.
๊ธฐ๋ฅ:
- ์ปดํฌ๋ํธ ๊ธฐ๋ฐ ์ํคํ ์ฒ
- ์๋ฐฉํฅ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ
- ์์กด์ฑ ์ฃผ์
- ๋ผ์ฐํ ๋ฐ ๋ด๋น๊ฒ์ด์
- HTTP ํด๋ผ์ด์ธํธ
- ํผ ์ฒ๋ฆฌ
- ํ ์คํ ํ๋ ์์ํฌ
- ํ์ ์คํฌ๋ฆฝํธ ์ง์
- Angular Universal์ ํตํ ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง(SSR) ์ง์
์ฑ๋ฅ ๊ณ ๋ ค์ฌํญ:
- ์ต๊ทค๋ฌ์ ํฐ ๋ฒ๋ค ํฌ๊ธฐ๋ ์ด๊ธฐ ๋ก๋ฉ ์๊ฐ์ ์ํฅ์ ์ค ์ ์์ต๋๋ค.
- ๋ณ๊ฒฝ ๊ฐ์ง ๋ฉ์ปค๋์ฆ์ ๋ณต์กํ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ ์ผ์ผํฌ ์ ์์ต๋๋ค.
- AOT(Ahead-of-time) ์ปดํ์ผ์ ๋น๋ ๊ณผ์ ์์ ํ ํ๋ฆฟ์ ๋ฏธ๋ฆฌ ์ปดํ์ผํ์ฌ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
- ๋ชจ๋ ์ง์ฐ ๋ก๋ฉ์ ์ด๊ธฐ ๋ฒ๋ค ํฌ๊ธฐ๋ฅผ ์ค์ด๊ณ ๋ก๋ฉ ์๊ฐ์ ๊ฐ์ ํ ์ ์์ต๋๋ค.
์์: ํ ๋ค๊ตญ์ ์ํ ๊ธฐ์ ์ด ์ต๊ทค๋ฌ๋ฅผ ์ฌ์ฉํ์ฌ ์จ๋ผ์ธ ๋ฑ ํน ํ๋ซํผ์ ๊ตฌ์ถํ๊ณ ์์ผ๋ฉฐ, ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ, ๋ณด์ ๋ฐ ์ฌ์ฉ์ ์ธ์ฆ์ ์ํ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ ํ์ฉํ๊ณ ์์ต๋๋ค.
๋ทฐ(Vue.js)
์ค๋ช : ๋ทฐ๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌ์ถํ๊ธฐ ์ํ ์ ์ง์ ์ธ ์๋ฐ์คํฌ๋ฆฝํธ ํ๋ ์์ํฌ์ ๋๋ค. ๋จ์ํจ, ์ ์ฐ์ฑ, ๊ธฐ์กด ํ๋ก์ ํธ์์ ์์ฌ์ด ํตํฉ์ผ๋ก ์ ๋ช ํฉ๋๋ค.
๋ฒ๋ค ํฌ๊ธฐ: ๋ทฐ๋ ์ต๊ทค๋ฌ์ ๋นํด ์๋์ ์ผ๋ก ๋ฒ๋ค ํฌ๊ธฐ๊ฐ ์์ต๋๋ค. ๊ธฐ๋ณธ์ ์ธ ๋ทฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฒ๋ค ํฌ๊ธฐ๋ ์ฝ 30-50 KB์ด๋ฏ๋ก ์ฑ๋ฅ์ด ์ต์ฐ์ ์ธ ํ๋ก์ ํธ์ ์ข์ ์ ํ์ด ๋ ์ ์์ต๋๋ค.
๊ธฐ๋ฅ:
- ์ปดํฌ๋ํธ ๊ธฐ๋ฐ ์ํคํ ์ฒ
- ํจ์จ์ ์ธ ๋ ๋๋ง์ ์ํ ๊ฐ์ DOM
- ๋ฐ์ํ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ
- ๋จ์ํ๊ณ ์ ์ฐํ API
- ๊ธฐ์กด ํ๋ก์ ํธ์์ ์์ฌ์ด ํตํฉ
- ํฌ๊ณ ์ฑ์ฅํ๋ ์ปค๋ฎค๋ํฐ
- ์ํ ๊ด๋ฆฌ๋ฅผ ์ํ Vuex
- ๋ผ์ฐํ ๋ฐ ๋ด๋น๊ฒ์ด์ ์ ์ํ Vue Router
- Nuxt.js๋ฅผ ํตํ ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง(SSR) ์ง์
์ฑ๋ฅ ๊ณ ๋ ค์ฌํญ:
- ๋ทฐ์ ๊ฐ์ DOM๊ณผ ์ต์ ํ๋ ๋ ๋๋ง ํ์ดํ๋ผ์ธ์ ๋ฐ์ด๋ ์ฑ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
- ์์ ๋ฒ๋ค ํฌ๊ธฐ๋ ๋ ๋น ๋ฅธ ๋ก๋ฉ ์๊ฐ์ ๊ธฐ์ฌํฉ๋๋ค.
- ์ปดํฌ๋ํธ์ ๋ผ์ฐํธ์ ์ง์ฐ ๋ก๋ฉ์ ์ฑ๋ฅ์ ๋์ฑ ํฅ์์ํฌ ์ ์์ต๋๋ค.
์์: ํ ๊ธ๋ก๋ฒ ๋ด์ค ๊ธฐ๊ด์ด ๋ทฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ธํฐ๋ํฐ๋ธ ๋ด์ค ์น์ฌ์ดํธ๋ฅผ ๊ตฌ์ถํ๊ณ ์์ผ๋ฉฐ, ๋์ ์ด๊ณ ๋งค๋ ฅ์ ์ธ ์ฌ์ฉ์ ๊ฒฝํ์ ๋ง๋ค๊ธฐ ์ํด ๋จ์์ฑ๊ณผ ์ ์ฐ์ฑ์ ํ์ฉํ๊ณ ์์ต๋๋ค.
์ค๋ฒจํธ(Svelte)
์ค๋ช : ์ค๋ฒจํธ๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌ์ถํ๋ ์๋ก์ด ๊ธ์ง์ ์ธ ์ ๊ทผ ๋ฐฉ์์ ๋๋ค. ๋ธ๋ผ์ฐ์ ์์ ์คํ๋๋ ๊ธฐ์กด ํ๋ ์์ํฌ์ ๋ฌ๋ฆฌ, ์ค๋ฒจํธ๋ ๋น๋ ์์ ์ฝ๋๋ฅผ ๊ณ ๋๋ก ์ต์ ํ๋ ์์ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์ปดํ์ผํฉ๋๋ค.
๋ฒ๋ค ํฌ๊ธฐ: ์ค๋ฒจํธ๋ ๋ธ๋ผ์ฐ์ ์์ ํ๋ ์์ํฌ ๋ฐํ์์ ์ ๊ฑฐํ๋ฏ๋ก, ์ฌ๊ธฐ์ ๋ ผ์๋ ํ๋ ์์ํฌ ์ค ์ผ๋ฐ์ ์ผ๋ก ๊ฐ์ฅ ์์ ๋ฒ๋ค ํฌ๊ธฐ๋ฅผ ์์ฑํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ธ ์ค๋ฒจํธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฒ๋ค ํฌ๊ธฐ๋ 10 KB ๋ฏธ๋ง์ผ ์ ์์ต๋๋ค.
๊ธฐ๋ฅ:
- ๊ฐ์ DOM ์์
- ๋ฐ์ํ ํ ๋น
- ๊ณ ๋๋ก ์ต์ ํ๋ ์์ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์ปดํ์ผ๋จ
- ์์ ๋ฒ๋ค ํฌ๊ธฐ
- ๋ฐ์ด๋ ์ฑ๋ฅ
- ๋ฐฐ์ฐ๊ธฐ ์ฌ์
์ฑ๋ฅ ๊ณ ๋ ค์ฌํญ:
- ์ค๋ฒจํธ์ ์ปดํ์ผ ํ์ ์ต์ ํ๋ ๋ฐ์ด๋ ์ฑ๋ฅ๊ณผ ์ต์ํ์ ๋ฐํ์ ์ค๋ฒํค๋๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
- ์์ ๋ฒ๋ค ํฌ๊ธฐ๋ ๋ ๋น ๋ฅธ ๋ก๋ฉ ์๊ฐ๊ณผ ๊ฐ์ ๋ ์ฌ์ฉ์ ๊ฒฝํ์ผ๋ก ์ด์ด์ง๋๋ค.
์์: ์ค์๊ฐ ํ์ ๋๊ตฌ๋ฅผ ๊ตฌ์ถํ๋ ํ ์คํํธ์ ์ด ์ฌ์ฉ์์๊ฒ ๊ฐ๋ฅํ ๊ฐ์ฅ ๋น ๋ฅธ ์ฑ๋ฅ๊ณผ ์ต์ํ์ ์ง์ฐ ์๊ฐ์ ๋ณด์ฅํ๊ธฐ ์ํด ์ค๋ฒจํธ๋ฅผ ์ ํํ์ต๋๋ค.
๊ธฐํ ํ๋ ์์ํฌ ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
์์์ ์ธ๊ธํ ํ๋ ์์ํฌ ์ธ์๋ ๊ฐ๊ธฐ ๋ค๋ฅธ ๊ฐ์ ๊ณผ ์ฝ์ ์ ๊ฐ์ง ๋ง์ ๋ค๋ฅธ ์ต์ ๋ค์ด ์์ต๋๋ค. ์ฃผ๋ชฉํ ๋งํ ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ํ๋ฆฌ์กํธ(Preact): ๋ฆฌ์กํธ์ ์ ์ฌํ API๋ฅผ ๊ฐ์ง๋ฉด์๋ ๋ฒ๋ค ํฌ๊ธฐ๊ฐ ๋ ์์ ๊ฒฝ๋ ๋์์ ๋๋ค.
- ์๋ฆฌ๋JS(SolidJS): ๊ณ ํจ์จ์ DOM ์ ๋ฐ์ดํธ๋ก ์ปดํ์ผ๋๋ ๋ฐ์ํ ์๋ฐ์คํฌ๋ฆฝํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค.
- ์ ๋ฒ(Ember.js): ์ค์ ๋ณด๋ค ๊ด๋ก๋ฅผ ๊ฐ์กฐํ๋ ๋ชจ๋ ๊ธฐ๋ฅ์ด ํฌํจ๋ ํ๋ ์์ํฌ์ ๋๋ค.
- ์ํ์ธJS(Alpine.js): ๊ธฐ์กด HTML์ ์๋ฐ์คํฌ๋ฆฝํธ ๋์์ ์ถ๊ฐํ๊ธฐ ์ํ ์ต์ํ์ ํ๋ ์์ํฌ์ ๋๋ค.
๋ฒ๋ค ํฌ๊ธฐ ์ต์ ํ ๊ธฐ๋ฒ
์ด๋ค ํ๋ ์์ํฌ๋ฅผ ์ ํํ๋ , ๋ฒ๋ค ํฌ๊ธฐ๋ฅผ ์ต์ ํํ๊ณ ์ฑ๋ฅ์ ํฅ์์ํค๊ธฐ ์ํด ์ฌ์ฉํ ์ ์๋ ๋ช ๊ฐ์ง ๊ธฐ๋ฒ์ด ์์ต๋๋ค:
- ์ฝ๋ ๋ถํ : ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์์ ๋ฐ๋ผ ๋ก๋ํ ์ ์๋ ๋ ์์ ์ฒญํฌ๋ก ๋๋๋ ๊ฒ์ ๋๋ค.
- ํธ๋ฆฌ ์์ดํน: ๋ฒ๋ค์์ ์ฌ์ฉํ์ง ์๋ ์ฝ๋๋ฅผ ์ ๊ฑฐํ๋ ๊ฒ์ ๋๋ค.
- ์ฝ๋ ์ถ์(Minification): ๊ณต๋ฐฑ๊ณผ ์ฃผ์์ ์ ๊ฑฐํ์ฌ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ ํฌ๊ธฐ๋ฅผ ์ค์ด๋ ๊ฒ์ ๋๋ค.
- ์์ถ: gzip ๋๋ Brotli๋ฅผ ์ฌ์ฉํ์ฌ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ ์์ถํ๋ ๊ฒ์ ๋๋ค.
- ์ง์ฐ ๋ก๋ฉ: ๋ฆฌ์์ค(์: ์ด๋ฏธ์ง, ์ปดํฌ๋ํธ)๋ฅผ ํ์ํ ๋๋ง ๋ก๋ํ๋ ๊ฒ์ ๋๋ค.
- CDN ์ฌ์ฉ: ์ฝํ ์ธ ์ ์ก ๋คํธ์ํฌ(CDN)์์ ์ ์ ์์ฐ์ ์ ๊ณตํ์ฌ ์ ์ธ๊ณ ์ฌ์ฉ์์ ๋ก๋ฉ ์๊ฐ์ ๊ฐ์ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ ์ธ๊ณ ์ฌ์ฉ์๋ฅผ ๋์์ผ๋ก ํ๋ ํ์ฌ๋ Cloudflare๋ AWS CloudFront๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ์ด๋ฏธ์ง ์ต์ ํ: ์ด๋ฏธ์ง๋ฅผ ์์ถํ๊ณ ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ์ฌ ํ์ผ ํฌ๊ธฐ๋ฅผ ์ค์ด๋ ๊ฒ์ ๋๋ค.
- ๋ถํ์ํ ์ข ์์ฑ ์ ๊ฑฐ: ์ข ์์ฑ์ ์ ์คํ๊ฒ ๊ฒํ ํ๊ณ ํ์์ ์ด์ง ์์ ๊ฒ์ ์ ๊ฑฐํ๋ ๊ฒ์ ๋๋ค.
๊ธฐ๋ฅ ๋น๊ตํ
๋ค์์ ๋ ผ์๋ ํ๋ ์์ํฌ์ ์ฃผ์ ๊ธฐ๋ฅ๊ณผ ์ฑ๋ฅ ํน์ฑ์ ์์ฝํ ํ์ ๋๋ค:
ํ๋ ์์ํฌ | ๋ฒ๋ค ํฌ๊ธฐ(์ฝ) | ๋ ๋๋ง ์ ๋ต | ์ฃผ์ ๊ธฐ๋ฅ | ์ปค๋ฎค๋ํฐ ์ง์ |
---|---|---|---|---|
๋ฆฌ์กํธ | 100-200 KB+ | ๊ฐ์ DOM | ์ปดํฌ๋ํธ ๊ธฐ๋ฐ, JSX, ๊ด๋ฒ์ํ ์ํ๊ณ | ํฌ๊ณ ํ๋ฐํจ |
์ต๊ทค๋ฌ | 500 KB - 1 MB+ | DOM | ์ปดํฌ๋ํธ ๊ธฐ๋ฐ, ์๋ฐฉํฅ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ, ์์กด์ฑ ์ฃผ์ | ํฌ๊ณ ํ๋ฐํจ |
๋ทฐ | 30-50 KB+ | ๊ฐ์ DOM | ์ปดํฌ๋ํธ ๊ธฐ๋ฐ, ๋ฐ์ํ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ, ๋จ์ํ API | ํฌ๊ณ ์ฑ์ฅ ์ค |
์ค๋ฒจํธ | < 10 KB | ์ปดํ์ผ๋ ์์ JS | ๊ฐ์ DOM ์์, ๋ฐ์ํ ํ ๋น, ๋ฐ์ด๋ ์ฑ๋ฅ | ์ฑ์ฅ ์ค |
ํ๋ก์ ํธ์ ์ ํฉํ ํ๋ ์์ํฌ ์ ํํ๊ธฐ
ํ๋ก์ ํธ์ ๊ฐ์ฅ ์ ํฉํ ์๋ฐ์คํฌ๋ฆฝํธ ํ๋ ์์ํฌ๋ ํน์ ์๊ตฌ์ฌํญ๊ณผ ์ ์ฝ ์กฐ๊ฑด์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค. ๊ฒฐ์ ์ ๋ด๋ฆด ๋ ๋ค์ ์์๋ฅผ ๊ณ ๋ คํ์ญ์์ค:
- ํ๋ก์ ํธ ๊ท๋ชจ์ ๋ณต์ก์ฑ: ์ค์ ๊ท๋ชจ ํ๋ก์ ํธ์ ๊ฒฝ์ฐ, ๋จ์์ฑ๊ณผ ์์ ๋ฒ๋ค ํฌ๊ธฐ ๋๋ฌธ์ ๋ทฐ๋ ์ค๋ฒจํธ๊ฐ ์ข์ ์ ํ์ผ ์ ์์ต๋๋ค. ํฌ๊ณ ๋ณต์กํ ํ๋ก์ ํธ์ ๊ฒฝ์ฐ, ๊ฐ๋ ฅํ ๊ธฐ๋ฅ๊ณผ ํ์ฅ์ฑ ๋๋ฌธ์ ์ต๊ทค๋ฌ๋ ๋ฆฌ์กํธ๊ฐ ๋ ์ ํฉํ ์ ์์ต๋๋ค.
- ์ฑ๋ฅ ์๊ตฌ์ฌํญ: ์ฑ๋ฅ์ด ์ต์ฐ์ ์์๋ผ๋ฉด ์ค๋ฒจํธ๋ ๋ทฐ๊ฐ ํ๋ฅญํ ์ต์ ์ ๋๋ค. ๋ฆฌ์กํธ๋ ์ ์ ํ ์ฝ๋ ๋ถํ ๊ณผ ์ง์ฐ ๋ก๋ฉ์ ํตํด ์ฑ๋ฅ์ ์ต์ ํํ ์ ์์ต๋๋ค. ์ต๊ทค๋ฌ๋ ์ต์ ์ ์ฑ๋ฅ์ ๋ฌ์ฑํ๊ธฐ ์ํด ๋ ์ ์คํ ์ต์ ํ๊ฐ ํ์ํฉ๋๋ค.
- ํ์ ์ ๋ฌธ์ฑ: ํ์ด ์ด๋ฏธ ์ต์ํ๊ฑฐ๋ ๋ฐฐ์ฐ๊ณ ์ ํ๋ ์์ง๊ฐ ์๋ ํ๋ ์์ํฌ๋ฅผ ์ ํํ์ญ์์ค. ํ์ต ๊ณก์ ๊ณผ ๋ฆฌ์์ค ๋ฐ ๋ฌธ์์ ๊ฐ์ฉ์ฑ์ ๊ณ ๋ คํ์ญ์์ค.
- ์ปค๋ฎค๋ํฐ ์ง์ ๋ฐ ์ํ๊ณ: ํฌ๊ณ ํ๋ฐํ ์ปค๋ฎค๋ํฐ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ ํจ์จ์ ์ผ๋ก ๊ตฌ์ถํ๋ ๋ฐ ๋์์ด ๋๋ ๊ท์คํ ๋ฆฌ์์ค, ๋๊ตฌ ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค.
- ์ฅ๊ธฐ์ ์ธ ์ ์ง๋ณด์์ฑ: ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฅ๊ธฐ์ ์ธ ์ ์ง๋ณด์์ฑ์ ๊ณ ๋ คํ์ญ์์ค. ์ ๊ด๋ฆฌ๋๊ณ ๋ฏธ๋์ ๋ํ ๋ช ํํ ๋ก๋๋งต์ด ์๋ ํ๋ ์์ํฌ๋ฅผ ์ ํํ์ญ์์ค.
๊ฒฐ๋ก
์ฌ๋ฐ๋ฅธ ์๋ฐ์คํฌ๋ฆฝํธ ํ๋ ์์ํฌ๋ฅผ ์ ํํ๋ ๊ฒ์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๊ณต์ ํฐ ์ํฅ์ ๋ฏธ์น ์ ์๋ ์ค์ํ ๊ฒฐ์ ์ ๋๋ค. ๋ค์ํ ํ๋ ์์ํฌ์ ๋ฒ๋ค ํฌ๊ธฐ, ๊ธฐ๋ฅ ์ธํธ, ์ฑ๋ฅ ํน์ฑ์ ์ ์คํ๊ฒ ๊ณ ๋ คํจ์ผ๋ก์จ ํ๋ก์ ํธ์ ํน์ ์๊ตฌ์ฌํญ์ ๋ถํฉํ๋ ์ ๋ณด์ ์ ๊ฐํ ์ ํ์ ํ ์ ์์ต๋๋ค. ์ฝ๋๋ฅผ ์ต์ ํํ๊ณ , ๋ฒ๋ค ํฌ๊ธฐ ์ต์ ํ ๊ธฐ๋ฒ์ ํ์ฉํ๋ฉฐ, ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ์ ์ง์์ ์ผ๋ก ๋ชจ๋ํฐ๋งํ์ฌ ์ํํ๊ณ ๋งค๋ ฅ์ ์ธ ์ฌ์ฉ์ ๊ฒฝํ์ ๋ณด์ฅํ๋ ๊ฒ์ ์์ง ๋ง์ญ์์ค. ์๋ฐ์คํฌ๋ฆฝํธ ํ๋ ์์ํฌ์ ํ๊ฒฝ์ ๋์์์ด ์งํํ๋ฏ๋ก, ์ค๋๋ ์ ์ญ๋์ ์ธ ๋์งํธ ์ธ์์์ ๊ณ ์ฑ๋ฅ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๋ ค๋ฉด ์ต์ ๋ํฅ๊ณผ ๋ชจ๋ฒ ์ฌ๋ก์ ๋ํ ์ ๋ณด๋ฅผ ๊ณ์ ํ์ ํ๋ ๊ฒ์ด ํ์์ ์ ๋๋ค.
๋ง์ง๋ง์ผ๋ก, '์ต๊ณ ์' ํ๋ ์์ํฌ๋ ์ฃผ๊ด์ ์ด๋ผ๋ ๊ฒ์ ๊ธฐ์ตํ์ญ์์ค. ๊ทธ๊ฒ์ ์ ์ ์ผ๋ก ํ๋ก์ ํธ์ ๋งฅ๋ฝ, ํ์ ๊ธฐ์ , ๊ทธ๋ฆฌ๊ณ ์ฐ์ ์์์ ๋ฌ๋ ค ์์ต๋๋ค. ์คํํ๊ณ , ํ๋กํ ํ์ ์ ๋ง๋ค๊ณ , ๋ฐ์ดํฐ๋ฅผ ์์งํ์ฌ ์์ฌ ๊ฒฐ์ ๊ณผ์ ์ ๋ท๋ฐ์นจํ์ญ์์ค.