์น์ด ๋ณต์กํด์ง๊ณ ์๋ค. ์ด์ ๋ ์น์ด ์ค์ํด์ง๊ณ ์๋ค. ์์ ์๋ JS๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์น ํ๋ก๊ทธ๋๋ฐ์ ๊ฐ๋ฐํ๋ค. ๊ทธ๋ฌ๋ค node js๊ฐ ๋์๊ณ CommonJS ๋ชจ๋ ์์คํ ์ด ๋์ค๊ฒ ๋์๋ค.
es6๊ฐ ๋์ค๊ฒ ๋๋ฉด์ ๋งค์ฐ ๋ง์ ๊ฒ๋ค์ด ๋ฐ๊ผ๋ค. ํ์ ํธ์์ฑ ๋๋ฌธ์ ๋ง์ ๊ฒ๋ค์ ๋ฐ๊พธ์ง ๋ชปํ์ง๋ง ๊ทธ๋๋ ๋ง์ ๊ฒ๋ค์ด ๊ฐ์ ๋์๊ณ ๊ฐ๋ฐํ๊ธฐ ํธํด์ก๋ค. ํด๋์ค, import/export ๋ฑ..
๊ทธ๋ฐ๋ฐ ์ฌ๊ธฐ์ ๋ฌธ์ ๊ฐ ์๋ค. ์ค๋๋ ๋ธ๋ผ์ฐ์ ๊ฐ ์ต์ ๋ฌธ๋ฒ์ ์ดํดํ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ด๋ค. ์ด๋ฅผ ์ํด ๋์จ๊ฒ Babel์ด๋ค.
๊ฐ๋ฐํ ๋๋ ์ต์ ๋ฌธ๋ฒ์ ์ฐ๊ณ ํด์ ์ด์ฉํด์ ์ค๋๋ ๋ธ๋ผ์ฐ์ ์์๋ ๋์๊ฐ๋ ์ฝ๋๋ก ๋ณํ ์ํค๋ ๊ฒ์ด๋ค. ์ฌ๊ธฐ์ ์น ํ๋ก์ ํธ๋ฅผ ๋น๋ํ๋ค๋ ๊ฐ๋ ์ด ๋์ค๊ฒ ๋์๋ค.
๋ค์์ผ๋ก React, Vue, Angular๋ฑ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํ๋ ์์ํฌ๊ฐ ๋์ค๊ฒ ๋์๋ค. html์ ์ง์ ์น๊ธฐ ํ๋๋ ์๋ก์ด ๋ฌธ๋ฒ์ ๋์ ํ์๋ ๊ฑด๋ฐ ์ด๊ฒ ์ฌ๋ฌ๋ชจ๋ก ์ ๋จนํ์ ์ง๊ธ์ react๋ฅผ ์ฐ๋ ๊ณณ์ด ๋ง์์ก๋ค.
์ต์ ๋ฌธ๋ฒ์ด๋ , React๋ฅผ ์ฌ์ฉํ ๋ ๋ธ๋ผ์ฐ์ ๊ฐ ์ดํดํ ์ ์๋ ์ฝ๋๋ก ๋ฐ๊ฟ์ค์ผ ํ๋ค. ๊ทธ๋ด๋ ค๋ฉด ๋น์ฐํ ์ด์ผ๊ธฐ์ด์ง๋ง Transpilling ํ๋ฉด ๋๋ค. ์ด ์์ ์ ํด์ฃผ๋๊ฒ babel์ด๋ค.
๋ํ ์น์์ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ํ๋ ์ผ์ด ๋ง์์ง๊ณ ์์ด ๋์ด๋๋งํผ ์๋ฐ์คํฌ๋ฆฝํธ ๋ชจ๋๋ค์ ํ๋๋ก ํฉ์น๊ณ ์ต์ข ์๋ฐ์คํฌ๋ฆฝํธ ์ฌ์ด์ฆ๋ฅผ ์ค์ฌ ๋ก๋ฉ์๋๋ฅผ ๋น ๋ฅด๊ฒํ ํ์๊ฐ ์์๋ค.
๊ฐ๋ฐํ๊ฒฝ์ด ํธํด์ง์ ๋ฐ๋ผ ์ด๊ธฐ ๊ตฌ์ฑ์ ์ด๋ ค์์ ๋์ด๊ฐ ์ ์์๋ค. ์๋ฃ๋ ๋ง๊ณ ์์ฃผ ๋ฐ๋์ง ์์์ผ๋๊น์.
๊ทธ๋ฐ๋ฐ ๋น๋ํ ๋ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ด ๋ฌธ์ ๋ค ์์ฒญ ๋๋ฆฌ๋ค. ์ ๋๋ก production ๋น๋๋ฅผ ํ ๋๋ ๋ถ๋จ์๊ฐ ๋์ด๊ฐ๋ค.
์ ๋น๋ ๋ ๋๋ฆด๊น? ๋น๋ ํด๋ค์ CPU๋ฅผ ๋ง์ด ํ์ฉํ๋ค. ํ์ง๋ง ์ด๋ฒคํธ ๋ฃจํ๋ CPU ์์ฃผ์ ์์ ์ ๋ง๋ ๋ชจ๋ธ์ด ์๋. ๋ค๋ฅธ ์ต์ ํ ๋ฐฉ์์ 10% 20% ์๋๋ฅผ ์ค์ด๋ฉด ์ต์ ํ๋ฅผ ์ํ๊ฑฐ์ง๋ง, ๋ณ๋ ฌ์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ช ๋ฐฐ์ฉ ์๋๊ฐ ๋นจ๋ผ์ง๋ค. nodejs์์ js ์ฝ๋๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ๊ฐ์ CPU๋ง ์ฌ์ฉํ๋ค. nodeJS๋ ์ด๋ฒคํธ๋ฃจํ ๊ธฐ๋ฐ์ด๊ธฐ์ cpu๋ฅผ ๋ง์ด ์ฌ์ฉํ๋ ์์ ์๋ ๋ง์ง์๋ค.
single tread๋ผ๋ ์ ์ฝ์ด ์๋นํ ํฌ๋ค. ๋ฐ์ดํฐ์ ์์กด์ฑ์ด ์์ด ๋ณ๋ ฌ์ฒ๋ฆฌ ํ ์ ์์์๋ ๋์์์ ์ ํ ์ ์์์๋ ํ์์ ์ด ๋๋์ผ ๋ค๋ฅธ ์์ ์ ์์ํ ์ ์๋ค.
- ์๋ฐ์คํฌ๋ฆฝํธ ๊ธฐ๋ฐ
- 1๊ฐ์ CPU ์ฝ์ด๋ง ์ฌ์ฉ
- ํ์ฑ, ์ฝ๋ ์ ๋๋ ์ด์ ์ ์๊ฐ์ ํนํ ๋ง์ด ๋จน์
๋ชฉํ๋ ์น๋น๋ ํด์ ๊ณ ์ฑ๋ฅ ๊ตฌํ์ฒด๋ก ๋์ฒดํ๋ ๊ฒ
๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ธ์ด๋ฅผ ๋ฐ๊พธ์๋ค.
- ๋ฌ์คํธ๋ก ์์ฑ๋จ
- ๋ฐ๋ฒจ์ ํฌํจํ ์ฌ๋ฌ๊ฐ์ง ์น ๋น๋ ํด๋ค์ ๋์ฒดํ๋ ๊ฒ์ด ๋ชฉ์
- ์ฑ๋ฅ: ๋ณ๋ ฌ์ฒ๋ฆฌ๋ฅผ ๊ณ ๋ คํ์ฌ ์ค๊ณํ ์ธ์ด
- FFI(Foreign Function Interface) ํธ์์ฑ: nodejs์์ rust์ฝ๋๋ฅผ ๋ถ๋ฌ์ ์ฌ์ฉํ๊ธฐ ์ํด ์ฌ์ฉํ๋ค.
- GC: rust์๋ gc๊ฐ ์๋ค. ์ผ๋ฐ์ ์ผ๋ก gc๊ฐ ์์ผ๋ฉด ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํ๋๊ฒ ์ฌ์์ง๋ค. ๊ทธ๋ฐ๋ฐ ์ฌ๋ฌ ์ธ์ด๊ฐ ์์ด๋ ํ๋ก์ ํธ์์๋ ๋ฐ๋์ด๋ค. ๋ ์ธ์ด์ gc๊ฐ ์์ผ๋ฉด ํ ์ธ์ด์์๋ ์ฐธ์กฐ๊ฐ ๊ฐ๋ฅํ๋ฐ ๋ค๋ฅธ ์ธ์ด์์๋ ์ฐธ์กฐ๊ฐ ์๋๊ฒฝ์ฐ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํด์ ๋์ง ์๋๋ก ์ฒ๋ฆฌํด์ค์ผํ๊ณ ์ฝ๋๊ฐ ๋ณต์กํด์ง๋ค.
- ์ ๋๋ฆญ: rust์๋ ์ ๋๋ฆญ์ด ์๋ค. ์ ๋๋ฆญ์ด ์์ผ๋ฉด ๊ฐ๋ฐ์ด ํธํด์ง๋ค.
๋ฐด์น๋งํฌ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉด babel๋ณด๋ค 20๋ฐฐ ๋นจ๋ผ์ก๋ค.
https://swc.rs/docs/benchmarks
https://nextjs.org/blog/next-12
- Webpack์ ๋์ฒด์ (๋ฒ๋ค๋ฌ)
- Go ์ธ์ด๋ก ์์ฑ๋จ (Go, JS/TS)
- ์ฝ๋ ํ์ฑ, ์ถ๋ ฅ๊ณผ ์์ค๋งต ์์ฑ์ ๋ชจ๋ ๋ณ๋ ฌ๋ก ์ฒ๋ฆฌํจ