피드로 돌아가기
Dev.toInfrastructure
원문 읽기
WASM 도입으로 Lambda 배포 아티팩트 11.5MB에서 91.2KB로 경량화
Serverless image pipeline with aws lambda+node+wasm: from 11.5mb to 91.2kb
AI 요약
Context
이커머스 플랫폼의 이미지 다변화 처리를 위해 자동화된 서버리스 파이프라인 구축이 필요함. 기존 Node.js 환경의 표준인 Sharp 라이브러리는 libvips 기반 Native Binary 의존성으로 인해 Lambda 아키텍처별 별도 컴파일 및 Layer 관리가 강제되는 운영 오버헤드 발생.
Technical Solution
- Rust 기반의 beautiful-image 라이브러리를 WASM으로 컴파일하여 런타임 독립적인 단일 바이너리 구조 설계
- x86_64 및 arm64 아키텍처 구분 없는 범용 실행 환경 구축을 통한 배포 복잡성 제거
- S3 Trigger 기반의 Event Driven 아키텍처를 적용하여 이미지 업로드 시 자동 Variant 생성 로직 구현
- AWS SDK v3를 External 설정으로 처리하여 런타임 내장 라이브러리를 활용한 패키지 크기 최소화
- Single-threaded 특성의 WASM 제약 사항을 고려한 적정 메모리 임계치 설정으로 처리 성능 최적화
Impact
- 배포 아티팩트 크기를 11.5MB에서 91.2KB로 획기적으로 절감
- 469KB 크기의 단일 WASM 바이너리 사용으로 Lambda Layer 및 Docker 이미지 의존성 제거
실천 포인트
- Native Dependency 관리가 까다로운 서버리스 환경에서 WASM 기반 라이브러리 대체 가능성 검토 - 단순 리사이징 및 최적화 작업 시 Raw Speed보다 배포 편의성과 운영 비용의 Trade-off 분석 - AWS Lambda 런타임 내장 SDK 활용을 통한 Bundle Size 최적화 적용