"내 컴퓨터에선 안 되는데요?" 배포의 악몽을 끝내기 위한 NextRows x Bun 도입기
(nextrows.com)데스크탑 앱을 배포할 때 가장 골치 아픈 게 사용자 PC 환경이잖아요. 버전 안 맞고, 패키지 충돌 나고... 이 블로그에서는 어떻게 Bun도입으로 이 문제를 해결했는지 공유합니다.
기존에 붙어있던 번들러와 테스트 도구들을 Bun 하나로 '올인원' 통합하면서 빌드 파이프라인이 얼마나 단순해졌는지, 그리고 Bun Worker를 써서 데이터 처리 성능을 어떻게 최적화했는지 더 구체적인 내용은 블로그 원문 확인하세요.
한국어 요약:
Bun을 선택한 3가지 기술적 이유
[시스템 의존성 완벽 제거 (The System-Dependency Problem)]
기존 Node.js 환경에서는 버전 충돌, 빌드 도구(Python, Xcode 등) 부재, OS 아키텍처 불일치 등의 문제가 발생했습니다. Bun을 앱에 직접 임베딩(Embedding) 함으로써, 사용자의 PC 환경과 상관없이 격리되고 통제된 런타임 환경을 제공할 수 있게 되었습니다.
[효율적인 런타임 아키텍처 (Runtime Architecture)]
로컬 데이터 처리: CSV 파싱이나 엑셀 정규화 같은 무거운 작업을 Bun Worker로 처리합니다. 시작 속도(Startup)가 빠르고 메모리 사용량이 적어 효율적입니다.
자동화 작업: 크론(Cron) 작업 등 백그라운드 작업을 가벼운 프로세스로 격리하여 UI 반응성을 해치지 않고 실행합니다.
[툴체인 통합 (Toolchain Consolidation)]
Bun은 번들러, 트랜스파일러, 테스트 러너가 하나로 통합되어 있습니다. 덕분에 복잡했던 빌드 파이프라인이 단순해졌고, 빌드 속도는 빨라졌으며, 배포 시 발생할 수 있는 변수들이 줄어들었습니다.
도입 결과
사용자 경험 향상: 앱 실행 속도(Cold start)가 빨라지고, 저사양 하드웨어에서도 CPU/메모리 사용량이 감소했습니다.
안정성 확보: macOS와 Windows 간의 동작 차이가 사라져, 마치 '네이티브 바이너리' 앱처럼 안정적으로 작동합니다.
결론 Bun은 단순한 속도 향상을 넘어, 개발 환경을 관리할 수 없는 사용자에게 배포해야 하는 독립형(Self-contained) 데스크탑 애플리케이션에 최적화된 선택이었음.