피드로 돌아가기
Dev.toInfrastructure
원문 읽기
Rust와 pdf_oxide 기반 0.8ms 처리 속도의 초고속 Serverless PDF 변환 설계
PDF to Text Conversion with Rust on AWS Lambda
AI 요약
Context
기존 Python 기반 PDF 라이브러리의 높은 메모리 점유율과 느린 처리 속도로 인한 서버리스 비용 증가 및 응답 지연 발생. 특히 Cold Start에 취약한 런타임 특성으로 인해 실시간 변환 서비스의 사용자 경험 저하 문제 직면.
Technical Solution
- pdf_oxide 라이브러리 채택을 통한 PDF 파싱 속도 최적화 및 100% Pass Rate 확보
- cargo-lambda 기반의 Rust 컴파일 환경 구축으로 AWS Lambda 최적화 바이너리 생성
- AWS Graviton(arm64) 프로세서 타겟팅을 통한 비용 효율성 및 연산 성능 극대화
- Query String 기반의 Dynamic FileType 분기를 통한 HTML, Text, Markdown 다중 포맷 지원 구조 설계
- Binary PDF 데이터를 메모리 내에서 직접 처리하는 최적화된 스트림 파이프라인 구현
- provided.al2023 런타임 활용을 통한 최소 런타임 오버헤드 및 Cold Start 지연 시간 단축
Impact
- 처리 성능: pdf_oxide 적용 시 Mean Time 0.8ms 달성 (PyMuPDF 대비 약 5.7배, pdf_extract 대비 5배 빠른 속도)
- Cold Start: 50-100ms 수준의 기동 시간 확보 (Java 대비 최대 40배 개선)
- 메모리 효율: 1MB PDF 처리 시 Peak Memory 20MB 수준의 초경량 리소스 점유
Key Takeaway
CPU 집약적 작업인 PDF 파싱에서 고성능 언어(Rust)와 최적화된 라이브러리 선택이 인프라 비용 및 응답 속도에 결정적 영향을 미침. 특히 Serverless 환경에서는 바이너리 크기와 Cold Start 시간이 시스템 전체의 Throughput을 결정하는 핵심 변수임.
실천 포인트
- CPU Bound 작업의 Lambda 전환 시 Rust + Graviton(arm64) 조합 검토 - PDF 파싱 시 라이브러리별 Pass Rate와 Mean Time을 벤치마크하여 선택 - 메모리 사용량 예측을 위해 파일 크기별 Peak Memory 측정 기반 Lambda Memory 설정