운영비는 비동기 수집 경로에서 생긴다
이 방식은 파일 업로드 즉시 끝나는 가벼운 전처리가 아닙니다. 원문이 설명하는 구성에는 Python 기반 OCR, 컴퓨터 비전 처리와 MySQL, MinIO, Redis, Elasticsearch 또는 Infinity 같은 저장, 색인 계층이 포함됩니다. 대량 문서는 비동기 작업으로 처리하고 실패한 페이지를 재시도할 수 있어야 합니다.
따라서 처리량은 페이지 수만이 아니라 스캔 비율, 표 밀도, OCR 필요 여부로 나눠 측정해야 합니다. GPU를 붙였을 때 단축되는 시간과 대기열 지연, 저장 공간, 색인 갱신 비용도 함께 기록합니다. 단순한 텍스트 문서만 다루는 팀에는 이 복잡성이 오히려 과할 수 있습니다.
ingestion job에는 문서 hash와 parser version을 붙여 같은 파일의 중복 처리와 부분 재시도를 구분합니다. 100페이지 중 1페이지 OCR이 실패했을 때 전체를 처음부터 다시 색인하면 비용과 duplicate chunk가 늘 수 있습니다. 실패 page만 재처리한 뒤 기존 index를 원자적으로 교체하고, 사용자가 검색 중인 version이 섞이지 않게 해야 합니다.
운영 지표는 queue 길이만으로 부족합니다. oldest job age, 문서 유형별 page 처리시간, OCR 실패, 재시도, index commit 지연과 원문 대비 chunk 저장 배수를 봅니다. parser가 새 문서 형식에서 갑자기 느려지면 전체 queue를 막지 않도록 파일 크기, 페이지 수 한도와 격리 queue를 둡니다.
민감 문서는 OCR 중간 image, extracted text, embedding과 실패 log에 여러 번 복제됩니다. 각 저장 계층의 암호화, 접근 권한, 삭제 기한을 정하고 원문 삭제 요청이 index와 cache까지 전파되는지 확인합니다. 외부 embedding model을 쓰면 어떤 chunk가 전송되는지도 별도로 검토합니다.