Skip to content

Latest commit

ย 

History

History
79 lines (44 loc) ยท 4.62 KB

2022-07-01.md

File metadata and controls

79 lines (44 loc) ยท 4.62 KB

Front-end ๊ฐœ๋ฐœ์ž๊ฐ€ Rust์™€ Go๋ฅผ ๋ฐฐ์šฐ๋Š” ์‹œ๋Œ€

๋ณต์žกํ•ด์ง€๋Š” ์›น

์›น์ด ๋ณต์žกํ•ด์ง€๊ณ  ์žˆ๋‹ค. ์ด์œ ๋Š” ์›น์ด ์ค‘์š”ํ•ด์ง€๊ณ  ์žˆ๋‹ค. ์˜ˆ์ „์—๋Š” 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๋ผ๋Š” ์ œ์•ฝ์ด ์ƒ๋‹นํžˆ ํฌ๋‹ค. ๋ฐ์ดํ„ฐ์˜ ์˜์กด์„ฑ์ด ์—†์–ด ๋ณ‘๋ ฌ์ฒ˜๋ฆฌ ํ•  ์ˆ˜ ์žˆ์Œ์—๋„ ๋™์‹œ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ์Œ์—๋„ ํ•œ์ž‘์—…์ด ๋๋‚˜์•ผ ๋‹ค๋ฅธ ์ž‘์—…์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค.

Babel์˜ ํ•œ๊ณ„

  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ธฐ๋ฐ˜
  • 1๊ฐœ์˜ CPU ์ฝ”์–ด๋งŒ ์‚ฌ์šฉ
  • ํŒŒ์‹ฑ, ์ฝ”๋“œ ์ œ๋„ˆ๋ ˆ์ด์…˜์€ ์‹œ๊ฐ„์„ ํŠนํžˆ ๋งŽ์ด ๋จน์Œ

๋ชฉํ‘œ๋Š” ์›น๋นŒ๋“œ ํˆด์„ ๊ณ ์„ฑ๋Šฅ ๊ตฌํ˜„์ฒด๋กœ ๋Œ€์ฒดํ•˜๋Š” ๊ฒƒ

๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์–ธ์–ด๋ฅผ ๋ฐ”๊พธ์—ˆ๋‹ค.

  • ๋Ÿฌ์ŠคํŠธ๋กœ ์ž‘์„ฑ๋จ
  • ๋ฐ”๋ฒจ์„ ํฌํ•จํ•œ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์›น ๋นŒ๋“œ ํˆด๋“ค์„ ๋Œ€์ฒดํ•˜๋Š” ๊ฒƒ์ด ๋ชฉ์ 

๋Ÿฌ์ŠคํŠธ๋ฅผ ์„ ํƒํ•œ ์ด์œ 

  • ์„ฑ๋Šฅ: ๋ณ‘๋ ฌ์ฒ˜๋ฆฌ๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ์„ค๊ณ„ํ•œ ์–ธ์–ด
  • FFI(Foreign Function Interface) ํŽธ์˜์„ฑ: nodejs์—์„œ rust์ฝ”๋“œ๋ฅผ ๋ถˆ๋Ÿฌ์™€ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค.
  • GC: rust์—๋Š” gc๊ฐ€ ์—†๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ gc๊ฐ€ ์žˆ์œผ๋ฉด ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœํ•˜๋Š”๊ฒŒ ์‰ฌ์›Œ์ง„๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์—ฌ๋Ÿฌ ์–ธ์–ด๊ฐ€ ์„ž์ด๋Š” ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ๋ฐ˜๋Œ€์ด๋‹ค. ๋‘ ์–ธ์–ด์— gc๊ฐ€ ์žˆ์œผ๋ฉด ํ•œ ์–ธ์–ด์—์„œ๋Š” ์ฐธ์กฐ๊ฐ€ ๊ฐ€๋Šฅํ•œ๋ฐ ๋‹ค๋ฅธ ์–ธ์–ด์—์„œ๋Š” ์ฐธ์กฐ๊ฐ€ ์—†๋Š”๊ฒฝ์šฐ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ•ด์ œ๋˜์ง€ ์•Š๋„๋ก ์ฒ˜๋ฆฌํ•ด์ค˜์•ผํ•˜๊ณ  ์ฝ”๋“œ๊ฐ€ ๋ณต์žกํ•ด์ง„๋‹ค.
  • ์ œ๋„ˆ๋ฆญ: rust์—๋Š” ์ œ๋„ˆ๋ฆญ์ด ์žˆ๋‹ค. ์ œ๋„ˆ๋ฆญ์ด ์žˆ์œผ๋ฉด ๊ฐœ๋ฐœ์ด ํŽธํ•ด์ง„๋‹ค.

Benchmarks

๋ฐด์น˜๋งˆํฌ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉด babel๋ณด๋‹ค 20๋ฐฐ ๋นจ๋ผ์กŒ๋‹ค.

https://swc.rs/docs/benchmarks

https://nextjs.org/blog/next-12

img

img

  • Webpack์˜ ๋Œ€์ฒด์ œ (๋ฒˆ๋“ค๋Ÿฌ)
  • Go ์–ธ์–ด๋กœ ์ž‘์„ฑ๋จ (Go, JS/TS)
  • ์ฝ”๋“œ ํŒŒ์‹ฑ, ์ถœ๋ ฅ๊ณผ ์†Œ์Šค๋งต ์ƒ์„ฑ์„ ๋ชจ๋‘ ๋ณ‘๋ ฌ๋กœ ์ฒ˜๋ฆฌํ•จ

Reference