Show GN: smol-image-processor – EXIF/메타데이터 제거 후 WebP로 정규화하는 마이크로서비스 (Bun/Elysia)
**smol-image-processor 마이크로서비스 요약**
* **무엇이 일어났는지**
백엔드에서 사용자 이미지를 업로드할 때 발생하는 EXIF, ICC 프로파일 등의 메타데이터 문제와 다양한 이미지 형식(JPEG, PNG, WebP 등) 혼재로 인한 저장/CDN/렌더링 파이프라인의 복잡성을 해결하기 위해, EXIF/메타데이터를 제거하고 WebP로 정규화하는 단일 역할 마이크로서비스인 `smol-image-processor`가 개발되었습니다.
* **왜 중요한지**
이 서비스는 이미지 처리 과정에서 발생하는 숨겨진 메타데이터 문제를 일괄적으로 처리하여 데이터 저장 및 처리의 복잡성을 줄이고, 이미지 방향(EXIF orientation) 오류를 방지하며, 메모리/CPU 고갈을 유발하는 애니메이션 파일(GIF/WebP)에 대한 DoS 공격을 방어하는 효율적인 방법을 제공합니다.
* **주의할 점 또는 맥락**
이 마이크로서비스는 Bun과 Elysia를 런타임으로 사용하며 Sharp(libvips 래퍼)를 이미지 처리 엔진으로 활용합니다. 특히, 이미지 방향을 보존하기 위해 메타데이터 제거 전에 `.rotate()`를 적용하며, 디코딩 폭발(decompression bomb) 및 애니메이션 파일의 프레임 수 제한(DoS 방지)과 같은 방어 레이어를 포함하고 있습니다. 처리 결과는 이미지의 크기, 애니메이션 여부 등의 정보가 응답 헤더에 포함되어 데이터베이스에 바로 저장할 수 있습니다.
* **무엇이 일어났는지**
백엔드에서 사용자 이미지를 업로드할 때 발생하는 EXIF, ICC 프로파일 등의 메타데이터 문제와 다양한 이미지 형식(JPEG, PNG, WebP 등) 혼재로 인한 저장/CDN/렌더링 파이프라인의 복잡성을 해결하기 위해, EXIF/메타데이터를 제거하고 WebP로 정규화하는 단일 역할 마이크로서비스인 `smol-image-processor`가 개발되었습니다.
* **왜 중요한지**
이 서비스는 이미지 처리 과정에서 발생하는 숨겨진 메타데이터 문제를 일괄적으로 처리하여 데이터 저장 및 처리의 복잡성을 줄이고, 이미지 방향(EXIF orientation) 오류를 방지하며, 메모리/CPU 고갈을 유발하는 애니메이션 파일(GIF/WebP)에 대한 DoS 공격을 방어하는 효율적인 방법을 제공합니다.
* **주의할 점 또는 맥락**
이 마이크로서비스는 Bun과 Elysia를 런타임으로 사용하며 Sharp(libvips 래퍼)를 이미지 처리 엔진으로 활용합니다. 특히, 이미지 방향을 보존하기 위해 메타데이터 제거 전에 `.rotate()`를 적용하며, 디코딩 폭발(decompression bomb) 및 애니메이션 파일의 프레임 수 제한(DoS 방지)과 같은 방어 레이어를 포함하고 있습니다. 처리 결과는 이미지의 크기, 애니메이션 여부 등의 정보가 응답 헤더에 포함되어 데이터베이스에 바로 저장할 수 있습니다.