피드로 돌아가기
Dev.toInfrastructure
원문 읽기
Stateless API 전환을 통한 PDF 렌더링 인프라 제로화
Generate invoice PDFs from JSON in one API call — no headless Chrome to babysit
AI 요약
Context
Headless Chrome 운용에 따른 Memory Spike와 Zombie Process 발생 및 Docker 환경의 Font 설정 문제로 인한 인프라 관리 부담 증가. 기존 wkhtmltopdf의 낮은 CSS 호환성과 Template Engine 직접 관리로 인한 유지보수 비용 상승이 병목 지점으로 작용.
Technical Solution
- Chromium 기반 렌더링 엔진을 외부 Stateless HTTP API로 분리하여 인프라 복잡도 제거
- JSON 데이터를 통한 문서 구조 정의 및 API 내부 렌더링 프로세스를 통한 PDF Byte 반환 구조 설계
- 데이터 저장 없이 요청 즉시 응답하는 Stateless 아키텍처 채택으로 데이터 유출 리스크 제거 및 수평 확장성 확보
- Intl.NumberFormat 기반의 다국어 통화 포맷팅 로직 내장으로 클라이언트 사이드 처리 비용 감소
- 문서 유형별 전용 엔드포인트를 제공하는 Interface 설계를 통해 템플릿 관리 오버헤드 최소화
실천 포인트
- PDF 생성 로직이 핵심 비즈니스 도메인이 아닐 경우 인프라 내장형보다 외부 API 기반의 Stateless 구조 검토 - Headless Browser 도입 전 컨테이너 메모리 프로파일링 및 좀비 프로세스 관리 방안 수립 여부 확인 - 복잡한 문서 템플릿의 직접 관리 대신 구조화된 JSON 기반의 추상화 계층 도입 고려