๊ฒฌ๊ณ ํ ์๋ฐ์คํฌ๋ฆฝํธ ์ฑ๋ฅ ์ธํ๋ผ ๊ตฌ์ถ ์ฌ์ธต ๋ถ์. ํ๋ ์์ํฌ ๊ตฌํ, ์ฑ๋ฅ ๋ถ์ ๋ฐ ๊ธ๋ก๋ฒ ์ฌ์ฉ์๋ฅผ ์ํ ์ต์ ํ ๋ฐฉ๋ฒ์ ์์๋ณด์ธ์.
์๋ฐ์คํฌ๋ฆฝํธ ์ฑ๋ฅ ์ธํ๋ผ: ํ๋ ์์ํฌ ๊ตฌํ ๊ฐ์ด๋
์ค๋๋ ๊ณผ ๊ฐ์ด ์ํธ ์ฐ๊ฒฐ๋ ์ธ์์์๋ ๋น ๋ฅด๊ณ ํจ์จ์ ์ธ ์น ๊ฒฝํ์ ์ ๊ณตํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ค์ํฉ๋๋ค. ์ฌ์ฉ์๋ ์์น๋ ์ฅ์น์ ๊ด๊ณ์์ด ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ ์ํ๊ฒ ๋ก๋๋๊ณ ์ํํ๊ฒ ์๋ตํ๊ธฐ๋ฅผ ๊ธฐ๋ํฉ๋๋ค. ์ด ๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ์์๋ ํ๋ ์์ํฌ ๊ตฌํ๊ณผ ๊ธ๋ก๋ฒ ์ฌ์ฉ์๋ฅผ ์ํ ์ต์ ํ ์ ๋ต์ ์ด์ ์ ๋ง์ถฐ ๊ฒฌ๊ณ ํ ์๋ฐ์คํฌ๋ฆฝํธ ์ฑ๋ฅ ์ธํ๋ผ๋ฅผ ๊ตฌ์ถํ๋ ๋ฐฉ๋ฒ์ ์ฌ์ธต์ ์ผ๋ก ๋ค๋ฃน๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ ์ฑ๋ฅ์ ์ค์์ฑ ์ดํดํ๊ธฐ
์๋ฐ์คํฌ๋ฆฝํธ๋ ํ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋์ ์ฝํ ์ธ , ์ฌ์ฉ์ ์ํธ์์ฉ, ํ๋ถํ ๊ธฐ๋ฅ๋ค์ ๊ฐ๋ฅํ๊ฒ ํ๋ ์ค์ถ์ ์ธ ์ญํ ์ ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ ๋๋ก ์ต์ ํ๋์ง ์์ ์๋ฐ์คํฌ๋ฆฝํธ๋ ์ฑ๋ฅ์ ํฌ๊ฒ ์ ํ์์ผ ๋ค์๊ณผ ๊ฐ์ ๋ฌธ์ ๋ค์ ์ผ๊ธฐํ ์ ์์ต๋๋ค:
- ๋๋ฆฐ ๋ก๋ ์๊ฐ: ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ ํฌ๊ธฐ๊ฐ ํด ์ ์์ผ๋ฉฐ, ์ด๋ ์ด๊ธฐ ํ์ด์ง ๋ก๋ ๋ฐ ์ํธ์์ฉ๊น์ง์ ์๊ฐ(Time To Interactive, TTI)์ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
- ๋ฎ์ ๋ฐ์์ฑ: CPU๋ฅผ ๋ง์ด ์ฌ์ฉํ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์์ ์ ๋ฉ์ธ ์ค๋ ๋๋ฅผ ์ฐจ๋จํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋๋ฆฌ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค.
- ๋ถ์ ์ ์ธ ์ฌ์ฉ์ ๊ฒฝํ: ๋๋ฆฐ ์ฑ๋ฅ์ ์ฌ์ฉ์์ ๋ถ๋ง๊ณผ ๋์ ์ดํ๋ฅ ๋ก ์ด์ด์ง๋๋ค. ์ฌ์ฉ์๋ ๋๋ฆฌ๊ฒ ๋ก๋๋๋ ์น์ฌ์ดํธ๋ฅผ ํฌ๊ธฐํ ๊ฐ๋ฅ์ฑ์ด ๋ ๋์ต๋๋ค.
- SEO์ ๋ฏธ์น๋ ์ํฅ: ๊ฒ์ ์์ง์ ๋ก๋ฉ ์๋๊ฐ ๋น ๋ฅธ ์น์ฌ์ดํธ๋ฅผ ์ฐ์ ์ํ๋ฏ๋ก, ์ด๋ ๊ฒ์ ์์์ ์ํฅ์ ์ค ์ ์์ต๋๋ค.
์ ๊ตฌํ๋ ์ฑ๋ฅ ์ธํ๋ผ๋ ์ด๋ฌํ ๋ฌธ์ ๋ค์ ์ํํ๊ณ ์ ์ธ๊ณ์ ์ผ๋ก ๊ธ์ ์ ์ธ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ๋ ๋ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค. ์ด๋ ๋ค์ํ ๊ตญ๊ฐ์ ๋ค์ํ ์ธํฐ๋ท ์๋์ ์ฅ์น ์ฑ๋ฅ์ ๊ฐ์ง ์ฌ์ฉ์๋ค์ ์ํด ์ต์ ํํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ ์ฑ๋ฅ ์ธํ๋ผ์ ํต์ฌ ๊ตฌ์ฑ ์์
ํฌ๊ด์ ์ธ ์๋ฐ์คํฌ๋ฆฝํธ ์ฑ๋ฅ ์ธํ๋ผ๋ ๋ค์๊ณผ ๊ฐ์ ๋ช ๊ฐ์ง ํต์ฌ ๊ตฌ์ฑ ์์๋ฅผ ํฌํจํฉ๋๋ค:
- ์ฑ๋ฅ ๋ชจ๋ํฐ๋ง: ํต์ฌ ์ฑ๊ณผ ์งํ(KPI)๋ฅผ ์ง์์ ์ผ๋ก ์ถ์ ํ์ฌ ๋ณ๋ชฉ ํ์์ ์๋ณํ๊ณ ์ต์ ํ ๋ ธ๋ ฅ์ ํจ๊ณผ๋ฅผ ์ธก์ ํฉ๋๋ค.
- ํ๋กํ์ผ๋ง: ์ฝ๋ ์คํ์ ๋ถ์ํ์ฌ ๋๋ฆฌ๊ฒ ์คํ๋๋ ํจ์์ ๋นํจ์จ์ ์ธ ์์ญ์ ์ฐพ์๋ ๋๋ค.
- ์ต์ ํ ๊ธฐ๋ฒ: ์ฝ๋ ์คํ๋ฆฌํ , ์ง์ฐ ๋ก๋ฉ, ์์ถ, ์บ์ฑ๊ณผ ๊ฐ์ ์ ๋ต์ ๊ตฌํํฉ๋๋ค.
- ๋น๋ ์๋ํ: ๋น๋ ํ๋ก์ธ์ค๋ฅผ ์๋ํํ์ฌ ์ต์ ํ ๋ฐ ๋ฐฐํฌ๋ฅผ ๊ฐ์ํํฉ๋๋ค.
- ์ง์์ ํตํฉ/์ง์์ ๋ฐฐํฌ(CI/CD): ์ฑ๋ฅ ์ ํ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ๊ฐ๋ฐ ํ์ดํ๋ผ์ธ์ ์ฑ๋ฅ ๊ฒ์ฌ๋ฅผ ํตํฉํฉ๋๋ค.
ํ๋ ์์ํฌ ์ ํ ๋ฐ ๊ณ ๋ ค์ฌํญ
์ฌ๋ฐ๋ฅธ ์๋ฐ์คํฌ๋ฆฝํธ ํ๋ ์์ํฌ๋ฅผ ์ ํํ๋ ๊ฒ์ ์ฑ๋ฅ์ ํฐ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค. ์ธ๊ธฐ ์๋ ์ ํ์ง๋ก๋ React, Angular, Vue.js๊ฐ ์์ต๋๋ค. ๊ฐ ํ๋ ์์ํฌ๋ ์ฑ๋ฅ์ ๊ดํ ์ฅ๋จ์ ์ด ์์ผ๋ฉฐ, ์ต์ ์ ์ ํ์ ํ๋ก์ ํธ์ ํน์ ์๊ตฌ์ฌํญ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค.
- React: ๊ฐ์ DOM์ผ๋ก ์ ๋ช ํ React๋ ์ฌ๋ฐ๋ฅด๊ฒ ์ต์ ํํ๋ฉด ๋ฐ์ด๋ ์ฑ๋ฅ์ ์ ๊ณตํ ์ ์์ต๋๋ค. ์ปดํฌ๋ํธ ๊ธฐ๋ฐ ์ํคํ ์ฒ๋ ์ฝ๋ ์ฌ์ฌ์ฉ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ํฅ์์ํต๋๋ค. React ์ ํ๋ฆฌ์ผ์ด์ ์ฑ๋ฅ์ ๊ฐ์ ํ๋ ค๋ฉด ์ฝ๋ ์คํ๋ฆฌํ , ์ปดํฌ๋ํธ ์ง์ฐ ๋ก๋ฉ, ๋ฉ๋ชจ์ด์ ์ด์ ๊ณผ ๊ฐ์ ๊ธฐ์ ์ฌ์ฉ์ ๊ณ ๋ คํ์ธ์. React๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ถ๋ Next.js ๋ฐ Gatsby์ ๊ฐ์ ํ๋ ์์ํฌ๋ ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง ๋ฐ ์ ์ ์ฌ์ดํธ ์์ฑ์ ์ ๊ณตํ์ฌ ์ด๊ธฐ ๋ก๋ ์๊ฐ์ ํ๊ธฐ์ ์ผ๋ก ๊ฐ์ ํ ์ ์์ต๋๋ค.
- Angular: Angular๋ ์์กด์ฑ ์ฃผ์ ๋ฐ ๊ฐ๋ ฅํ CLI์ ๊ฐ์ ๊ธฐ๋ฅ์ ๊ฐ์ถ ํฌ๊ด์ ์ธ ํ๋ ์์ํฌ๋ฅผ ์ ๊ณตํฉ๋๋ค. Angular๋ ํ์ต ๊ณก์ ์ด ๊ฐํ๋ฅผ ์ ์์ง๋ง, ๋ด์ฅ๋ ์ต์ ํ ๋๊ตฌ์ ์ฌ์ ์ปดํ์ผ(AOT)์ ํตํด ๊ณ ์ฑ๋ฅ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ์ ์์ต๋๋ค. Angular์ ๋ณ๊ฒฝ ๊ฐ์ง ์ ๋ต(OnPush)์ ์ฌ์ฉํ๊ณ ํ ํ๋ฆฟ ๋ ๋๋ง์ ์ต์ ํํ์ฌ ๋ ๋์ ์ฑ๋ฅ์ ์ป์ผ์ธ์.
- Vue.js: Vue.js๋ ์ฌ์ฉ ํธ์์ฑ๊ณผ ์ฑ๋ฅ์ผ๋ก ์ ๋ช ํฉ๋๋ค. ์ค์น ๊ณต๊ฐ์ด ์๊ณ ๋ฐ์ด๋ ๋ฐ์์ฑ์ ์ ๊ณตํฉ๋๋ค. Vue.js๋ ๋จ์ผ ํ์ด์ง ์ ํ๋ฆฌ์ผ์ด์ ๋ฐ ๋ํํ ์ฌ์ฉ์ ์ธํฐํ์ด์ค ๊ตฌ์ถ์ ํ์ํฉ๋๋ค. ์ต๊ณ ์ ์ฑ๋ฅ์ ์ํด Vue.js์ ๊ฐ์ DOM, ์ต์ ํ๋ ๋ ๋๋ง, ์ปดํฌ๋ํธ ๊ธฐ๋ฐ ์ํคํ ์ฒ๋ฅผ ํ์ฉํ์ธ์. Vue.js๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ถ๋ Nuxt.js์ ๊ฐ์ ํ๋ ์์ํฌ๋ ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง ๋ฐ ์ ์ ์ฌ์ดํธ ์์ฑ๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ฌ ๋ก๋ ์๊ฐ์ ํฅ์์ํค๋ ๋ฐ ๊ธฐ์ฌํฉ๋๋ค.
ํ๋ ์์ํฌ๋ณ ๊ณ ๋ ค์ฌํญ: ์๋ฐ์คํฌ๋ฆฝํธ ํ๋ ์์ํฌ๋ฅผ ์ ํํ ๋ ๋ค์์ ๊ณ ๋ คํ์ธ์:
- ๋ฒ๋ค ํฌ๊ธฐ: ๋ฒ๋ค ํฌ๊ธฐ๊ฐ ์์์๋ก ๋ก๋ ์๊ฐ์ด ๋นจ๋ผ์ง๋๋ค. ๊ฐ ํ๋ ์์ํฌ๋ ์ด๊ธฐ ๋ฒ๋ค ํฌ๊ธฐ๊ฐ ๋ค๋ฆ ๋๋ค.
- ๋ ๋๋ง ์ฑ๋ฅ: ํ๋ ์์ํฌ๊ฐ ๋ ๋๋ง ๋ฐ DOM ์ ๋ฐ์ดํธ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ ์ดํดํ์ธ์. React ๋ฐ Vue.js์ ๊ฐ์ ๊ฐ์ DOM ๊ธฐ๋ฐ ํ๋ ์์ํฌ๋ ์ง์ ์ ์ธ DOM ์กฐ์๋ณด๋ค ๋น ๋ฅธ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
- ์ปค๋ฎค๋ํฐ์ ์ํ๊ณ: ํฌ๊ณ ํ๋์ ์ธ ์ปค๋ฎค๋ํฐ๋ ์ฑ๋ฅ ์ต์ ํ๋ฅผ ์ํ ํ๋ถํ ๋ฆฌ์์ค, ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ๋๊ตฌ๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง(SSR) ๋ฐ ์ ์ ์ฌ์ดํธ ์์ฑ(SSG): SSR ๋ฐ SSG ํ๋ ์์ํฌ(Next.js, Gatsby, Nuxt.js)๋ ์๋ฒ์์ HTML์ ์ฌ์ ๋ ๋๋งํ์ฌ ์ด๊ธฐ ๋ก๋ ์๊ฐ๊ณผ SEO๋ฅผ ํฌ๊ฒ ํฅ์์ํฌ ์ ์์ต๋๋ค. ์ด๋ ์ธํฐ๋ท ์ฐ๊ฒฐ์ด ๋๋ฆฌ๊ฑฐ๋ ์ ์ฌ์ ์ฅ์น๋ฅผ ์ฌ์ฉํ๋ ์ฌ์ฉ์์๊ฒ ๋งค์ฐ ์ค์ํฉ๋๋ค.
์ฑ๋ฅ ๋ชจ๋ํฐ๋ง ๊ตฌํํ๊ธฐ
ํจ๊ณผ์ ์ธ ์ฑ๋ฅ ๋ชจ๋ํฐ๋ง์ ๋ชจ๋ ์ต์ ํ ์ ๋ต์ ์ด์์ ๋๋ค. ๊ตฌํ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ์ฌ๋ฐ๋ฅธ ๋๊ตฌ ์ ํ: ์๋ฐ์คํฌ๋ฆฝํธ ์ฑ๋ฅ ๋ชจ๋ํฐ๋ง์ ์ํ ์ฌ๋ฌ ๋๊ตฌ๊ฐ ์์ต๋๋ค:
- ์น ๋ฐ์ดํ(Web Vitals): ๊ตฌ๊ธ์ ์น ๋ฐ์ดํ์ ์น ์ฑ๋ฅ ์ธก์ ์ ์ํ ํ์คํ๋ ์งํ(์ต๋ ์ฝํ ์ธ ํ ํ์ธํธ - LCP, ์ต์ด ์ ๋ ฅ ์ง์ฐ - FID, ๋์ ๋ ์ด์์ ์ด๋ - CLS, ์ต์ด ๋ฐ์ดํธ๊น์ง์ ์๊ฐ - TTFB, ์ํธ์์ฉ๊น์ง์ ์๊ฐ - TTI)๋ฅผ ์ ๊ณตํฉ๋๋ค.
- Performance API: ๋ธ๋ผ์ฐ์ ์ Performance API๋ ๋ค์ํ ๋ฆฌ์์ค ๋ฐ ์ด๋ฒคํธ์ ๋ํ ํ์ด๋ฐ ๋ฐ์ดํฐ๋ฅผ ํฌํจํ์ฌ ๋ก๋ฉ ํ๋ก์ธ์ค์ ๋ํ ์์ธํ ์ ๋ณด๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ์ ํ๋ฆฌ์ผ์ด์ ์ฑ๋ฅ ๋ชจ๋ํฐ๋ง(APM) ๋๊ตฌ: New Relic, Dynatrace, Datadog๊ณผ ๊ฐ์ APM ๋๊ตฌ๋ ์ค์ ์ฌ์ฉ์ ๋ชจ๋ํฐ๋ง(RUM) ๋ฐ ์ค๋ฅ ์ถ์ ์ ํฌํจํ ํฌ๊ด์ ์ธ ๋ชจ๋ํฐ๋ง์ ์ ๊ณตํฉ๋๋ค. ์ด๋ฌํ ๋๊ตฌ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ์ ์ค์๊ฐ์ผ๋ก ์ถ์ ํ์ฌ ๋๋ฆฐ ํ์ด์ง ๋ก๋, ์ค๋ฅ ๋ฐ ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ ๋ํ ํต์ฐฐ๋ ฅ์ ์ ๊ณตํฉ๋๋ค.
- ๋ธ๋ผ์ฐ์ ๊ฐ๋ฐ์ ๋๊ตฌ: Chrome ๊ฐ๋ฐ์ ๋๊ตฌ(๋ฐ ๋ค๋ฅธ ๋ธ๋ผ์ฐ์ ์ ์ ์ฌํ ๋๊ตฌ)๋ ๊ฐ๋ ฅํ ํ๋กํ์ผ๋ง ๋ฐ ์ฑ๋ฅ ๋ถ์ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
- ํต์ฌ ์งํ ์ถ์ : ๋ค์๊ณผ ๊ฐ์ ์ค์ํ ์ฑ๋ฅ ์งํ์ ์ง์คํ์ธ์:
- ๋ก๋ ์๊ฐ: ํ์ด์ง๊ฐ ์์ ํ ๋ก๋๋๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ.
- ์ต์ด ์ฝํ ์ธ ํ ํ์ธํธ(FCP): ์ฒซ ๋ฒ์งธ ์ฝํ ์ธ ๊ฐ ๋ ๋๋ง๋๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ.
- ์ต๋ ์ฝํ ์ธ ํ ํ์ธํธ(LCP): ๊ฐ์ฅ ํฐ ์ฝํ ์ธ ์์๊ฐ ๋ ๋๋ง๋๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ.
- ์ํธ์์ฉ๊น์ง์ ์๊ฐ(TTI): ํ์ด์ง๊ฐ ์์ ํ ์ํธ์์ฉ ๊ฐ๋ฅํด์ง๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ.
- ์ต์ด ์ ๋ ฅ ์ง์ฐ(FID): ์ฌ์ฉ์์ ์ฒซ ๋ฒ์งธ ์ํธ์์ฉ๊ณผ ๋ธ๋ผ์ฐ์ ์ ์๋ต ์ฌ์ด์ ์ง์ฐ ์๊ฐ.
- ๋์ ๋ ์ด์์ ์ด๋(CLS): ํ์ด์ง ๋ก๋ฉ ์ค ์์์น ๋ชปํ ๋ ์ด์์ ์ด๋์ ์.
- ์๋ฐ์คํฌ๋ฆฝํธ ์์ฒญ ์: ๋ก๋๋๋ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ ์.
- ์๋ฐ์คํฌ๋ฆฝํธ ์คํ ์๊ฐ: ๋ธ๋ผ์ฐ์ ๊ฐ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ์คํํ๋ ๋ฐ ์์๋๋ ์๊ฐ.
- ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋: ์ ํ๋ฆฌ์ผ์ด์ ์ด ์๋นํ๋ ๋ฉ๋ชจ๋ฆฌ์ ์.
- ์ค๋ฅ์จ: ์๋ฐ์คํฌ๋ฆฝํธ ์ค๋ฅ์ ๋น๋.
- ์ค์ ์ฌ์ฉ์ ๋ชจ๋ํฐ๋ง(RUM) ๊ตฌํ: RUM์ ์ค์ ์ฌ์ฉ์๋ก๋ถํฐ ์ฑ๋ฅ ๋ฐ์ดํฐ๋ฅผ ์์งํ์ฌ ๋ค์ํ ํ๊ฒฝ๊ณผ ์ฅ์น์์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ด๋ป๊ฒ ์๋ํ๋์ง์ ๋ํ ๊ท์คํ ํต์ฐฐ๋ ฅ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ ์ ์ธ๊ณ์ ์ผ๋ก ์ฑ๋ฅ์ ์ต์ ํํ๋ ๋ฐ ํนํ ์ ์ฉํฉ๋๋ค.
- ์๋ฆผ ์ค์ : ์ฑ๋ฅ ์งํ๊ฐ ํ์ฉ ์๊ณ๊ฐ ์๋๋ก ๋จ์ด์ง ๋ ์๋ฆผ์ ๋ฐ๋๋ก ๊ตฌ์ฑํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ฌ์ ์๋ฐฉ์ ์ธ ๋ฌธ์ ํด๊ฒฐ์ด ๊ฐ๋ฅํ๊ณ ์ฑ๋ฅ ์ ํ๋ฅผ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
- ์ ๊ธฐ ๊ฐ์ฌ: Google PageSpeed Insights ๋๋ WebPageTest์ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์น์ฌ์ดํธ์ ์ฑ๋ฅ์ ์ ๊ธฐ์ ์ผ๋ก ๊ฐ์ฌํฉ๋๋ค. ์ด๋ฌํ ๋๊ตฌ๋ ์ต์ ํ๋ฅผ ์ํ ๊ถ์ฅ ์ฌํญ์ ์ ๊ณตํฉ๋๋ค.
์์: Performance API๋ฅผ ์ฌ์ฉํ์ฌ ์๋ฐ์คํฌ๋ฆฝํธ์์ ๋ก๋ ์๊ฐ ์ธก์ ํ๊ธฐ:
const startTime = performance.now();
// ... your code ...
const endTime = performance.now();
const loadTime = endTime - startTime;
console.log("Load time: " + loadTime + "ms");
์ฑ๋ฅ ํ๋กํ์ผ๋ง ๋ฐ ๋ถ์
ํ๋กํ์ผ๋ง์ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋์ ์ฑ๋ฅ์ ๋ถ์ํ์ฌ ๋ณ๋ชฉ ํ์์ ์๋ณํ๋ ๊ฒ์ ํฌํจํฉ๋๋ค. ์ด๋ ์ข ์ข ๋ค์์ ํฌํจํฉ๋๋ค:
- ๋ธ๋ผ์ฐ์ ๊ฐ๋ฐ์ ๋๊ตฌ ์ฌ์ฉ: Chrome ๊ฐ๋ฐ์ ๋๊ตฌ(๋๋ ๋ค๋ฅธ ๋ธ๋ผ์ฐ์ ์ ์ ์ฌํ ๋๊ตฌ)๋ฅผ ์ฌ์ฉํ์ฌ ์ฑ๋ฅ ํ๋กํ์ ๊ธฐ๋กํ๊ณ ๋ถ์ํฉ๋๋ค. 'Performance' ํญ์์ CPU, ๋ฉ๋ชจ๋ฆฌ ๋ฐ ๋คํธ์ํฌ ํ๋์ ๊ธฐ๋กํ ์ ์์ต๋๋ค.
- ๋๋ฆฐ ํจ์ ์๋ณ: ์คํ ์๊ฐ์ด ๊ฐ์ฅ ์ค๋ ๊ฑธ๋ฆฌ๋ ํจ์๋ฅผ ์ฐพ์๋ ๋๋ค.
- ํธ์ถ ์คํ ๋ถ์: ์คํ ํ๋ฆ์ ์ดํดํ๊ณ ์ต์ ํ๊ฐ ํ์ํ ์์ญ์ ์๋ณํฉ๋๋ค.
- ๋ฉ๋ชจ๋ฆฌ ํ๋กํ์ผ๋ง: ์ฑ๋ฅ์ ์ํฅ์ ์ค ์ ์๋ ๋ฉ๋ชจ๋ฆฌ ๋์ ๋ฐ ๋นํจ์จ์ฑ์ ๊ฐ์งํฉ๋๋ค.
- ๋คํธ์ํฌ ๋ถ์: ๋คํธ์ํฌ ์์ฒญ์ ๋ถ์ํ์ฌ ๋๋ฆฌ๊ฒ ๋ก๋๋๋ ๋ฆฌ์์ค๋ฅผ ์๋ณํฉ๋๋ค.
์์: Chrome ๊ฐ๋ฐ์ ๋๊ตฌ์์ ์ฝ๋ ํ๋กํ์ผ๋งํ๊ธฐ:
- Chrome ๊ฐ๋ฐ์ ๋๊ตฌ๋ฅผ ์ฝ๋๋ค(๋ง์ฐ์ค ์ค๋ฅธ์ชฝ ๋ฒํผ ํด๋ฆญ ํ "๊ฒ์ฌ" ์ ํ ๋๋ ํค๋ณด๋ ๋จ์ถํค F12 ์ฌ์ฉ).
- "Performance" ํญ์ผ๋ก ์ด๋ํฉ๋๋ค.
- "Record" ๋ฒํผ์ ํด๋ฆญํฉ๋๋ค.
- ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ์ํธ์์ฉํฉ๋๋ค.
- "Stop" ๋ฒํผ์ ํด๋ฆญํฉ๋๋ค.
- ๊ธฐ๋ก๋ ํ๋กํ์ ๋ถ์ํ์ฌ ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ ์๋ณํฉ๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ ์ต์ ํ ๊ธฐ๋ฒ
์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ ์๋ณํ ํ์๋ ๋ค์๊ณผ ๊ฐ์ ์ต์ ํ ๊ธฐ๋ฒ์ ๊ตฌํํ์ธ์:
- ์ฝ๋ ์คํ๋ฆฌํ : ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ํ์ํ ๋ ๋ก๋ํ ์ ์๋ ๋ ์์ ๋ฉ์ด๋ฆฌ๋ก ๋๋๋๋ค. ์ด๋ ์ด๊ธฐ ๋ก๋ ์๊ฐ์ ์ค์ฌ์ค๋๋ค. React, Angular, Vue.js์ ๊ฐ์ ํ๋ ์์ํฌ๋ ์ฝ๋ ์คํ๋ฆฌํ ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ง์ํฉ๋๋ค.
- ์ง์ฐ ๋ก๋ฉ(Lazy Loading): ๋ฆฌ์์ค๊ฐ ํ์ํ ๋๋ง ๋ก๋ํฉ๋๋ค. ์ด๋ ์ด๋ฏธ์ง, ๋น๋์ค ๋ฐ ํ๋ฉด ๋ฐ ์ฝํ ์ธ ์ ํนํ ํจ๊ณผ์ ์ ๋๋ค.
- ์์ถ(Minification): ๊ณต๋ฐฑ, ์ฃผ์์ ์ ๊ฑฐํ๊ณ ๋ณ์ ์ด๋ฆ์ ์ค์ฌ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ ํฌ๊ธฐ๋ฅผ ์ค์ ๋๋ค. UglifyJS ๋๋ Terser์ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ธ์.
- ์์ถ(Compression): Gzip ๋๋ Brotli๋ฅผ ์ฌ์ฉํ์ฌ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ ์์ถํ์ฌ ๋คํธ์ํฌ๋ฅผ ํตํ ํฌ๊ธฐ๋ฅผ ์ค์ ๋๋ค.
- ์บ์ฑ: ์บ์ฑ ์ ๋ต์ ๊ตฌํํ์ฌ ์์ฃผ ์ก์ธ์คํ๋ ๋ฆฌ์์ค๋ฅผ ๋ก์ปฌ์ ์ ์ฅํจ์ผ๋ก์จ ์๋ฒ์์ ๋ฐ๋ณต์ ์ผ๋ก ๊ฐ์ ธ์ฌ ํ์์ฑ์ ์ค์ ๋๋ค. HTTP ์บ์ฑ, ์๋น์ค ์์ปค ๋ฐ ๋ก์ปฌ ์คํ ๋ฆฌ์ง๋ฅผ ์ฌ์ฉํ์ธ์.
- ๋๋ฐ์ด์ฑ๊ณผ ์ค๋กํ๋ง: ๊ณผ๋ํ ์คํ์ ๋ฐฉ์งํ๊ธฐ ์ํด ์ด๋ฒคํธ ํธ๋ค๋ฌ์ ๋น๋๋ฅผ ์ ์ดํฉ๋๋ค. ์ด๋ ์คํฌ๋กค ๋ฐ ํฌ๊ธฐ ์กฐ์ ๊ณผ ๊ฐ์ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐ ํนํ ์ ์ฉํฉ๋๋ค.
- ์ด๋ฏธ์ง ์ต์ ํ: ์ ์ ํ ํ์(WebP)์ ์ฌ์ฉํ๊ณ , ์์ถํ๊ณ , ๋ฐ์ํ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฏธ์ง๋ฅผ ์ต์ ํํฉ๋๋ค.
- DOM ์กฐ์ ์ค์ด๊ธฐ: DOM ์กฐ์์ ๋น์ฉ์ด ๋ง์ด ๋ค ์ ์์ผ๋ฏ๋ก ๊ทธ ํ์๋ฅผ ์ต์ํํฉ๋๋ค. ๊ฐ์ DOM๊ณผ ์ผ๊ด ์ ๋ฐ์ดํธ๋ฅผ ์ฌ์ฉํ์ธ์.
- ์ฌ์ฉํ์ง ์๋ ์ฝ๋ ์ ๊ฑฐ: ์ฝ๋๋ฒ ์ด์ค์์ ์ฌ์ฉํ์ง ์๋ ์ฝ๋๋ฅผ ์ ๊ธฐ์ ์ผ๋ก ์ ๊ฑฐํ์ฌ ๋ฒ๋ค ํฌ๊ธฐ๋ฅผ ์ค์ ๋๋ค.
- ํจ์จ์ ์ธ ์ด๋ฒคํธ ์ฒ๋ฆฌ: ์ด๋ฒคํธ ์์์ ์ฌ์ฉํ๊ณ ๋ถํ์ํ ์ด๋ฒคํธ ๋ฆฌ์ค๋๋ฅผ ํผํ์ธ์.
- ์๋ํํฐ ์คํฌ๋ฆฝํธ ์ต์ ํ: ์๋ํํฐ ์คํฌ๋ฆฝํธ์ ์ํฅ์ ์ ์คํ๊ฒ ํ๊ฐํ๊ณ ๊ฐ๋ฅํ ๊ฒฝ์ฐ ์ง์ฐ ๋ก๋ฉ ๋๋ ๋น๋๊ธฐ ๋ก๋ฉ ์ฌ์ฉ์ ๊ณ ๋ คํ์ธ์. Google Analytics, ๊ด๊ณ ๋คํธ์ํฌ, ์์ ๋ฏธ๋์ด ํ๋ซํผ๊ณผ ๊ฐ์ ์๋น์ค์ ์๋ํํฐ ์คํฌ๋ฆฝํธ๋ ์ฑ๋ฅ์ ํฐ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค.
์์: `React.lazy`์ `Suspense`๋ฅผ ์ฌ์ฉํ์ฌ React์์ ์ฝ๋ ์คํ๋ฆฌํ ๊ตฌํํ๊ธฐ:
import React, { Suspense } from 'react';
const OtherComponent = React.lazy(() => import('./OtherComponent'));
function MyComponent() {
return (
<div>
<Suspense fallback={<div>Loading...</div>}>
<OtherComponent />
</Suspense>
</div>
);
}
๋น๋ ์๋ํ ๋ฐ ์ง์์ ํตํฉ/์ง์์ ๋ฐฐํฌ(CI/CD)
๋น๋ ํ๋ก์ธ์ค๋ฅผ ์๋ํํ๋ ๊ฒ์ ์ต์ ํ ๋ฐ ๋ฐฐํฌ๋ฅผ ๊ฐ์ํํ๋ ๋ฐ ํ์์ ์ ๋๋ค. CI/CD ํ์ดํ๋ผ์ธ์ ์ฑ๋ฅ ๊ฒ์ฌ๊ฐ ๊ฐ๋ฐ ์ํฌํ๋ก์ฐ์ ํตํฉ๋๋๋ก ๋ณด์ฅํฉ๋๋ค.
- ๋น๋ ๋๊ตฌ ์ฌ์ฉ: Webpack, Parcel ๋๋ Rollup๊ณผ ๊ฐ์ ๋น๋ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๋ ์คํ๋ฆฌํ , ์์ถ, ๋ฒ๋ค๋ง๊ณผ ๊ฐ์ ์์ ์ ์๋ํํฉ๋๋ค.
- ์ฑ๋ฅ ๊ฒ์ฌ ํตํฉ: ์ฑ๋ฅ ์ ํ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด CI/CD ํ์ดํ๋ผ์ธ์ ์ฑ๋ฅ ๊ฒ์ฌ๋ฅผ ํตํฉํฉ๋๋ค. Lighthouse ๋ฐ WebPageTest์ ๊ฐ์ ๋๊ตฌ๋ฅผ CI/CD ์ํฌํ๋ก์ฐ์ ํตํฉํ ์ ์์ต๋๋ค.
- ์๋ํ๋ ๋ฐฐํฌ: ๋ฐฐํฌ ํ๋ก์ธ์ค๋ฅผ ์๋ํํ์ฌ ์ต์ ํ๋ ์ฝ๋๊ฐ ๋น ๋ฅด๊ณ ํจ์จ์ ์ผ๋ก ๋ฐฐํฌ๋๋๋ก ํฉ๋๋ค.
- ๋ฒ์ ๊ด๋ฆฌ: Git๊ณผ ๊ฐ์ ๋ฒ์ ๊ด๋ฆฌ ์์คํ ์ ์ฌ์ฉํ์ฌ ์ฝ๋๋ฅผ ๊ด๋ฆฌํ๊ณ ๋ณ๊ฒฝ ์ฌํญ์ ์ถ์ ํฉ๋๋ค.
์์: CI/CD ํ์ดํ๋ผ์ธ์ Lighthouse ํตํฉํ๊ธฐ:
- Lighthouse๋ฅผ ๊ฐ๋ฐ ์์กด์ฑ์ผ๋ก ์ค์นํฉ๋๋ค.
- ์น์ฌ์ดํธ์ ๋ํด Lighthouse๋ฅผ ์คํํ๋ ์คํฌ๋ฆฝํธ๋ฅผ ๋ง๋ญ๋๋ค.
- ๊ฐ ๋น๋ ํ์ ์ด ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ๋๋ก CI/CD ํ์ดํ๋ผ์ธ์ ๊ตฌ์ฑํฉ๋๋ค.
- Lighthouse ๋ณด๊ณ ์๋ฅผ ๋ถ์ํ์ฌ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ์๋ณํฉ๋๋ค.
๊ธ๋ก๋ฒ ์ต์ ํ ์ ๋ต
๊ธ๋ก๋ฒ ์ฌ์ฉ์๋ฅผ ์ํ ์ต์ ํ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ฑ๋ฅ์ ๊ธฐ์ ์ ์ธ ์ธก๋ฉด์ ๋์ด์๋ ์์๋ค์ ๊ณ ๋ คํด์ผ ํฉ๋๋ค:
- ์ฝํ ์ธ ์ ์ก ๋คํธ์ํฌ(CDN): CDN์ ํ์ฉํ์ฌ ์ ์ธ๊ณ ์ฌ๋ฌ ์๋ฒ์ ์ฝํ ์ธ ๋ฅผ ๋ฐฐํฌํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ฌ์ฉ์๋ ๊ฐ์ฅ ๊ฐ๊น์ด ์๋ฒ์์ ์ฝํ ์ธ ์ ์ก์ธ์คํ ์ ์์ด ์ง์ฐ ์๊ฐ์ ์ค์ผ ์ ์์ต๋๋ค.
- ๊ตญ์ ํ(i18n) ๋ฐ ํ์งํ(l10n): i18n ๋ฐ l10n์ ๊ตฌํํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ค๋ฅธ ์ธ์ด์ ์ง์ญ์ ๋ง๊ฒ ์กฐ์ ํฉ๋๋ค. ์ฌ๊ธฐ์๋ ํ ์คํธ ๋ฒ์ญ, ๋ ์ง ๋ฐ ํตํ ์์ ์ง์ , ๋ค๋ฅธ ์๊ฐ๋ ์ฒ๋ฆฌ๊ฐ ํฌํจ๋ฉ๋๋ค. ๊ตญ์ ํ๋ฅผ ์ํด i18next ๋๋ React Intl๊ณผ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ธ์.
- ๋ฐ์ํ ๋์์ธ: ์ ์ธ๊ณ ์ฌ์ฉ์๋ค์ด ํด๋ํฐ, ํ๋ธ๋ฆฟ ๋ฑ ๋ค์ํ ๊ธฐ๊ธฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ธํฐ๋ท์ ์ ์ํ๋ฏ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ฐ์ํ์ด๋ฉฐ ๋ค์ํ ํ๋ฉด ํฌ๊ธฐ์ ์ฅ์น์ ๋ง๊ฒ ์กฐ์ ๋๋๋ก ํฉ๋๋ค.
- ์๋ฒ ์์น: ๋์ ๊ณ ๊ฐ๊ณผ ์ง๋ฆฌ์ ์ผ๋ก ๊ฐ๊น์ด ์์น์ ์๋ฒ๋ฅผ ํธ์คํ ํ๋ ๊ฒ์ ๊ณ ๋ คํ์ธ์.
- ๋ชจ๋ฐ์ผ ์ต์ ํ: ๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ๋ ์ธ๊ณ ์ฌ๋ฌ ์ง์ญ์์ ์ธํฐ๋ท์ ์ ์ํ๋ ์ฃผ์ ์๋จ์ ๋๋ค. ๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ์์ ์ํํ ์ฌ์ฉ์ ๊ฒฝํ์ ๋ณด์ฅํ๊ธฐ ์ํด ๋ชจ๋ฐ์ผ ์ต์ ํ๋ฅผ ์ฐ์ ์ํ์ธ์. ์ฌ๊ธฐ์๋ ์ด๋ฏธ์ง ์ต์ ํ, ์๋ฐ์คํฌ๋ฆฝํธ ํฌ๊ธฐ ์ค์ด๊ธฐ, ๋ถํ์ํ ์ ๋๋ฉ์ด์ ํผํ๊ธฐ๊ฐ ํฌํจ๋ฉ๋๋ค.
- ๋ค์ํ ์ง์ญ์์์ ์ฑ๋ฅ ๋ชจ๋ํฐ๋ง: RUM ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์ํ ์ง๋ฆฌ์ ์ง์ญ์ ์ฑ๋ฅ์ ๋ชจ๋ํฐ๋งํ๊ณ ์ต์ ํํ ์์ญ์ ์๋ณํฉ๋๋ค.
- ๋คํธ์ํฌ ์กฐ๊ฑด ๊ณ ๋ ค: ์ ์ธ๊ณ์ ์ผ๋ก ๋ค์ํ ๋คํธ์ํฌ ์กฐ๊ฑด์ ์ผ๋์ ๋์ธ์. ํ์ผ ํฌ๊ธฐ๋ฅผ ์ต์ํํ๊ณ ์ ์ง์ ๋ก๋ฉ๊ณผ ๊ฐ์ ๊ธฐ์ ์ ์ฌ์ฉํ์ฌ ๋๋ฆฐ ์ธํฐ๋ท ์ฐ๊ฒฐ์ ๋ง๊ฒ ์ต์ ํํ์ธ์.
- ์ ๊ทผ์ฑ: WCAG ๊ฐ์ด๋๋ผ์ธ์ ์ค์ํ์ฌ ์ฅ์ ๊ฐ ์๋ ์ฌ์ฉ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ๊ทผํ ์ ์๋๋ก ๋ณด์ฅํฉ๋๋ค. ์ฌ๊ธฐ์๋ ์ด๋ฏธ์ง์ ๋ํ ๋์ฒด ํ ์คํธ ์ ๊ณต, ์๋งจํฑ HTML ์ฌ์ฉ, ์ ์ ํ ํค๋ณด๋ ํ์ ๋ณด์ฅ์ด ํฌํจ๋ฉ๋๋ค. ์ ๊ทผ์ฑ์ ๊ณ ๋์ญํญ ์ธํฐ๋ท ์ฐ๊ฒฐ์ ๋ํ ์ ๊ทผ์ด ์ ํ๋ ์ง์ญ์ ์ฌ์ฉ์๋ฅผ ํฌํจํ ๋ชจ๋ ์ฌ์ฉ์์ ์ฌ์ฉ์ ๊ฒฝํ์ ํฅ์์ํต๋๋ค.
์์: i18next๋ก i18n ๊ตฌํํ๊ธฐ:
import i18next from 'i18next';
i18next.init({
lng: 'en',
resources: {
en: {
translation: {
'hello': 'Hello',
}
},
es: {
translation: {
'hello': 'Hola',
}
}
}
});
console.log(i18next.t('hello')); // Output: Hello (if language is set to English)
console.log(i18next.t('hello')); // Output: Hola (if language is set to Spanish)
ํ ์คํธ ๋ฐ ๋ฐ๋ณต
์ฑ๋ฅ ์ต์ ํ๋ ๋ฐ๋ณต์ ์ธ ๊ณผ์ ์ ๋๋ค. ๊ตฌํ์ ์ง์์ ์ผ๋ก ํ ์คํธํ๊ณ ๊ฐ์ ํ์ธ์.
- A/B ํ ์คํธ: ๋ค์ํ ์ต์ ํ ์ ๋ต์ ํ ์คํธํ์ฌ ์ด๋ค ๊ฒ์ด ๊ฐ์ฅ ํจ๊ณผ์ ์ธ์ง ๊ฒฐ์ ํฉ๋๋ค.
- ์ฌ์ฉ์ ํผ๋๋ฐฑ: ์ฌ์ฉ์๋ก๋ถํฐ ํผ๋๋ฐฑ์ ์์งํ์ฌ ๊ฐ์ ํ ์์ญ์ ์๋ณํฉ๋๋ค.
- ์ ๊ธฐ ๊ฐ์ฌ: ์น์ฌ์ดํธ์ ์ฑ๋ฅ์ ์ ๊ธฐ์ ์ผ๋ก ๊ฐ์ฌํ์ฌ ์ต์ ํ ์ํ๋ฅผ ์ ์งํฉ๋๋ค.
- ์ต์ ์ ๋ณด ์ ์ง: ์ต์ ์ฑ๋ฅ ๋ชจ๋ฒ ์ฌ๋ก ๋ฐ ํ๋ ์์ํฌ ์ ๋ฐ์ดํธ๋ฅผ ์ต์ ์ํ๋ก ์ ์งํ์ธ์. ์๋ฐ์คํฌ๋ฆฝํธ ์ฑ๋ฅ ์ต์ ํ๋ฅผ ์ํ ์๋ก์ด ๊ธฐ์ ๊ณผ ๋๊ตฌ๋ ๋์์์ด ๋ฑ์ฅํ๊ณ ์์ต๋๋ค. ํ๋ ์์ํฌ ์์ฒด๋ ์ฑ๋ฅ ๊ฐ์ ์ด ํฌํจ๋ ์๋ก์ด ๋ฒ์ ์ ์ถ์ํฉ๋๋ค.
๊ฒฐ๋ก
๊ฒฌ๊ณ ํ ์๋ฐ์คํฌ๋ฆฝํธ ์ฑ๋ฅ ์ธํ๋ผ๋ฅผ ๊ตฌํํ๋ ๊ฒ์ ์ ์ธ๊ณ ์ฌ์ฉ์์๊ฒ ๋น ๋ฅด๊ณ ํจ์จ์ ์ธ ์น ๊ฒฝํ์ ์ ๊ณตํ๋ ๋ฐ ํ์์ ์ ๋๋ค. ์ฑ๋ฅ ๋ชจ๋ํฐ๋ง, ํ๋กํ์ผ๋ง, ์ต์ ํ ๊ธฐ๋ฒ, ๋น๋ ์๋ํ์ ์ง์คํจ์ผ๋ก์จ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์์ต๋๋ค. ์ต์ ํ๋ ์ง์์ ์ธ ๊ณผ์ ์์ ๊ธฐ์ตํ์ธ์. ์ต์์ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ๊ธฐ ์ํด ์ง์์ ์ผ๋ก ๋ชจ๋ํฐ๋ง, ๋ถ์, ๋ฐ๋ณตํ์ธ์. ์ฑ๋ฅ์ ๋ํ ์ด๋ฌํ ๋ ธ๋ ฅ์ ์ฌ์ฉ์ ๋ง์กฑ๋์ ๊ฒฝ์์ด ์น์ดํ ๊ธ๋ก๋ฒ ์์ฅ์์ ์น์ฌ์ดํธ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๊ณต์ ๋งค์ฐ ์ค์ํฉ๋๋ค.