피드로 돌아가기
Generate invoice PDFs from JSON in one API call — no headless Chrome to babysit
Dev.toDev.to
Infrastructure

Stateless API 전환을 통한 PDF 렌더링 인프라 제로화

Generate invoice PDFs from JSON in one API call — no headless Chrome to babysit

TonyWang wa2026년 6월 22일3intermediate

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 기반의 추상화 계층 도입 고려

원문 읽기