피드로 돌아가기
Dev.toInfrastructure
원문 읽기
Puppeteer 제거를 통한 배포 크기 300MB 절감 및 Cold Start 해결
HTML to Image in Node.js — Without Puppeteer
AI 요약
Context
Node.js 환경 내 HTML-to-Image 구현을 위해 Puppeteer를 사용하나, Chromium Binary의 거대한 크기로 인한 배포 제약 발생. AWS Lambda 및 Vercel의 용량 제한과 서버리스 환경의 Cold Start 지연이 시스템 안정성을 저해하는 병목 지점으로 작용.
Technical Solution
- Chromium Binary 의존성을 완전히 제거한 External Render API 전환 구조 설계
- Node.js 내장 fetch API를 통한 HTTP 기반 Binary Image 데이터 수신 방식 채택
- 기존 Puppeteer의 Function Signature를 유지하여 비즈니스 로직 수정 없는 인터페이스 추상화
- 관리형 풀(Managed Pool) 기반 렌더링으로 인프라 수준의 시스템 라이브러리 의존성 제거
- API 버전 관리를 통한 Chrome 업데이트에 따른 런타임 브레이킹 체인지 방지
실천 포인트
1. 서버리스 환경 배포 시 라이브러리 Binary 크기가 플랫폼 제한(예: Lambda 250MB)에 근접하는지 확인
2. Chromium 등 시스템 라이브러리 의존성이 높은 도구의 Cold Start 지연 시간이 사용자 경험에 미치는 영향 분석
3. 핵심 렌더링 로직을 API로 분리하여 인프라 독립적인 아키텍처로 전환 가능 여부 검토