왜 지금 DeepL Pro API인가
다국어 콘텐츠를 빠르게 늘려야 하는 팀에게 DeepL Pro API는 자연스러운 번역 품질과 안정적인 처리 속도로 실무 효율을 높여 줍니다. 하지만 급하게 붙이면 비용 통제, 파일 형식 깨짐, 용어집 미반영 같은 문제가 반복됩니다. 이 글은 첫 30일 안에 실패 없이 연동하고, 문서 번역 품질과 운영 안정성을 동시에 끌어올리는 실전 로드맵을 제시합니다.
0~7일차: 도입 전·초기 설정 체크리스트
요금제·쿼터, 프로젝트 구조 정하기
- 트래픽 예측: 일/주간 요청 수, 평균 문서 용량(페이지·MB)을 대략 산정해 쿼터 초과 위험을 줄입니다. 파일 처리량이 스파이크형이면 큐 기반 완충을 고려합니다.
- 환경 분리: 개발·스테이징·프로덕션 별 API 키를 구분하고, 각 환경에서의 로깅·리트라이 정책을 다르게 둡니다.
보안·컴플라이언스 기본
- 키 보관: 서버 측 안전한 비밀 저장소(KMS·Vault 등)에서 주입하고, 클라이언트에 노출하지 않습니다.
- 개인정보·민감정보: 업로드 전 마스킹/익명화 규칙을 적용합니다. 불가피할 경우 처리가능한 최소 범위로 축소하고 보존 기간을 짧게 설정합니다.
- 네트워크: 아웃바운드 허용 목록(allowlist)과 TLS 검증, 요청 타임아웃·연결 재사용(HTTP keep-alive)을 구성합니다.
포맷 지원과 전처리 정책
- 파일 형식 매핑: DOCX/HTML/MD/PPTX/XLSX/PDF 등 실제 운용 포맷을 나열하고 API의 지원 범위를 확인합니다. PDF는 원본 품질에 따라 결과가 달라질 수 있어 샘플 검증이 필수입니다.
- 전처리: 불필요한 공백·숨김 텍스트·주석 제거, 코드 블록·수식·변수 토큰 보호(예:
{{NAME}}) 규칙을 정해 형식 보존 실패를 줄입니다.
8~14일차: 연동 아키텍처 설계
동기 vs 비동기 처리 선택
- 동기(text) 호출: 짧은 문자열·메타데이터 번역에 적합. 요청-응답 지연을 UX 임계치(예: 1~2초) 안에 유지하기 쉽습니다.
- 비동기 문서 번역: 대용량 파일은 업로드-상태 조회-다운로드 3단계를 권장합니다. 사용자에게는 작업 생성 즉시 티켓/작업 ID를 제공하고, 완료 후 알림으로 결과를 전달합니다.
큐·웹훅·재시도·멱등성
- 큐잉: 업로드 요청을 작업 큐로 적재하고 워커가 순차 처리하면 스파이크 부하를 흡수할 수 있습니다.
- 내부 웹훅: 번역 완료 시 워커가 사내 콜백 URL로 결과 경로·메타를 전송해 후처리 파이프라인을 촉발합니다(예: 저장→인덱싱→게시).
- 재시도와 백오프: 네트워크 오류·429(요청 과다)에는 지수 백오프와 Jitter를 적용합니다. 동일 문서 중복 처리를 피하려면 작업 키로 멱등성 체크를 수행합니다.
15~21일차: 문서 번역 품질을 높이는 운영 팁
용어집 설계·버전관리
- 핵심 도메인 용어부터: 제품명·법적 용어·브랜드 톤을 우선 수록합니다. 모호한 다의어는 사용 맥락을 주석으로 남깁니다.
- 언어쌍·범위: 용어집은 언어쌍별로 관리하고, 미지원 언어쌍에는 폴백 규칙(미적용·대체 번역)을 명시합니다.
- 버전·승인 흐름: PR·리뷰·승인 라인을 만들고, 버전 태깅으로 롤백 가능성을 확보합니다. 배포 전에 샘플 문서로 A/B 검증을 실시합니다.
형식 보존과 후처리
- 문단·목록·표: 리스트 마커, 표 헤더/셀 병합, 하이퍼링크 앵커를 전처리로 안정화하면 형식 보존 성공률이 올라갑니다.
- 코드·수식·변수 보호: 인라인 코드(
<code>)·수식($...$)·템플릿 변수는 플레이스홀더로 잠그고, 번역 후 원본으로 복원합니다. - HTML 안전성: 속성값, 엔티티, 빈 태그(
<br>)를 정규화하고, 번역 후 HTML lint로 검증합니다.
숫자·단위·고유명사
- 수치/단위: 1,000 구분자·소수점·공백 규칙을 지역별로 정해 후처리 스크립트로 통일합니다.
- 고유명사·약어: 브랜드·모델명·약어 리스트를 보호 목록으로 관리해 불필요한 변환을 방지합니다.
22~30일차: 모니터링·비용·장애 대응
핵심 지표
- 처리 지연: 업로드→완료까지 소요 시간의 P50/P95를 추적합니다.
- 성공률·재시도율: 에러 코드별 비율과 재시도 후 성공률을 분리해 봅니다.
- 비용/문서: 문자 수·페이지 수 대비 비용을 관찰해 아웃라이어를 조기 발견합니다.
에러 패턴과 대응
- 400 계열: 파라미터·파일 포맷 오류. 전처리·검증 강화로 예방합니다.
- 429: 호출 과다. 큐 길이 기반의 유량 제어와 백오프를 적용합니다.
- 5xx/네트워크: 단기 장애 가능성. 멱등 재시도와 알림으로 운영자 가시성을 확보합니다.
비용 최적화
- 중복 방지: 동일 해시의 문서는 캐시/중복 체크로 재번역을 막습니다.
- 범위 축소: 변경분만 추출해 부분 번역(diff)합니다. 마크다운·HTML은 DOM/토큰 비교가 유리합니다.
- 언어 감지 전략: 소스 언어가 명확하면 고정하고, 혼합 문서는 섹션별 언어 감지를 적용합니다.
샘플 API 호출 예시
문서 업로드→상태 조회→다운로드
# 1) 업로드
curl -X POST https://api.deepl.com/v2/document \
-F auth_key=$DEEPL_KEY \
-F file=@report.docx \
-F target_lang=KO \
-F source_lang=EN \
-F formality=prefer_more \
-F glossary_id=$GLOSSARY_ID
# 응답 예시: {"document_id":"abcd-1234","document_key":"efgh-5678"}
# 2) 상태 조회
curl "https://api.deepl.com/v2/document/abcd-1234?auth_key=$DEEPL_KEY&document_key=efgh-5678"
# 3) 결과 다운로드
curl -L "https://api.deepl.com/v2/document/abcd-1234/result?auth_key=$DEEPL_KEY&document_key=efgh-5678" \
-o report.ko.docx
폴링·내부 웹훅 연동 예시(의사 코드)
enqueue(document)
worker:
id, key = upload(document)
while true:
s = status(id, key)
if s.state == 'done':
path = download(id, key)
post(internal_webhook_url, {doc_id: document.id, path: path})
break
elif s.state in ['queued','translating']:
sleep(backoff())
else:
alert(s)
break
체크리스트 요약
- 도입 전: 쿼터·보안·포맷·전처리 기준을 문서화한다.
- 아키텍처: 비동기 처리와 큐·내부 웹훅·멱등성을 기본값으로 설계한다.
- 품질: 용어집 버전관리, 형식 보존 규칙, 숫자·단위·고유명사 보호를 운영 표준으로 만든다.
- 운영: 지표/알림·재시도·캐시로 안정성과 비용을 함께 관리한다.
첫 30일은 기준을 세우는 시간입니다. 위 체크리스트로 기반을 단단히 만들면, DeepL Pro API의 강점을 살려 문서 번역 자동화를 안전하고 효율적으로 확장할 수 있습니다.