Bun으로 패키지 설치 시간을 28분에서 47초로 줄이는 법
8. Mai 2026
0
컴퓨터/소프트웨어Comments (0)
Log in to leave a comment
No posts yet
Log in to leave a comment
No posts yet
Node.js 환경에서 의존성 덩어리와 씨름하다 보면 내가 코드를 짜는 건지, 설치 바를 구경하는 건지 헷갈릴 때가 많습니다. Bun은 단순히 빠른 런타임을 넘어 AI 에이전트와 협업하기에 꽤 괜찮은 판을 깔아줍니다. 속도라는 표면적인 이유 뒤에 숨은 실무적인 이주 방법과 구조 설계 이야기를 해보겠습니다.
Bun은 Zig 언어로 밑바닥부터 다시 짰습니다. 덕분에 Node.js v22보다 패키지 설치가 압도적으로 빠릅니다. 하지만 기존 package-lock.json을 그대로 둔 채 Bun을 섞어 쓰면 락파일이 꼬여서 배포 장비에서 비명이 터져 나옵니다. 이럴 때는 어설프게 병행하지 말고 판을 새로 짜야 합니다.
먼저 node_modules와 기존 락파일을 과감히 지우십시오. 그다음 터미널에서 bun install --frozen-lockfile을 실행하면 Bun만의 이진 락파일인 bun.lockb가 생성됩니다. bcrypt처럼 C++ 애드온을 써서 컴파일 에러를 뿜는 라이브러리는 bcryptjs로 바꾸거나 Bun 내장 API인 bun:sqlite를 쓰는 게 정신 건강에 이롭습니다. 1,800개 넘는 의존성을 가진 프로젝트에서 28분 걸리던 작업이 47초로 줄어드는 경험은 꽤 짜릿합니다.
LLM 기반 AI 에이전트에게 수천 라인짜리 파일을 던져주면 금방 길을 잃고 헛소리를 합니다. Bun은 파일 I/O가 워낙 빨라서 파일을 아주 잘게 쪼개도 성능 저하가 거의 없습니다. 에이전트가 코드를 수정할 때 정확도를 높이려면 파일 하나당 100라인 이내로 유지하는 구조가 유리합니다.
저는 프로젝트 내에 src/agents, src/tools처럼 기능을 완전히 분리한 폴더를 만듭니다. 그리고 Bun.serve와 Bun.file을 엮어서 특정 디렉토리만 만질 수 있는 게이트웨이를 구축합니다. targetPath.startsWith로 경로를 검증하면 에이전트가 내 맥북의 시스템 설정을 뒤지는 사고를 막을 수 있습니다. 보안도 챙기고 토큰 비용도 아끼는 구조입니다.
AI 에이전트가 도구를 호출했는데 응답이 한참 뒤에 오면 사용자 경험은 망가집니다. Express는 라우트를 찾을 때 순서대로 뒤지는 방식이라 요청이 많아지면 느려집니다. 반면 Hono는 트라이(Trie) 알고리즘을 써서 경로를 즉시 찾아냅니다.
실제로 Bun과 Hono를 결합하면 초당 요청 처리량(RPS)이 약 41,800회까지 치솟습니다. Express보다 3배 이상 빠릅니다. bun add hono로 시작하고 환경 변수는 Bun.env로 바로 읽으십시오. 여기에 Bun의 고성능 WebSocket API까지 붙이면 실시간 응답 지연 시간을 27ms 수준으로 묶어둘 수 있습니다. 굼뜬 서버 때문에 AI가 멍하니 기다리는 꼴을 안 봐도 됩니다.
나만 Bun을 쓴다고 해결될 일이 아닙니다. 팀원 모두가 같은 환경을 써야 프로덕션에서 사고가 안 납니다. .bunfig.toml 파일을 루트에 던져두고 사설 레지스트리 정보나 락파일 옵션을 고정하십시오. 신규 팀원이 와서 삽질하는 시간을 줄여줍니다.
배포할 때는 Docker 이미지 크기에 신경을 써야 합니다. oven/bun:1 이미지를 베이스로 쓰되 bun build --compile 옵션을 활용해 소스코드를 단일 실행 파일로 만드십시오. 이 파일만 쏙 골라내서 distroless 이미지에 넣으면 1GB가 넘던 Node.js 이미지가 200MB 이하로 줄어듭니다. 이미지 용량이 작아지면 클라우드 인프라 비용이 40% 정도 줄어드니 안 할 이유가 없습니다.