Sharp를 950배 빠르게 만든 방법 (그리고 Bun이 Anthropic에 합류한 후 중요한 이유)

발행: (2025년 12월 14일 오후 07:27 GMT+9)
4 min read
원문: Dev.to

Source: Dev.to

Sharp의 문제점

Sharp은 수천 개의 프로덕션 앱에서 사용되는 검증된 이미지 라이브러리이지만, 현대 서버리스 및 고동시성 환경에서는 다음과 같은 여러 제한점이 있습니다:

  • 기본적으로 HEIC 지원이 없음
  • libvips를 소스에서 빌드해야 함
  • AWS Lambda용 커스텀 Docker 레이어 필요
  • 복잡한 CI/CD 파이프라인
  • 메타데이터 추출이 느림 (전체 이미지를 디코딩)
  • 동시 부하가 걸리면 무겁고, 서버리스에 최적화되지 않음

이러한 문제로 이미지가 많은 애플리케이션에서 처리 속도가 느려지고, 서버 비용이 증가하며, 사용자 경험이 저하되었습니다.

bun-image-turbo 소개

Bun과 Node.js를 위해 처음부터 Rust 기반으로 만든 이미지 처리 라이브러리입니다.

  • 100 % 오픈 소스, MIT 라이선스, 영구 무료
  • 한 줄 명령으로 설치:
npm install bun-image-turbo
  • 커스텀 빌드나 컴파일 필요 없음
  • HEIC 네이티브 지원 포함

벤치마크

작업Sharpbun-image-turbo향상
WebP 메타데이터3.4 ms0.004 ms950× 빠름
JPEG 메타데이터0.1 ms0.003 ms38× 빠름
PNG 메타데이터0.08 ms0.002 ms40× 빠름
50 동시 작업160 ms62 ms2.6× 빠름
변환 파이프라인19.1 ms12.2 ms1.6× 빠름
HEIC 지원❌ (커스텀 빌드)✅ 네이티브

메타데이터 추출

Sharp은 차원을 읽기 위해 전체 이미지를 디코딩합니다:

10 MB 이미지 → 10 MB 디코드 → 가로/세로 추출 → 완료 (3.4 ms)

bun-image-turbo는 헤더 바이트만 읽습니다:

10 MB 이미지 → ~100 바이트 헤더 읽기 → 가로/세로 추출 → 완료 (0.004 ms)

다운스케일링 전략

대규모 다운스케일링 시 bun-image-turbo는 각 단계마다 최적의 필터를 사용해 점진적으로 반으로 줄입니다:

스케일 팩터알고리즘
> 4× 다운스케일Box (빠르고 평균값이 좋음)
2–4× 다운스케일Bilinear (빠르고 품질도 충분히 좋음)
  • GitHub:
  • npm:

제공되는 기능

기능이점
메타데이터 추출950× 빠름
동시 작업2.6× 빠름
변환 파이프라인1.6× 빠름
HEIC 지원네이티브, 커스텀 빌드 불필요
Blurhash내장
가격영구 무료

시작하기

npm install bun-image-turbo

질문이 있으면 레포지토리 이슈에 댓글을 남겨 주세요. 이 라이브러리가 도움이 되었다면 레포지토리에 ⭐를 눌러 주세요.

Back to Blog

관련 글

더 보기 »