Skip to content

Bun이 이미지 API를 구식으로 만들었습니다

Bun의 새로운 내장 Image API는 Sharp보다 빠를 뿐만 아니라, 네이티브 종속성이 전혀 없습니다. 이 단 하나의 기능은 JavaScript를 위한 올인원 Rails가 되겠다는 거대한 야망을 드러냅니다.

Stork.AI
Hero image for: Bun이 이미지 API를 구식으로 만들었습니다
💡

요약 / 핵심 포인트

Bun의 새로운 내장 Image API는 Sharp보다 빠를 뿐만 아니라, 네이티브 종속성이 전혀 없습니다. 이 단 하나의 기능은 JavaScript를 위한 올인원 Rails가 되겠다는 거대한 야망을 드러냅니다.

안녕, `libvips`: Bun의 종속성 없는 해답

서버 측 이미지 처리는 주로 Sharp와 같은 라이브러리 때문에 JavaScript 개발자들에게 오랫동안 좌절의 원인이었습니다. NPM에서 주간 5,500만 회 이상 다운로드되고 Next.js 이미지 최적화를 지원하며 엄청난 인기를 누리고 있지만, Sharp의 아킬레스건은 `libvips` 네이티브 바이너리에 대한 의존성입니다. 이 외부 종속성은 개발자들이 플랫폼별 바이너리와 씨름하면서 Docker 빌드 및 CI/CD 파이프라인에서 종종 짜증 나는 설치 실패로 이어집니다.

Bun은 이제 Bun 1.3.14에 도입된 내장 이미지 처리 API인 Bun.Image를 통해 이러한 골칫거리를 완전히 없앱니다. 런타임의 필수적인 부분으로서, Bun.Image는 네이티브 종속성이 전혀 없어 즉시 "작동"합니다. 이 혁신적인 접근 방식은 빌드 및 배포 문제의 전체 클래스를 우회하여 JPEG, PNG, WebP와 같은 형식 간의 이미지 크기 조정, 자르기 및 변환과 같은 작업을 위한 개발 워크플로를 극적으로 단순화합니다.

결정적으로, Bun.Image는 논블로킹 아키텍처로 작동합니다. 모든 이미지 작업은 메인 스레드 외부에서 실행되어, 컴퓨팅 집약적인 처리가 서버 성능을 저해하거나 들어오는 요청을 차단하지 않도록 보장합니다. 이 설계는 이미지 조작 부하가 심한 경우에도 애플리케이션이 반응성을 유지하도록 보장합니다.

경쟁을 압도하는 성능

Bun.Image는 이미지 워크플로를 단순화할 뿐만 아니라, 기존 성능 벤치마크를 압도합니다. 널리 사용되는 라이브러리인 Sharp와 비교했을 때, Bun은 메타데이터 읽기를 놀랍게도 70배 더 빠르게 수행합니다. 크기 조정 작업 또한 상당한 개선을 보여 약 30% 더 빠르게 완료됩니다. 이러한 속도 이점은 모든 애플리케이션에서 더 빠른 페이지 로드와 서버 부하 감소를 의미합니다.

순수한 속도를 넘어, Bun.Image는 강력하고 개발자 친화적인 API를 제공합니다. 체인형 API는 단일하고 유연한 호출로 크기 조정, 자르기, 회전과 같은 우아하고 다단계 변환을 가능하게 합니다. WebP와 같은 최신 형식으로 이미지를 손쉽게 변환하여 웹 성능을 향상시키며, JPEG, PNG, GIF, BMP를 포함한 다양한 다른 형식을 기본적으로 지원하고, macOS 및 Windows에서는 HEIC, AVIF, TIFF를 지원합니다. 결정적으로, 모든 처리는 메인 스레드 외부에서 실행되어 논블로킹 서버 작업을 보장합니다.

두드러진 기능은 영리한 `placeholder()` 함수인데, 이는 초경량 28바이트 ThumbHash를 생성합니다. 이 해시는 base64 흐릿한 이미지로 인코딩되어, 전체 해상도 이미지가 로드되는 동안 즉각적인 시각적 신호 역할을 합니다. 이 작은 플레이스홀더를 HTML 또는 CSS에 직접 삽입하면 추가 네트워크 요청이 제거되어, 서버나 클라이언트에 추가 페치를 부담시키지 않고 느린 연결에서 인지되는 성능을 극적으로 향상시킵니다.

이것은 이미지에 관한 것이 아닙니다. 모든 것에 관한 것입니다.

Bun.Image는 고립된 기능이 아닙니다. 훨씬 더 큰 퍼즐의 전략적인 조각입니다. 최근 업데이트는 Bun이 단순히 패키지 관리자나 번들러를 넘어 수직 통합된 JavaScript 런타임을 향한 의도적인 경로를 보여줍니다. Bun은 이제 내장 SQLite, S3, Postgres, MySQL, MariaDB를 위한 통합 데이터베이스 클라이언트, 심지어 Redis 클라이언트까지 제공합니다. 이것은 기능 확장이 아니라, JavaScript 생태계의 핵심 인프라를 통합하고 더 많이 소유하려는 체계적인 노력입니다.

이 응집력 있는 접근 방식은 "Rails for JavaScript"라는 명제를 뒷받침합니다. Bun은 batteries-included 툴킷을 세심하게 구축하여 dependency hell을 획기적으로 줄이고 런타임부터 원활한 풀스택 개발 경험을 제공하는 것을 목표로 합니다. 일반적인 인프라를 내재화함으로써 Bun은 분리된 패키지와 종종 취약한 기본 종속성을 관리하는 마찰을 제거합니다. 이는 Node.js의 파편화된 환경에 익숙한 개발자들에게 흔한 문제점입니다.

이러한 추세가 계속된다면, Bun의 야망은 곧 런타임 내에서 직접 인증, 이메일 서비스 및 기타 핵심 애플리케이션 기능에 대한 솔루션을 포함할 수 있습니다. 이러한 궤적은 Bun이 Node.js와 그 광범위한 패키지 생태계에 대한 의존도를 더욱 약화시키고 진정한 올인원 플랫폼을 제공하도록 만듭니다. Sharp - High Performance Node.js Image Processing과 같은 검증된 외부 솔루션이 여전히 많은 사람들에게 중요하지만, Bun은 매력적인 자체 포함 대안을 구축하고 있습니다.

전환해야 할까요? 방 안의 Rust 코끼리

이미 Bun을 활용하고 있는 개발자들에게 Bun.Image 채택은 명백한 선택입니다. 이는 70배 더 빠른 메타데이터 읽기 및 약 30% 더 빠른 크기 조정 작업을 제공하며, 번거로운 기본 `libvips` 종속성을 모두 제거합니다. 그러나 Node.js 사용자들은 Sharp가 주간 NPM 다운로드 5,500만 건 이상을 기록하며 견고하고 검증된 솔루션으로 남아 있음을 알게 될 것입니다. 이미지 처리를 위해서만 전체 애플리케이션 스택과 런타임을 마이그레이션하는 것은 중요하고 복잡한 결정입니다.

이 최신 기능은 Bun의 논란이 많고 진행 중인 Zig에서 Rust로의 재작성 중에 출시되었습니다. 이 결정은 Twitter (now X) (now X)와 같은 플랫폼에서 커뮤니티의 엇갈린 반응을 불러일으켰습니다. AI 도구를 활용했다고 알려진 이 전환은 Anthropic에 인수되고 오픈 소스로 유지하겠다는 약속에도 불구하고 안정성과 프로젝트의 향후 개발 궤적에 대한 불확실성을 야기합니다.

궁극적으로 Bun.Image는 단순한 유틸리티를 넘어섭니다. 이는 Jarred Sumner와 Bun 팀의 가장 최근이자 분명한 의도 선언입니다. 내장 SQLite, S3/Postgres 클라이언트, Redis 클라이언트 및 풀스택 개발 기능에 이어, 이 네이티브 이미지 프로세서는 Bun의 대담한 퍼즐의 또 다른 조각을 완성합니다. 즉, 런타임 수준에서 통합된 "Rails for JavaScript"인 현대 웹을 위한 새로운 올인원 기반을 구축하는 것입니다.

자주 묻는 질문

Bun.Image란 무엇인가요?

Bun.Image는 Bun 런타임에 내장된 이미지 처리 API입니다. Sharp와 같은 라이브러리와 달리 기본 종속성 없이 이미지 크기 조정, 자르기, 변환 및 최적화를 할 수 있습니다.

Bun.Image는 Sharp 라이브러리보다 어떻게 더 빠른가요?

벤치마크에 따르면 Bun.Image의 메타데이터 읽기는 최대 70배 빠르고 크기 조정 작업은 Sharp보다 약 30% 빠릅니다. 이는 주로 Bun 런타임과의 네이티브 통합 및 C++ 구현 때문입니다.

Bun.Image는 AVIF 및 WebP와 같은 최신 형식을 지원하나요?

네, Bun.Image는 WebP와 같은 최신 형식으로 이미지를 변환하고 그 반대로도 네이티브로 지원합니다. 또한 OS 네이티브 백엔드를 통해 macOS 및 Windows에서 AVIF, HEIC, TIFF를 지원합니다.

Bun.Image는 Node.js에서 전환할 만한 충분한 이유가 되나요?

기존 Bun 사용자에게는 매력적인 네이티브 솔루션입니다. Node.js 사용자에게는 강력하지만, 이미지 처리를 위해서만 전체 런타임을 전환하는 것은 Sharp가 견고하고 검증된 라이브러리로 남아 있기 때문에 필요하지 않을 수 있습니다.

One weekly email of tools worth shipping. No drip funnel.

one email per week · unsubscribe in two clicks · no third-party tracking

자주 묻는 질문

Bun.Image란 무엇인가요?
Bun.Image는 Bun 런타임에 내장된 이미지 처리 API입니다. Sharp와 같은 라이브러리와 달리 기본 종속성 없이 이미지 크기 조정, 자르기, 변환 및 최적화를 할 수 있습니다.
Bun.Image는 Sharp 라이브러리보다 어떻게 더 빠른가요?
벤치마크에 따르면 Bun.Image의 메타데이터 읽기는 최대 70배 빠르고 크기 조정 작업은 Sharp보다 약 30% 빠릅니다. 이는 주로 Bun 런타임과의 네이티브 통합 및 C++ 구현 때문입니다.
Bun.Image는 AVIF 및 WebP와 같은 최신 형식을 지원하나요?
네, Bun.Image는 WebP와 같은 최신 형식으로 이미지를 변환하고 그 반대로도 네이티브로 지원합니다. 또한 OS 네이티브 백엔드를 통해 macOS 및 Windows에서 AVIF, HEIC, TIFF를 지원합니다.
Bun.Image는 Node.js에서 전환할 만한 충분한 이유가 되나요?
기존 Bun 사용자에게는 매력적인 네이티브 솔루션입니다. Node.js 사용자에게는 강력하지만, 이미지 처리를 위해서만 전체 런타임을 전환하는 것은 Sharp가 견고하고 검증된 라이브러리로 남아 있기 때문에 필요하지 않을 수 있습니다.
🚀더 알아보기

AI 트렌드를 앞서가세요

Stork.AIが엄선한 최고의 AI 도구, 에이전트, MCP 서버를 만나보세요.

P.S. 쓸 만한 걸 만드셨나요? Stork에 등록 — $49

모든 게시물로 돌아가기