내가 다루는 모든 코드베이스에 귀신 같은 PDF 서비스가 있어서 PDF API를 만든다.
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는 자격 증명이 없고 사설 네트워크로의 경로가 차단된 격리된 샌드박스에서 렌더링하며, 페이지가 만드는 모든 외부 요청을 먼저 해결하고 검증한다.- 에이전트에서도 사용할 수 있도록 설계
현재 PDF를 어떻게 생성하고 있는지, 어떤 문제가 발생하는지 정말 듣고 싶습니다. 댓글에 남겨 주세요.