DevInterview는 AI를 활용해 사용자 맞춤형 면접 질문을 생성해주는 AI 면접 도우미 플랫폼입니다.
사용자가 입력한 이력서와 블로그 글을 바탕으로 GPT 기반 질문을 생성하며, 생성된 질문은 RAG 구조를 통해 개인의 이전 입력 정보를 질문 생성에 반영해 개인화된 질문을 생성할 수 있도록 했습니다.
- 이력서 기반 질문 자동 생성
- 질문 히스토리 저장 및 유사한 내용을 검색해 질문 생성에 반영하는 기능
- 면접 질문 복습 기능
백엔드
- Spring Boot
- PostgreSQL + Qdrant
- Redis
- Open AI API
프론트엔드
- React
- Vite
- TailwindCSS
인프라
- AWS EC2, RDS, Route53
- GitHub Actions
- Nginx
- Spring Boot 기반 API 서버 설계 및 구현
- PostgreSQL, Redis, Qdrant 등 주요 컴포넌트 연동
- Docker 기반 컨테이너화 및 Nginx 리버스 프록시 설정
- AWS EC2, RDS, Route53 기반 인프라 구성 및 운영
- Redis 분산락 적용을 통해 중복 요청 방지 및 GPT API 비용 절감
- API 응답 속도 개선 및 불필요한 트래픽 감소
- 사용자 입력 → 요약 → 임베딩 생성 → 유사도 검색 → 질문 생성 흐름 전체 설계 및 구현
- GPT API 및 Embedding API 연동
- Qdrant를 이용한 유사도 검색 기반 RAG 로직 설계
사용자가 질문 생성 버튼을 빠르게 여러 번 클릭할 경우, 동일 요청이 중복 전송되어 GPT API가 반복 호출되고 비용이 증가했습니다. 이를 해결하기 위해 GPT 응답 이전에 벡터 DB(Qdrant) 기반 유사 질문을 검색하여 응답에 반영하는 RAG 구조를 도입했습니다.
| 항목 | 서버 동기화 방식 | DB Unique 제약 | Redis 분산락 |
|---|---|---|---|
| 구현 난이도 | 낮음 | 중간 | 높음 |
| 실시간 차단 가능 | 불가능 | 불가능 | 가능 |
| 다중 인스턴스 대응 | 불가능 | 가능 | 가능 |
| GPT 호출 전 차단 | 불가능 | 불가능 | 가능 |
| 비용/성능 영향 | 낮음 | 비용 큼 | 효율적 |
| 스케일링 적합성 | 낮음 | 중간 | 높음 |
GPT API는 사용량 기반 과금 모델을 사용하고, 응답 시간이 길고 무거운 요청 단위를 갖고 있습니다. 이에 따라 중복 요청을 사전에 차단할 수 있는 장치가 필수적이었습니다.
Redis 분산락을 선택한 이유는 다음과 같습니다.
- 비용 절감: API 호출 이전에 불필요한 요청을 차단하여 운영 비용을 최소화할 수 있었습니다.
- 빠른 도입: Redis는 이미 세션 관리와 캐시에 사용 중이었고, 별도 구성 없이 가볍고 빠르게 로직 구현이 가능했습니다.
이 전략을 도입함으로써 GPT API 호출 횟수가 최대 3회에서 1회로 제한되었습니다. 또한 질문 생성 중복률이 30%에서 0%로 개선되었습니다.