피드로 돌아가기
I Built a PDF Toolkit as a Student (And Deployed It for Free)
Dev.toDev.to
Backend

Vercel Serverless 제약을 극복한 PDF 툴킷의 Pragmatic 설계

I Built a PDF Toolkit as a Student (And Deployed It for Free)

Arham_Q2026년 4월 24일7beginner

Context

비용 제로의 배포 환경을 위해 Vercel Serverless Runtime을 채택했으나, 시스템 패키지 설치 불가 및 프로세스 생명주기 제한이라는 기술적 제약 발생. 기존의 Background Thread 기반 비동기 처리 방식이 Serverless 환경의 HTTP Response 즉시 종료 특성으로 인해 작동하지 않는 병목 지점 식별.

Technical Solution

  • Ghostscript 설치 불가 제약을 해결하기 위한 PyMuPDF 기반의 Silent Fallback 메커니즘 구현
  • Serverless Function의 Thread 킬(Kill) 문제를 해결하기 위해 AI 요약 및 퀴즈 생성 로직을 Synchronous Execution으로 전환
  • Vercel의 60초 Timeout 제한을 회피하기 위한 입력 PDF 페이지 수의 Soft Limit 설정 및 UI 기반 기대치 관리
  • DOCX to PDF 변환 시 라이브러리 한계로 인한 레이아웃 붕괴 문제를 명시적 제약 사항으로 문서화하여 투명성 확보
  • 향후 확장성을 고려하여 Frontend와 Backend 간 Task ID 기반의 Polling Pattern을 유지함으로써 아키텍처 디커플링 달성

Key Takeaway

완벽한 아키텍처보다 실행 가능한 제품을 우선하는 Pragmatic Engineering의 가치 확인. 인프라 제약 조건에 맞춘 Trade-off 결정이 제품의 배포 속도와 생존 가능성을 결정하는 핵심 요소임.


- Serverless 환경 배포 시 OS 레벨의 시스템 의존성(Binary) 존재 여부를 최우선 확인 - HTTP Response 이후 프로세스 유지 가능 여부에 따라 Async Task Queue(Redis, Celery) 도입 검토 - 인프라 Timeout 설정값에 맞춘 입력 데이터의 최대 크기(Page/Size Limit) 정의 및 검증 로직 구현 - 기술적 한계가 명확한 기능의 경우, 과도한 추상화보다 사용자에게 제약 사항을 명시하는 투명한 UI/UX 설계

원문 읽기