▶▶ 이 리뷰 출판사로부터 도서를 제공 받아, 직접 읽고 작성한 리뷰입니다. <헬로 Bun>은차세대 자바스크립트 런타임인 Bun을 다룹니다.Bun은 Go 언어 기반으로 설계된 고성능 엔진을 사용하여 매우 빠른 속도로 코드를 빌드하고 패키지를 관리합니다. 기존 Node.js 생태계에 대한 불편함을 느꼈던 사용자들이라면 매력적으로 다가올 도구에 대해 종합적으로 설명합니다. Node.js의 복잡성과 성능 제약을 해결하고자 탄생한 Bun은 패키지 매니저, 번들러, 모듈 시스템, 그리고 테스트 러너와 같은 필수 기능을 내장하고도 성능에서 압도적인 속도를 자랑합니다. 책은 설치부터 CLI, HTTP 서버 개발, 파일 입출력, DB 사용 등 다양한 Bun의 활용 사례를 통해 전반적인 사용법을 입문자가 쉽게 이해할 수 있도록 구성되어 있습니다. 개인적으로 Node.js 초급 수준으로만 사용해본 입장에서, Bun의 장점으로 언급되는 ‘빠른 실행 속도’와 ‘다양한 내장 기능’은 상당히 인상적이었습니다. 기존 Node.js 환경에서 외부 라이브러리나 다양한 설정이 필요했던 것들이 Bun에서는 런타임, 번들러, 패키지 매니저 등이 내장되어 있거나 별도의 설정 없이 사용할 수 있어 별도의 추가 도구 없이 통합 개발이 가능하여 개발을 간소화할 수 있습니다. 특히, Bun의 패키지 관리 속도는 npm보다 29배 빠르다고 하여 대규모 패키지 관리가 필요할 때 시간을 크게 절약할 수 있을 것으로 기대됩니다. 또한, Bun의 다양한 기능과 자체 내장된 SQLite DB 기능도 다루며, 단순한 런타임 이상으로 개발자 경험을 극대화할 수 있는 다양한 활용 방법을 제시합니다. 특히 타입스크립트와 JSX도 별도의 설정 없이 바로 실행할 수 있는 점은 Node.js에서 설정을 반복하던 경험을 덜어주어 웹 개발의 생산성을 크게 향상시키는 것으로 느껴졌습니다. 정리하자면, 이 책은 새로운 자바스크립트 런타임에 대한 부담을 덜어내고 입문자가 직관적으로 Bun을 사용할 수 있게 돕는 친절한 안내서입니다. 복잡한 설정을 줄이고 싶은 개발자, 웹 개발 생산성을 높이고자 하는 초급 사용자에게 Bun은 매우 매력적인 대안이 될 수 있습니다. Bun이 제공하는 기능을 잘 활용해보며 자바스크립트 개발의 새로운 가능성을 탐구해보길 추천드립니다. #헬로Bun #헬로_Bun #Bun #서대영 #달레 #Jpub #자바스크립트 #IT #개발자 #제이펍 #JPub 헬로 Bun
|
|
이번에 읽은 도서는 JavaScript 런타임이자 올인원 개발 툴킷인 Bun에 대한 내용을 담은 도서이다. 사실 이 책을 접하기 전까지는 Bun에 대해 잘 몰랐다. 이름만 얼핏 들어본 수준? 그도 그럴 것이 내가 현재 자바스크립트 기반으로 주력 개발을 하고 있지 않은 상황에서 Bun이 이제 겨우 정식 출시된지 1년 정도된 런타임이기 때문에 잘 모를 수도 있는게 어찌 보면 당연한 일인 것 같다. Bun 공식 홈페이지나 GitHub 등을 뒤져봤지만 왜 이름을 Bun이라고 지었는지 는 알 수 없었다. 약자인가 싶기도 한데, 왠지 그런 가설보다는 bun이라는 이름처럼 여러 가지 기능을 하나의 빵처럼 구웠다는 의미에서 그렇게 지은게 아닌가 싶다. 커맨드도 세글자라 단순하기도 하고.. 예전에 로○번 등 bun 집이 엄청나게 유행했었던 기억도 나는데, 어쩌면 제작자가 bun을 좋아해서 일 수도 있겠다. ^^ Bun은 그러한 자바스크립트를 사용함에 있어 느림과 복잡성을 제거하는 것을 목표로 개발된 차세대 자바스크립트 런타임이며, Node.js나 Deno처럼 기본적으로 백엔드 개발에 사용하기 위해 만들어졌다. 또한 기존의 Node.js와의 호환성을 그대로 유지하면서도 성능을 개선하고 복잡성을 줄일 수 있도록 도와주며, 올인원 개발 툴킷이라는 이름에 걸맞게 개발자 생산성을 배가하기 위한 여러 가지 도구를 제공하고 있다. (Node.js를 대체하는 것이 목표라고 한다.) 아래와 같이 Bun 공식 홈페이지의 랜딩 페이지에서 Bun과 Deno, Node.js에 대한 벤치마크 결과(아래 그림의 우측 그래프)를 보여주고 있는데, HTTP request에 대한 hello world 페이지를 생성하는 Server-side React redering의 경우, Bun v1.1 기준으로 초당 처리량에 있어 Node.js v21.7.1보다 4.9배, Deno v1.42.1보다 1.8배 정도 빠르다고 한다. 테스팅이나 번들링과 같은 여러 가지 생산성 측면을 제쳐두고 이 벤치마킹 결과만 봤을 때에도, Bun에서 지원하는 패키지 측면에서만 문제가 없다면 앞으로는 Node대신 Bun을 사용하여 개발해야 한다는 결론에 도달한다. 본 도서는 그러한 Bun에 대한 소개와 활용법을 담고 있는 도서이다. 아마도 Bun에 대한 최초의 국내 IT 도서가 아닌가 싶은데, 본 도서를 통해 Bun에 대해 처음으로 접하게 되었고 실습을 통해 실제 사용해 볼 수 있어서 너무 즐거웠던 것 같다. (새로운 최신의 지식을 공부하는 것은 언제나 즐겁고 흥분되는 일이다.^^)본 도서는 총 15개의 chapter로 구성되어 있으며, 이를 묶는 3개의 파트로 구성되어 있다. 1장부터 5장까지는 Bun에 대한 소개와 설치, 간단한 실행 방법, 패키지 관리와 모듈을 사용하는 방법에 대해 소개하고 있고, 6장부터 10장까지는 CLI 도구와 HTTP 서버, 웹소켓 서버, 파일 입출력, 내장 DB를 사용하는 방법과 같은 본격적인 개발 내용을 담고 있으며, 11장부터 15장까지는 테스트와 빌드, 스크립팅, REST API 개발과 Bun이 제공하는 유틸리티와 같은 생산성을 높이기 위한 추가적인 Bun의 기능에 대해 소개하고 있다. 특히 Bun 런타임은 자바스크립트 뿐만 아니라 타입스크립트 코드 실행 시 컴파일 과정 없이 바로 실행이 가능하기 때문에, Node.js처럼 타입스크립트를 자바스크립트로 변환하는 번거로운 컴파일 과정이 없다는 장점이 있다. 요새는 안정성 측면에서 타입스크립트로도 많이 개발되는 추세라 실행 속도 측면 뿐만 아니라 개발 속도나 편의성 측면에서도 Bun이 좋을 수 밖에 없다.본 도서에서는 이러한 개념들에 대해 굉장히 기초적인 개념부터 차근차근 설명을 해주어서 자바스크립트나 웹 개발에 많은 경험 지식이 없더라도 잘 이해할 수 있도록 쉽게 설명하고 있어서 웹 개발 초심자가 읽어도 이해하는데 지장이 없을 것 같다. 또한, 7장에서 간단한 HTTP 서버를 개발하는 부분에 대해 실습을 진행해 보았는데, 확실히 속도가 좀 빠르다는 느낌을 받았다. 뭔가 바로 실행하자마다 delay 없이 바로 구동된다는 느낌? Python 웹프레임워크 쪽에서 화제가 되고 있는 FastAPI로도 최근에 테스트를 살짝 해봤었는데, Bun과 정확한 비교 테스트를 해보진 않았지만 느낌상 Bun이 조금 더 빠르다는 느낌이 들었다. 아무래도 인터프리터 방식의 Python 언어 자체에서 오는 한계 때문이 아닌가 싶기도 하다.본 도서에서 이러한 웹 서비스 개발과 관련된 아주 심도있는 내용까지 다루지는 않지만, 대략적인 HTTP 실행 예제와 request body와 query string에 대한 접근, 라우팅, form data 처리, HTTP 상태 코드 리턴, HTTP 헤더 설정 등 전체적으로 대략적인 웹 서비스 개발에 대한 내용은 다루고 있고 이에 대한 실습도 싣고 있기 때문에 개념을 잡고 테스트를 위한 PoC 서비스 개발 정도를 하는데 있어서는 충분할 것 같고, 더 심도 있는 내용에 대한 학습을 위해서는 Bun 공식 홈페이지에서 제공하고 있는 개발자 도큐먼트 등을 참고하면 좋을 것 같다. ![]() ![]() 그 밖에도 Bun에는 웹소켓 지원, 자체 SQLite 데이터베이스 탑재, Jest 호환 테스트 모듈 등도 내장하고 있어 별도 모듈 설치 없이도 Bun 하나만으로도 기본적인 개발과 관련된 환경을 제공하고 있어, 자바스크립트 개발자들 입장에서 매우 편리할 것 같다. 또한, 본 도서의 뒷 부분인 14장에서는 Bun에서 제공하는 Bun.serve() 함수 기반의 HTTP 서비스 개발 방식이 아닌, Elysia 웹 프레임워크를 추가 설치하여 REST API 기반 서비스를 개발하는 내용에 대해 담고 있다. Elysia는 Bun 위에서 동작하는 웹 프레임워크로서, Express 프레임워크가 Node.js의 대표 웹 프레임워크라면 그와 비슷한 개념으로 Elysia는 Bun의 대표적인 웹 프레임워크이다. 참고적으로, Elysia 공식 홈페이지에 가보면 아래와 같은 TechEmpower 벤치마킹 자료를 볼 수 있는데, 비록 1년 전 데이터이긴 하지만 Express, Spring 등에 비해 엄청나게 빠른 것으로 기재되어 있다. (마치, 이건 꼭 써야해~ 느낌이랄까. ^^;)![]() ※ 출처 : https://elysiajs.com/ 최근 사용해 보았던 FastAPI와의 성능 비교 테스트 자료도 좀 찾아보니, 아래와 같이 6배 정도 Elysia 프레임워크가 FastAPI에 비해 더 빠르다는 블로그 글도 확인할 수 있었다. 단, 이 역시 1년 전 데이터이고, shorten URL 서비스라는 특정 환경에서의 제한적인 테스트일 수 있다는 부분은 참고해야 될 것 같다. 또한 메모리 사용량에 있어서는 Elysia가 더 많은 메모리를 사용한다는 부분도 참고할만한 것 같다. 그렇지만 속도가 빠르다는 부분은 역시나 상당히 매력적인 요소가 아닐 수 없다. ※ 출처 : https://medium.com/deno-the-complete-reference/url-shortener-service-benchmarking-bun-elysia-vs-python-fastapi-9e74857eafe1결론적으로, 본 도서는 다음과 같은 분들이 참고하면 좋을 것 같다.
본 도서를 통해 처음으로 Bun에 대해 접하고 공부해 보면서 느낀 점은, 앞으로 조만간 Bun이 Node.js를 대체하고 대세가 될 것 같다는 생각이 들었다는 점이다. 그만큼 속도가 상당히 빠르고 타입스크립트 컴파일 과정도 불필요하고 테스트 도구 지원 등 여러 가지 편리한 개발 환경을 제공해 주는 등의 커다란 장점에 비해 단점은 거의 보이질 않아서(메모리 사용량 정도?) 안 쓸 이유가 전혀 없다는 것이다. ^^; 아무래도 본 도서에 대한 리뷰를 계기로 계속하여 Bun을 파고 들어 봐야겠다는 생각을 해본다. 여담이지만, 요새 Rust 언어에 대한 책도 많이 나오고 여기 저기에서 Rust 언어에 대한 언급이 점점 많아지고 있는 것을 보면, 국내에서도 Rust 언어가 조금씩 대중화되고 있다는 느낌이 든다. Node.js 대항마로 개발된 Deno가 그러한 Rust로 개발되어 Node.js에 비해 속도가 빠르다고 하는데(심지어 개발자도 같은 사람), 그런데 그러한 Deno보다 더 빠른 런타임이 바로 Bun이다. 그런걸 보면 Bun을 개발하는데 사용된 Zig 언어가 Rust보다 더 뛰어난 언어인건가..하는 생각도 들고, 조만간 Rust의 관심이 자연스레 Zig로 넘어가는건 아닌가하는 생각까지 든다. (얼핏보니 Rust와 문법의 생김새도 많이 닮았다.) 물론 언어란 것은 수단인만큼 모든 면에서의 절대적인 강자가 있을 수 없고, 사용하고자 하는 특정한 목적에 맞게 적잘한 언어를 선택하여 사용하는게 맞는 형태일테지만, 그럼에도 왜 이렇게 Bun이 빨라진 것일까에 대한 의문과 더불어 그 이유에 있어 Zig 언어 사용이라는 부분이 상당 부분 차지한 것이 아닌가라는 생각을 지울 수가 없다. 아무래도 나중에 Zig 언어에 대해서도 한번 공부해 봐야 될 듯.. IT 업계에 있어서 공부는 참 끝이 없다. ㅠ ㅎㅎ (이 글을 쓰고 난 이후에 살짝 구글링해 보니 아래와 같은 블로그 글도 있어 추가한다. 역시 Zig..) ※ 출처 : https://ludwigabap.bearblog.dev/zig-vs-rust-at-work-the-choice-we-made/아무튼, 그러한 고성능의 장점을 지닌 Bun에 대한 전체적인 overview를 하는 차원에서 본 도서가 큰 도움이 되었고 더불어 개인적으로 본 도서를 통해 Bun과 Zig 언어에 대한 매력 또한 충분히 느낄 수 있었던 것 같다. 국내에 아직 Bun에 대한 자료가 많지 않은데, 이러한 소중한 자료를 도서로 집필해 주신 저자 분께 감사의 말씀을 드리고 싶다. |
|
Bun 이란 프로젝트가 있다는 말은 어렵풋이 SNS나 웹서핑을 하다 본 기억이 있습니다. 다만, SNS에서 Bun에 대해 관심을 보이는 분들을 여럿 보게 되면서 Bun이 비슷한 다른 서비스들 보다 뭔가 있나보다 하는 생각을 하고는 있었죠. 그런데, 이걸 책으로 엮어서 책이 나왔다는 말을 듣고는 좀 놀랐습니다. 1.0 정식 버전이 배포됐다고 한지 그렇게 오래 되지 않은것 같았거든요. 이런 저런 의아함을 가지고 책을 읽기 시작했습니다. 저자는 최대한 쉽게 설명하기 위해 노력한 것 같다는 느낌을 주는 그런 책이었습니다. Bun을 설치하는 것 부터, 단순한 프로그램을 작성하고 실행하는 것, 모듈이나 패키지를 관리하고 명령줄에서 사용하는 명령을 만들어 쓰는 것, 웹서버를 개발하고 이미 내장되어 있는 DB를 쓰는 것, 게다가 몇몇 응용 분야에서 사용하는 것도 너무 쉽게 설명하고 있습니다. 그리고 곳곳에 더 자세한 내용을 설명하기 위해 본인의 블로그에서 설명한 URL을 알려주고 있습니다. 아마 꾸준히 블로그를 해오시면서 설명하는 노하우를 많이 습득하신 결과가 아닌가 싶기도 하네요. 정말 아주쉽고 깔끔한 책이었습니다. node를 기반으로 프로젝트를 진행해야하는 사람들 특히 프론트엔드 개발자들 입장에서 Bun은 정말 관심가는 프로젝트입니다. 얘는 다 가지고 있거든요. node보다 더쉽고, 타입스크립트가 그냥 되며, 빠릅니다. 그리고 캐릭터가 귀엽습니다. (이거 무시 못하거든요 ) 정말 기대되는 툴입니다. 문제는 node가 너무 표준화된 상황에서 출사표를 던졌다는 부분입니다. 회사들은 기술의 트랜드를 따르기 보다는 안정성을 추구하는 쪽으로 선택을 하는 경우가 많아서 node를 대체할만하다면, 그만큼 많이 사용되고 있느냐가 가장 중요합니다. 즉 커뮤니티 그룹이 많이 확보되어 있느냐 죠. 커뮤니티를 많이 확보하려면, Bun을 개발하는 개발자들이 정말 꾸준히 여기에 시간을 투자해야 하는데요. 그러면, 자금 사정이 넉넉해야 합니다. 리뷰를 하기전에 위키피디아를 찾아보니, Bun의 모 회사인 Oven은 22년 8월 700만달러 자금을 투자 받았다고하네요. 당분간은 계속 발전시킬만한 자금이 있다는 말이 되겠죠. 거기다가 책에서 설명하고 있는 것처럼 그리고 책 표지에서 말하고 있는 것처럼, 귀여워서 친근한 캐릭터에 슈퍼맨 같이 모든걸 해내는 플랫폼이라면, 커뮤니티를 확장해 나가는 것도 그리 어렵지는 않을 것 같습니다. 개발자로서, 이런 상황이 가장 애매합니다. 회사에서 당장 쓸 수는 없는데 써봐야 할 것 같은 툴을 접하는 상황 말이죠. 이런 경우 저는 어느정도 무르익을 때까지 관심을 가지고 기다리거나 조금씩 도입해보는 쪽을 택합니다. 아마 Bun은 조금씩 도입해봐도 좋을만한 툴인 것 같고요. 그런 상황을 주도하기 위해서는 <헬로 Bun>같은 책이 필요한 것 같습니다. 저는 주로 nx 라는 툴을 사용하는데요. 필요한 플랫폼, 툴, 라이브러리들을 하나의 환경으로 묶어주는 역할을 하는 툴입니다. 리뷰를 쓰면서 검색해보니 nx도 이미 bun을 지원하고 있더군요. 동료들에게 슬쩍슬쩍 물어보고 조만간 써봐도 될 것 같습니다. |