번역 큐: 배치 처리 시스템
이 문서는 AI API 사용을 최적화하기 위해 번역을 큐에 넣고 배치 처리하는 방법을 설명합니다.
문제: 온디맨드 번역은 비용이 많이 든다
콘텐츠를 온디맨드로 번역하는 데는 문제가 있습니다:
-
느림: 각 번역에 1-2초 소요
-
비쌈: 요청당 API 비용 발생
-
중복: 동일한 텍스트가 여러 번 번역됨
-
차단: 사용자가 번역을 기다려야 함
더 나은 접근 방식이 필요합니다.
해결책: 큐와 배치
큐: 번역 요청 수집
배치: 여러 번역을 함께 처리
캐시: 재사용을 위해 결과 저장
스케줄: 주기적으로 큐 처리 (실시간 아님)
큐 구조
큐 파일
위치: 디스크의 JSON 파일
형식: 번역 요청 배열
필드:
-
text: 번역할 영어 텍스트 -
target_lang: 언어 코드 (hi, de, fr 등) -
context: 텍스트가 나타나는 위치 (product, query, article) -
priority: 높음/보통/낮음
큐에 추가
번역이 누락된 경우:
queue_translation(text, target_lang, context="product")
중복 제거: 이미 큐에 있는지 확인
유효성 검사: 잘못된 값 거부
배치 처리
스크립트
위치: scripts/web/process_translation_queue.py
스케줄: cron을 통해 6시간마다 실행
잠금 파일: 동시 실행 방지
처리 흐름
1. 큐 로드: 모든 대기 중인 요청 읽기
2. 언어별 그룹화: 같은 언어 요청을 배치로 묶기
3. 중복 제거: 배치 내 중복 제거
4. 캐시 확인: 이미 번역된 텍스트 건너뛰기
5. 배치 번역: DeepSeek API로 전송
6. 결과 파싱: 응답에서 번역 추출
7. 캐시에 저장: 구문 테이블에 저장
8. 큐 비우기: 처리된 요청 제거
배치 번역
API 호출
모델: DeepSeek-V3 (Together.ai 경유)
시스템 프롬프트: 캐시됨 (언어별 모든 배치에 동일)
사용자 프롬프트: 가변적 (배치별)
형식: 번호 매긴 목록
예시:
Translate these 10 texts:
1. Mini PC
2. Thin Client
3. Compact Desktop
...
응답:
1. मिनी पीसी
2. थिन क्लाइंट
3. कॉम्पैक्ट डेस्कटॉप
...
파싱
줄 번호로 번역 추출:
-
숫자 접두사 제거 (
1.,2.등) -
위치로 원본 텍스트와 매칭
-
개수 일치 검증
오류 처리
API 실패: 대체 API로 재시도
파싱 실패: 원본 텍스트 반환
부분 성공: 성공한 번역 저장, 실패한 것 재큐
캐싱 전략
구문 테이블
위치: 언어별 JSON 파일
형식: {"English": "Translation"}
로딩: 시작 시 한 번 로드
이점: 빠른 조회, API 호출 불필요
캐시 적중률
첫 실행: 낮음 (모두 새로운 것)
이후 실행: 높음 (대부분 캐시됨)
이점: API 비용 절감
보존 규칙
번역 중 다음을 보존합니다:
브랜드 이름: Thinvent®, Intel®, AMD®
HTML 태그: <p>, <br>, <strong>
URL: https://www.thinvent.in
SKU: Treo-N100-8-256
숫자: 8GB, 256GB, 4 cores
구현: 시스템 프롬프트의 정규식 패턴
언어 감지
번역 전에 이미 번역되었는지 확인:
방법: 문자 집합 분석
힌디어: 데바나가리 문자
중국어: CJK 문자
아랍어: 아랍 문자
이점: 불필요한 번역 건너뛰기
우선순위 처리
높은 우선순위: 제품 이름, 기능 (먼저 처리)
보통 우선순위: 설명, 문서 (두 번째 처리)
낮은 우선순위: 오래된 콘텐츠, 드물게 조회됨 (마지막 처리)
이점: 중요한 콘텐츠가 먼저 번역됨
스케줄링
Cron 작업
빈도: 6시간마다
명령: python3 scripts/web/process_translation_queue.py
잠금 파일: /tmp/process_translation_queue.lock
이점: 자동 처리, 수동 개입 불필요
주간 작업
문서: 매주 새 문서 번역
Babel 문자열: 매주 템플릿 번역 업데이트
스크립트: scripts/web/translate_articles_weekly.sh
모니터링
큐 크기
대기 중인 요청 추적:
-
총 요청 수
-
언어별 요청
-
가장 오래된 요청 나이
알림: 큐가 너무 커지면
번역 통계
처리 추적:
-
배치당 번역 수
-
API 성공률
-
캐시 적중률
-
처리 시간
비용 추적
API 사용 모니터링:
-
일일 요청 수
-
요청당 토큰
-
언어별 비용
참고 자료
관련 문서
요약
번역 큐는 효율적인 배치 처리를 가능하게 합니다:
큐:
-
번역 요청 수집
-
배치 내 중복 제거
-
우선순위 처리
-
유효성 검사 및 필터링
배치 처리:
-
언어별 그룹화
-
DeepSeek API로 전송
-
번호 매긴 응답 파싱
-
구문 테이블에 저장
캐싱:
-
번역 전 캐시 확인
-
높은 캐시 적중률
-
API 비용 절감
스케줄링:
-
cron을 통해 6시간마다
-
잠금 파일이 동시 실행 방지
-
주간 문서 번역
보존:
-
브랜드 이름
-
HTML 태그
-
URL 및 SKU
이 접근 방식은 배치 처리와 캐싱을 통해 API 비용을 절감하고 번역 품질을 향상시킵니다.