grep

Frontend

한Bun 써보는 거 어때?

Giri여기어때

2022년 7월 22일

원문에서 보기 ↗

Bun is a fast all-in-one JavaScript runtime

안녕하세요. 프론트엔드 개발팀 ‘기리 와 니키’ 입니다.

무더운 여름, 후텁지근한 날씨와 쌓여있는 업무에 많이들 지치실 텐데요

이 여름의 열기만큼이나 뜨거운 스포트라이트를 받는 기술이 있어

이번 기회에 ‘뜨거운 양파 Bun‘에 대해 소개해볼까 합니다.

출처 : bun.sh

Bun 이란?

Bun은 Node 또는 Deno와 같은 JavaScript 런타임 및 패키지 관리자입니다.

Bun : https://bun.sh/ 
github : https://github.com/oven-sh/bun

왜 빠를까?

Bun은 V8엔진을 사용하는 기존의 Node, Deno와는 달리 일반적으로 더 빠른것으로 간주되는 WebKit의 JavaScriptCore를 기반으로 구축되었으며, C++, Rust가 아닌 시스템 하드웨어에서 읽을 수 있는 저수준 프로그래밍 언어인 Zig로 작성되어있어 더 빠르게 동작할 수 있는 것으로 보입니다.

ziglang : https://ziglang.org/ko/

Bun의 특징

Bun install

Bun의 설치 및 사용 명령어들은 Node와 비슷한 부분이 매우 많습니다.

저희가 Bun을 처음 봤지만 생소하지 않게 느껴지는 이유도 Node와 유사한 명령어 때문이라고 생각 됩니다.

curl -fsSL https://bun.sh/install | bash

Bun command

Bun을 설치 후 터미널에 bun -help를 입력해 보시면 많은 명령어가 나오는데, 자주 사용할만한 명령어를 몇 가지 정리해보았습니다.

Node vs Bun 속도 비교

Bun과 Node의 속도 차이를 보기 위하여 피보나치수열을 구현하여 테스트 해 보았습니다.

// 피보나치수열
function fibonacci(n) {
 return n < 1 ? 0 : n < 2 ? 1 : fibonacci(n - 1) + fibonacci(n - 2);
}
// 실행 시간 측정
console.time('fibonacci');
console.log(fibonacci(n));
console.timeEnd('fibonacci');

fibonacci(10) Node 실행

fibonacci(10) Bun 실행

fibonacci(50) Node 실행

fibonacci(50) Bun 실행

npm install vs Bun install

TypeScript가 적용된 create-react-app 기준으로 속도 측정 테스트를 해 보았습니다.

Bun으로 React CLI 설치해보기

마지막으로 Bun을 사용하여 create-react-app을 설치 해 보도록 하겠습니다.

  1. React CLI 설치
bun create react bun-react

  1. production build를 위한 react-scripts 설치
bun add react-scripts
  1. package.json 파일 내부에 script 추가
...
"scripts": {
    "start": "bun dev",
    "build": "react-scripts build"
  }
...
  1. 로컬 서버 실행

마무리

Bun은 현재 macOS(x86 및 Arm), Windows 하위 시스템(WSL)에서만 사용 가능하여 개발 환경이 한정적입니다. 현재 v0.1.4로 v1도 나오지 않은 베타버전이라 속도만 바라보면 괜찮다고 생각은 들지만, 보안 및 다른 어떠한 이슈가 생길 지 모르므로 프로덕션 단계에 적용하기까지는 시간이 필요할 것으로 보입니다.

아마 내년정도면 사용해 볼만할지도..?