내가 다루는 모든 코드베이스에 귀신 같은 PDF 서비스가 있어서 PDF API를 만든다.

발행: (2026년 6월 11일 AM 12:21 GMT+9)
3 분 소요
원문: Dev.to

Source: Dev.to

제가 작업한 거의 모든 백엔드에 파일 하나가 있습니다. PDF를 생성합니다. 주로 청구서이며, 때때로 보고서나 증명서도 만들죠. 몇 년 전 떠난 누군가가 작성했으며, 아무도 완전히 이해하지 못하는 헤드리스 브라우저를 실행하고, 재무팀이 청구서를 필요로 하는 달 마지막 날에 종종 오류가 발생합니다.

이 같은 문제의 코너를 여러 번 재구축하면서, 한 번에 모두를 위해 제대로 고치기로 결심했습니다. 이름은 PDFPipe입니다.

실제 문제
Chromium은 인스턴스당 0.5 ~ 1 GB의 RAM을 요구하고, 부하가 걸리면 다운됩니다.

PDFPipe가 하는 일

curl https://api.pdfpipe.xyz/v1/pdf \

이것이 전부입니다. 인프라에 브라우저가 필요 없고, 관리할 큐도 없습니다.

제가 의도적으로 내린 세 가지 결정

  • 실제 무료 티어 제공 – 업계 표준 무료 티어는 월 약 50문서 수준이라 실용적이지 않다. PDFPipe는 500문서를 제공합니다.
  • 보안을 기능으로 제공, 사후 고려가 아니다 – HTML‑to‑PDF 서비스는 전형적인 SSRF 표적이다. 렌더링된 마크업은 file:///etc/passwd 혹은 클라우드 메타데이터 엔드포인트 169.254.169.254를 가리키는 iframe을 삽입해 자격 증명을 PDF에 직접 누출시킬 수 있다. 이에 대한 CVE도 존재한다. PDFPipe는 자격 증명이 없고 사설 네트워크로의 경로가 차단된 격리된 샌드박스에서 렌더링하며, 페이지가 만드는 모든 외부 요청을 먼저 해결하고 검증한다.
  • 에이전트에서도 사용할 수 있도록 설계

위치
https://pdfpipe.xyz

현재 PDF를 어떻게 생성하고 있는지, 어떤 문제가 발생하는지 정말 듣고 싶습니다. 댓글에 남겨 주세요.

0 조회
Back to Blog

관련 글

더 보기 »

Eidentic 소개

Today we're releasing Eidentic, an open-source TypeScript SDK for building AI agents with self-improving memory and the production fundamentals built in — not b...

Typescript의 타입

Introdução Tipos são uma forma de definir a “forma” ou o contrato dos dados que estamos usando no código. Pensando em Javascript puro, ele é dinâmico: você pode...