업무/기능 Backend (API/DB) AI 서버 (FastAPI) VDB (Milvus) Storage (S3) 한 줄 핵심(설명 포인트)
사용자/권한(ROLE) ✅ 권한 판단/검증(누가 가능한지 결정) ✅ 요청에 맞춰 동작(권한 전제로 실행) 권한 “결정”은 Backend, AI는 “따라서 실행”
리소스 메타(문서/영상/스크립트) ✅ DB에 저장/조회(제목, 상태, 버전, 소유자) ⚠️ 실행 중 필요한 최소 메타만 사용 상태/버전의 단일 기준은 Backend DB
승인 워크플로우(검토/승인/반려) ✅ 상태 변경/알림/이력 관리 ❌ (승인 판단하지 않음) 승인/반려는 비즈니스 규칙 → Backend
채팅 요청 수신/세션 ✅ session_id/user_id/role 관리, 프론트와 연결 ✅ 실제 답변 생성, 스트리밍 출력 Backend는 “접수/중계”, AI는 “답변 생성”
입력/출력 민감정보(PII) ⚠️ 원칙상 최소 저장(가능하면 저장 X) ✅ PII 검사/마스킹 호출 & 적용(입력/출력) PII는 AI단에서 먼저 막고 안전하게 흘림
의도/도메인 판단(라우팅) ⚠️ 정책/파라미터 전달(도메인 등) ✅ 질문 유형 판단 후 경로 선택 무슨 답을 할지(경로 선택)는 AI가 담당
RAG 검색(질문→근거 찾기) ✅ VDB 검색 호출 + 근거 구성 ✅ 벡터 검색 수행/필터 적용 검색 실행은 AI, 검색 저장소는 VDB
인덱싱 트리거(승인 후 반영) ✅ “승인됨” 확인 후 인덱싱 요청 호출 ✅ 텍스트추출/청킹/임베딩/업서트 실행 + 잡 관리 ✅ 벡터/메타 저장 ✅ 원본 파일 저장(문서/PDF 등) Backend가 ‘시작’ 버튼, AI가 ‘실제 작업’
삭제/버전 정책(ACTIVE/ARCHIVED) ✅ 어떤 버전이 최신/활성인지 결정 ✅ 그 정책대로 인덱싱/삭제 수행 ✅ 검색 대상에서 제외/포함 ✅ 파일은 보관 가능(정책에 따름) 무엇이 “현재 정답”인지는 Backend가 결정
영상 스크립트 생성 ✅ 생성 요청/저장(DRAFT) ✅ LLM 호출로 초안 생성 ⚠️ (필요 시 자료 파일) AI가 초안 생성, Backend가 상태/저장
영상 렌더 Job(생성/상태) ✅ job 생성 요청/조회 API 제공(표시/통제) ✅ TTS/렌더 실행, 단계별 상태 기록 ✅ 결과물 업로드(영상/썸네일/자막) Backend는 “관리 화면”, AI는 “렌더 실행 엔진”
발행(PUBLISH) ✅ PUBLISHED 처리(공개 여부 결정) ⚠️ 발행 이후 후처리(예: KB 인덱싱) ✅ (선택) 발행 콘텐츠 인덱싱 ✅ 공개 파일 제공(URL) 공개 결정은 Backend가 함(통제 지점)
로그/감사/추적(request_id) ✅ 서비스 로그/이력 저장(필요시) ✅ AI 단계 로그(PII/RAG/LLM/latency) 생성 문제 생기면 request_id로 전 구간 추적
장애/재시도 ✅ 재시도 버튼/정책/표시 ✅ 실패 단계 기록 + retry/cancel 수행 ✅ (검색/업서트 실패 원인 제공) ✅ (업로드 실패 원인) 실패는 “기록+복구”가 핵심(운영 관점)
절대 하지 않는 것(경계) ❌ LLM 직접 호출(원칙) / ❌ 벡터DB 직접 조작(원칙) ❌ 승인 결정 / ❌ “최종 상태의 단일 기준” 되기 ❌ 파일 저장/업무 로직 ❌ 검색/승인/정책 로직 각 컴포넌트가 ‘자기 일’만 해야 안정적

설명서

1) 이 표의 핵심 원칙 3개

  1. 결정(정책/승인/공개)은 Backend
  2. 실행(검색/생성/렌더/인덱싱)은 AI 서버
  3. 저장소는 저장소 역할만

이 3줄만 기억하면 멘토님 질문 대부분을 깔끔하게 받아칠 수 있어요.


2) 각 컴포넌트 한 줄 설명(외우기용)


3) ‘한 번에’ 설명하는 흐름(30초)

“저희는 Backend가 승인/권한/상태/발행을 책임지는 단일 기준이고,

AI 서버는 그 결정에 따라 검색(RAG), 답변 생성, 스크립트 생성, 영상 렌더, 인덱싱 같은 실행을 담당합니다.