피드로 돌아가기
Generating PDFs shouldn't be this hard in 2026
Dev.toDev.to
Infrastructure

인프라 복잡성을 제거한 Unified PDF Conversion API 설계

Generating PDFs shouldn't be this hard in 2026

Gábor Liktor2026년 5월 3일4intermediate

Context

PDF 생성 시 wkhtmltopdf의 현대적 CSS 미지원과 Puppeteer의 과도한 리소스 소비 및 인프라 관리 비용 발생. LibreOffice headless 도입 시 발생하는 메모리 누수와 느린 Startup time으로 인한 운영 효율 저하 해결 필요.

Technical Solution

  • Chrome pool 기반 Puppeteer 구조를 통한 CSS3, Flexbox, Grid 및 JavaScript 완전 지원 환경 구축
  • LibreOffice headless를 통합하여 DOCX, XLSX, PPTX 등 다양한 Office 포맷의 PDF 변환 로직 구현
  • ImageMagick 도입을 통한 다양한 이미지 포맷의 PDF 표준화 변환 프로세스 설계
  • binary, base64, url 등 다양한 Response type 제공으로 Integration 패턴별 어댑터 제거
  • 파일 보안 강화를 위해 변환 후 1시간 뒤 데이터를 자동 삭제하는 휘발성 저장소 정책 적용
  • Credit 기반 과금 체계 대신 예측 가능한 Flat pricing 모델을 통한 사용자 경험 최적화

- 현대적 웹 표준 PDF 생성이 필요할 경우 WebKit 기반 도구 대신 Headless Chrome 기반 솔루션 검토 - Headless Chrome 운영 시 --no-sandbox 플래그 설정 및 컨테이너 전용 Base image 선택 여부 확인 - Office 문서 변환 시 LibreOffice의 Memory leak 가능성을 고려한 주기적 프로세스 재시작 전략 수립 - API 설계 시 클라이언트의 워크플로우(JSON/Stream)에 맞춘 다양한 Response format 제공 고려

원문 읽기