🗺️ 버전별 로드맵 (Version Roadmap)
AI 취업 도우미 서비스의 V1 / V2 / V3 개발 로드맵
📚 목차
📋 버전별 요약 비교
| 항목 |
V1 |
V2 |
V3 |
| API 수 |
5개 (전체) |
5개 (고도화) |
5개 (유지) |
| LLM |
Gemini/OpenAI API |
+ LangChain |
+ LangGraph Multi-Agent |
| RAG |
❌ 미적용 |
✅ VectorDB 도입 |
✅ 고도화 |
| 임베딩 |
❌ 미적용 |
✅ Gemini/OpenAI Embedding |
✅ 자체 모델 검토 |
| 면접 맥락 |
세션 내 유지 |
✅ DB 저장 + RAG |
✅ Agent 협업 |
| 인프라 |
EC2 1대 |
Docker + ALB |
Kubernetes + Lambda |
| 모델 서빙 |
API Only |
+ RunPod (일부) |
SageMaker (대부분) |
| 비용 구조 |
API 과금 |
혼합 |
GPU 인스턴스 + Spot |
📌 API 수 변화 없음: V1부터 5개 API 전체 구현, 단 RAG/임베딩 기능은 V2에서 활성화
⚠️ API 통합: 모든 LLM 응답(분석, 면접 질문, 면접 리포트)은 /ai/chat 하나로 통합
🚀 V1 - MVP (빅뱅 배포)
목표: 핵심 기능 동작 검증 + 빠른 출시
기간: 2~3주
📦 기능 범위 (5개 API 전체)
| 카테고리 |
기능 |
API |
V1 상태 |
| OCR/VLM |
이력서/포트폴리오 텍스트 추출 |
/ai/ocr/extract |
⭕ 구현 |
| 임베딩 |
텍스트 데이터 임베딩 |
/ai/file/embed |
🔸 API만 (RAG 미적용) |
| LLM 응답 |
모든 대화/분석/면접 |
/ai/chat |
⭕ 구현 (RAG 없이) |
| 캘린더 |
채용공고 → 일정 파싱 |
/ai/calendar/parse |
⭕ 구현 |
| 마스킹 |
게시판 첨부파일 개인정보 마스킹 |
/ai/masking/draft |
⭕ 구현 |
🔸 = API 엔드포인트는 구현하되, 내부 RAG/VectorDB 연동은 V2에서 활성화
🛠️ 기술 스택
| 영역 |
기술 |
| LLM |
Gemini API (1.5 Flash/Pro), OpenAI API (문답 프롬프팅) |
| OCR/VLM |
Gemini Vision, Clova OCR |
| 캘린더 |
Google Calendar API + Gemini Tool Use |
| Backend |
Spring Boot |
| AI Server |
FastAPI (Python) - 단일 인스턴스 |
| 인프라 |
EC2 1대 (Backend + AI 분리) |
| DB |
PostgreSQL/MySQL, MongoDB (채팅/분석 저장) |
📊 V1 처리방식
| 처리방식 |
API |
| ⚡ 동기 |
file/embed, calendar/parse |
| 🔄 비동기 |
ocr/extract, masking/draft |
| 📡 스트리밍 (SSE) |
chat (모든 LLM 응답) |
❌ V1 미적용 항목 (V2에서 활성화)
- VectorDB (ChromaDB/Qdrant) 연동
- RAG Chain (LangChain RetrievalQA)
- 임베딩 저장 및 검색
- LangChain 프레임워크
- Redis (대화 컨텍스트, LLM 캐시, Task 상태)
- Docker 컨테이너화
- Load Balancing
✅ V1 체크리스트
⚡ V2 - 고도화 (Production Ready)
목표: RAG 도입 + LangChain 적용 + 인프라 안정화
기간: 4~6주
📦 V1 → V2 변경사항
| 카테고리 |
기능 |
변경사항 |
| RAG |
이력서/포트폴리오 임베딩 저장 |
/ai/file/embed 🔄 VectorDB 연동 |
| RAG |
OCR 후 자동 임베딩 |
/ai/ocr/extract 🔄 내부 임베딩 처리 |
| RAG |
모든 LLM 응답에 RAG 적용 |
/ai/chat 🔄 RAG Chain 적용 (분석, 면접, 대화) |
🛠️ 기술 스택 변경
| 영역 |
V1 → V2 |
| LLM 프레임워크 |
직접 호출 → LangChain 래퍼 |
| RAG |
❌ → LangChain RAG Chain |
| VectorDB |
❌ → ChromaDB 또는 Qdrant |
| 임베딩 |
❌ → Gemini text-embedding-004 |
| 캐시/상태 |
❌ → Redis (Context, Cache, Task) |
| 워크플로우 |
단순 Chain → LangGraph (면접, Agent) |
| 인프라 |
EC2 1대 → Docker + ALB (다중 인스턴스) |
| 모델 서빙 |
❌ → RunPod (OCR/VLM 모델 일부) |
| 모니터링 |
❌ → Prometheus + Grafana |
| 배치 작업 |
❌ → Prefect 또는 Airflow (옵션) |
🔧 VectorDB 컬렉션 구조 (V2)
| 컬렉션 |
저장 데이터 |
활용 시점 |
resumes |
이력서 + 포트폴리오 임베딩 |
매칭 분석, 면접 질문, 채팅 RAG |
job_postings |
채용공고 임베딩 |
유사 공고 추천, 일정 추론 |
interview_feedback |
면접 Q&A 임베딩 |
약점 기반 질문, 유사 면접 참조 |
analysis_results |
분석 결과 임베딩 |
이전 피드백 참조 |
chat_context |
중요 대화 임베딩 |
맥락 유지 |
🔧 RunPod 배포 후보 모델 (V2)
| 모델 |
용도 |
우선순위 |
| PaddleOCR |
한국어 OCR |
🔴 높음 |
| Florence-2 |
VLM (이미지 텍스트 추출) |
🟡 중간 |
| Ko-BERT |
마스킹용 NER |
🟢 낮음 |
📦 V2 아키텍처
┌─────────────┐
│ ALB │
└──────┬──────┘
┌───────────────┼───────────────┐
▼ ▼ ▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Backend EC2 │ │ Backend EC2 │ │ AI Server │
│ (Spring) │ │ (Spring) │ │ (FastAPI) │
└─────────────┘ └─────────────┘ └──────┬──────┘
│
┌────────────────────────────┼────────────────┐
▼ ▼ ▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ VectorDB │ │ RunPod │ │ Gemini/ │
│(ChromaDB) │ │ OCR/VLM │ │ OpenAI API │
└─────────────┘ └─────────────┘ └─────────────┘
│
▼
┌─────────────┐
│ Redis │
│(Context/Cache)│
└─────────────┘
✅ V2 체크리스트
🌟 V3 - Enterprise (Self-Hosted + Multi-Agent)
목표: 비용 최적화 + 모델 자체 운영 + Multi-Agent 아키텍처
기간: 8~12주
📦 V2 → V3 변경사항
| 카테고리 |
기능 |
변경사항 |
| Agent |
이력서 직접 수정 |
Tool: update_resume 🆕 |
| Multi-Agent |
면접관 + 분석가 + 코치 역할 분리 |
🆕 LangGraph Agent |
| Multi-Agent |
에이전트 간 협업 |
🆕 Orchestrator 패턴 |
| 모델 |
Gemini 외 Claude/GPT-4 병행 |
🔄 모델 라우팅 |
| 인프라 |
Docker → Kubernetes |
🔄 EKS 마이그레이션 |
| 서버리스 |
경량 작업 Lambda 분리 |
🆕 캘린더 파싱, 알림 |
🛠️ 기술 스택 변경
| 영역 |
V2 → V3 |
| 컨테이너 |
Docker → Kubernetes (EKS) |
| 서버리스 |
❌ → AWS Lambda (경량 작업) |
| AI 서빙 |
RunPod → AWS SageMaker / 자체 GPU |
| Multi-Agent |
❌ → LangGraph / AutoGen / CrewAI |
| 모델 |
API 의존 → 자체 Fine-tuned 모델 (일부) |
| 비용 |
API 호출 과금 → GPU Spot Instance |
| 모니터링 |
Prometheus → + AWS CloudWatch |
🤖 Multi-Agent 구조
┌─────────────────┐
│ Orchestrator │
│ (Gemini) │
└────────┬────────┘
│
┌────────────────────┼────────────────────┐
▼ ▼ ▼
┌───────────────┐ ┌───────────────┐ ┌───────────────┐
│ 면접관 Agent │ │ 분석가 Agent │ │ 코치 Agent │
│ (질문 생성) │ │ (매칭도 분석) │ │ (학습 가이드) │
│ [GPT-4/Claude] │ │ [Gemini] │ │ [Fine-tuned] │
└───────────────┘ └───────────────┘ └───────────────┘
📦 V3 아키텍처
┌─────────────────┐
│ API Gateway │
│ (Kong/Nginx) │
└────────┬────────┘
│
┌──────────────┴──────────────┐
▼ ▼
┌─────────────────┐ ┌─────────────────┐
│ Kubernetes │ │ AWS Lambda │
│ (EKS) │ │ (서버리스) │
│ ┌─────────────┐ │ │ - 캘린더 파싱 │
│ │ Backend Pod │ │ │ - 알림 처리 │
│ │ AI Pod │ │ └─────────────────┘
│ │ Agent Pods │ │
│ └─────────────┘ │
└────────┬────────┘
│
┌─────────┴──────────┬───────────────────┐
▼ ▼ ▼
┌─────────┐ ┌─────────────┐ ┌─────────────┐
│VectorDB │ │ SageMaker │ │ Gemini API │
│(Qdrant) │ │ (자체 모델) │ │(캘린더 전용)│
└─────────┘ └─────────────┘ └─────────────┘
📊 V3 Agent Tools (확장)
| Tool |
설명 |
V2 |
V3 |
get_schedule |
캘린더 일정 조회 |
✅ |
✅ |
add_schedule |
캘린더 일정 추가 |
✅ |
✅ |
update_schedule |
캘린더 일정 수정 |
✅ |
✅ |
delete_schedule |
캘린더 일정 삭제 |
✅ |
✅ |
get_resume |
이력서/포트폴리오 조회 |
✅ (RAG) |
✅ |
update_resume |
이력서 직접 수정 |
❌ |
✅ |
get_job_posting |
채용공고 조회 |
✅ (RAG) |
✅ |
✅ V3 체크리스트
⏰ 예상 타임라인
| 버전 |
기간 |
마일스톤 |
주요 목표 |
| V1 |
Week 1-3 |
빅뱅 배포 |
5개 API 전체 구현, 핵심 기능 검증, 데모 가능 |
| V2 |
Week 4-8 |
Production |
RAG/LangChain 도입, 인프라 안정화, 서비스 런칭 |
| V3 |
Week 9-14 |
Enterprise |
K8s, Multi-Agent, 자체 모델, 비용 최적화 |
📅 상세 마일스톤
Week 1: FastAPI 구조 셋업 + Gemini/OpenAI 연동
Week 2: OCR/마스킹/분석/면접 API 구현
Week 3: V1 빅뱅 배포 + 피드백 수집
Week 4: LangChain 도입 + VectorDB 셋업
Week 5: RAG Chain 구현 (분석, 면접, 채팅)
Week 6: Docker 컨테이너화 + Docker Compose
Week 7: ALB + 다중 인스턴스 구성
Week 8: V2 Production 배포 + 모니터링
Week 9-10: Kubernetes (EKS) 마이그레이션
Week 11-12: Multi-Agent 아키텍처 설계 + 구현
Week 13-14: 자체 모델 검토 + 비용 최적화
📊 API 목록 (5개 - 전 버전 동일)
| # |
Endpoint |
Method |
설명 |
처리방식 |
| 1 |
/ai/ocr/extract |
POST |
OCR 텍스트 추출 + 임베딩 (V2+) |
🔄 비동기 |
| 2 |
/ai/file/embed |
POST |
텍스트 직접 임베딩 |
⚡ 동기 |
| 3 |
/ai/chat |
POST |
모든 LLM 응답 (대화/분석/면접 질문/리포트) |
📡 스트리밍 |
| 4 |
/ai/calendar/parse |
POST |
일정 파싱 |
⚡ 동기 |
| 5 |
/ai/masking/draft |
POST |
게시판 첨부파일 마스킹 |
🔄 비동기 |
💡 통합된 API:
/ai/analyze → /ai/chat (context: "analysis")
/ai/interview/question → /ai/chat (context: "interview_question")
/ai/interview/report → /ai/chat (context: "interview_report")
/ai/interview/save → Backend가 직접 DB 저장
📌 처리방식: ⚡ 동기 | 🔄 비동기 (task_id + 폴링) | 📡 스트리밍 (SSE)
🤔 고민할 포인트 (의사결정 필요)
아래 항목들은 프로젝트 상황에 따라 결정이 필요한 부분입니다.
1. V1 범위 결정
| 질문 |
선택지 |
고려사항 |
| 5개 API 전부 V1? |
A) 전부 / B) 핵심만 |
6주 안에 가능한가? 우선순위는? |
| 핵심 API는 어디까지? |
분석+면접 / 채팅+캘린더 / 마스킹 |
데모 시 어필 포인트? |
| RAG 없이 MVP 가치? |
O / X |
RAG 없으면 경쟁력 있나? |
📝 고민:
- V1에서 RAG 없이 분석/면접 기능이 의미 있는가?
- 아니면 API 수를 줄이고 RAG를 V1에 포함할 것인가?
2. LLM 모델 선택
| 질문 |
선택지 |
고려사항 |
| 주 모델 |
Gemini Flash / Pro / OpenAI GPT-4 |
비용 vs 성능 |
| 한국어 성능 |
Gemini / GPT-4 / Claude |
면접/분석 품질 |
| Fallback 전략 |
있음 / 없음 (V2 이후) |
API 장애 대응 |
📝 고민:
- Gemini Flash (저렴) vs Pro (고품질) 어느 것을 기본으로?
- 면접 질문 생성에 GPT-4가 필요한가?
- 비용 예산은 월 얼마인가? ($50? $100? $500?)
3. OCR/VLM 선택
| 질문 |
선택지 |
고려사항 |
| V1 OCR |
Gemini Vision / Clova OCR / PaddleOCR |
한국어 정확도, 비용 |
| 마스킹용 VLM |
Gemini Vision / YOLO |
정확도, 추가 학습 필요? |
| RunPod 사용 시기 |
V1 / V2 / 안 함 |
비용 vs 성능 |
📝 고민:
- Gemini Vision만으로 OCR + 마스킹 둘 다 가능한가?
- PaddleOCR 직접 배포하면 비용 절감 vs 운영 복잡도
- 마스킹에 YOLO 학습이 필요하면 시간 얼마나?
4. 인프라 전략
| 질문 |
선택지 |
고려사항 |
| V1 인프라 |
EC2 1대 / EC2 분리 (BE+AI) |
간단 vs 확장성 |
| Docker 도입 시점 |
V1 / V2 |
개발 편의 vs 복잡도 |
| VectorDB 배포 |
같은 EC2 / 별도 서비스 |
비용 vs 안정성 |
📝 고민:
- V1에서 Docker 없이 직접 배포 vs Docker Compose로 시작
- ChromaDB를 FastAPI와 같은 EC2에 설치? 별도 인스턴스?
- Redis는 V1에 필요한가? (대화 컨텍스트 유지)
5. 6주 일정 현실성
| 주차 |
계획 |
현실적? |
리스크 |
| Week 1 |
FastAPI 셋업 + LLM 연동 |
✅ |
- |
| Week 2 |
5개 API 구현 |
✅ |
통합으로 간소화 |
| Week 3 |
V1 배포 + 테스트 |
⚠️ |
버그 수정 시간? |
| Week 4 |
RAG + VectorDB |
⚠️ |
러닝커브 |
| Week 5 |
Docker + 인프라 |
⚠️ |
예상 외 이슈 |
| Week 6 |
V2 배포 + 모니터링 |
❓ |
버퍼 있나? |
📝 고민:
- 6주 안에 V2까지 현실적인가?
- V1.5 개념으로 중간 배포가 필요한가?
- 버퍼 주간이 없는데 괜찮은가?
6. 우선순위 정리 (내가 결정해야 할 것)
| 우선순위 |
결정 사항 |
선택 |
| ⭐⭐⭐ |
V1 핵심 API 범위 |
5개 API (전체) |
| ⭐⭐⭐ |
V1 RAG 포함 여부 |
포함 / 미포함 |
| ⭐⭐⭐ |
주 LLM 모델 |
___________ |
| ⭐⭐ |
OCR 서비스 |
___________ |
| ⭐⭐ |
V1 Docker 사용 여부 |
사용 / 미사용 |
| ⭐ |
VectorDB 선택 |
ChromaDB / Qdrant |
| ⭐ |
Redis V1 포함 여부 |
포함 / 미포함 |
📌 다음 단계
- 위 고민 포인트 결정 → 로드맵 확정
- V1 상세 태스크 분해 → 일정 세분화
- 기술 스파이크 → 불확실한 기술 미리 PoC
- 리스크 식별 → 대응 계획 수립