← 블로그 목록

Rust로 만든 빠른 PDF API — 왜 빠르고, 어떻게 통합하나

RustPDF API성능

대량의 PDF를 매일 처리하는 서비스에서 한 건당 변환 시간이 100ms 차이가 나면 하루 수십만 건의 처리 시간 차이로 이어집니다. All-of-PDF는 백엔드를 Rust로 작성해 속도를 첫 번째 설계 목표로 잡았습니다.

왜 Rust가 빠른가

  • GC 부재 — 가비지 컬렉션으로 인한 일시 정지가 없어 응답 지연이 일관됩니다.
  • Zero-cost abstraction — 추상화 비용 없이 컴파일 시점에 최적화됩니다.
  • 강력한 동시성 모델 — Tokio 런타임 + async/await로 수천 건의 변환을 한 머신에서 병렬 처리합니다.
  • 메모리 안전성 — 대용량 PDF를 처리해도 서버가 갑자기 죽지 않습니다. 엔터프라이즈 안정성의 핵심.

벤치마크 (참고용)

동일 머신에서 10페이지짜리 PDF를 1000개 변환한 결과 (PDF → Image, 환경마다 다를 수 있음):

  • Python (pdf2image + Pillow): 평균 850ms/파일
  • Node.js (pdf-poppler): 평균 720ms/파일
  • All-of-PDF (Rust): 평균 180~250ms/파일

API 시작하기

  1. 회원가입 후 대시보드(/dashboard)에서 API 키를 발급합니다. Free 플랜에서도 월 100회 호출이 가능합니다.
  2. 발급된 키는 'pk_live_...' 형태로 표시되며, 발급 시점에만 전체 키가 보입니다. 안전한 곳에 저장해 주세요.
  3. 모든 호출에 'X-API-Key' 헤더로 키를 전달합니다.

예제: PDF를 이미지로 변환

curl -X POST "https://your-domain/api/v1/convert/pdf-to-image" \
  -H "X-API-Key: pk_live_..." \
  -F "file=@invoice.pdf" \
  -F "format=png"

예제: 여러 PDF 병합

curl -X POST "https://your-domain/api/v1/convert/merge" \
  -H "X-API-Key: pk_live_..." \
  -F "files=@page1.pdf" \
  -F "files=@page2.pdf" \
  -F "files=@page3.pdf"

Rate limit과 한도

  • Free: 월 100회 (달력월 기준, 매월 1일 0시 초기화)
  • Pro: 일 15회 (₩5,900/월)
  • Pro+: 일 50회 (₩12,900/월)
  • Custom: 무제한 (별도 문의)

에러 처리

  • 401 AUTH_REQUIRED — API 키가 누락되었거나 유효하지 않음
  • 429 MONTHLY_QUOTA_EXCEEDED — Free 플랜 월 한도 초과
  • 429 DAILY_LIMIT_EXCEEDED — Pro/Pro+ 일 한도 초과
  • 429 RATE_LIMIT_EXCEEDED — 분당 요청 수 초과 (Retry-After 헤더 참조)

자세한 엔드포인트 목록과 응답 스펙은 /docs 페이지에서 확인할 수 있습니다.