2026 PROJECT / AI · 교육·문화

AlgoTalk

CS 질문 생성, 음성 답변 분석, 시선과 자세 피드백을 연결하는 AI 면접 연습

개발자 안정훈공개일 2026. 06. 22.영상 6:43
Spring BootReactFastAPIOpenAIJavaPythonJavaScriptMariaDBMongoDBRedisAWSOracle CloudDockerNginxMyBatisJWTMediaPipeGitHub Actions
재생이 어려운 경우 원본 영상을 확인하세요.YouTube에서 보기 (새 탭)

ABOUT THE PROJECT

프로젝트 소개

AlgoTalk은 개발자 취업 준비생을 위한 AI 기반 CS 기술면접 연습 플랫폼입니다.

사용자는 CS 기술면접 연습을 위한 면접 세션을 생성할 수 있으며, AI가 Java, Spring, 데이터베이스, 운영체제, 네트워크 등 개발 직무와 관련된 CS 면접 질문을 자동으로 생성합니다. 질문 생성 시 이전 질문 이력을 반영하여 중복을 줄이고, 질문 의도와 난이도, 핵심 키워드를 포함한 구조화된 질문 목록을 생성하도록 구성했습니다.

사용자는 실제 면접처럼 질문에 답변할 수 있으며, 프론트엔드에서는 브라우저의 MediaRecorder와 MediaDevices API를 활용해 사용자의 음성과 카메라 스트림을 수집합니다. 녹음된 답변 음성은 AI 서비스의 STT API로 전송되어 텍스트로 변환되며, 변환 결과와 함께 발화 시간, WPM(Words Per Minute, 분당 단어 수), 침묵 비율, ASR(Automatic Speech Recognition, 자동 음성 인식) 신뢰도, 추임새 횟수 및 비율 등의 음성 지표를 산출합니다.

또한 프론트엔드에서는 MediaPipe Tasks Vision의 Face Landmarker와 Pose Landmarker를 활용하여 실시간으로 시선, 자세, 제스처 데이터를 분석합니다. 백엔드는 STT 결과와 비언어 분석 지표를 저장·점수화하고, AI 서비스의 답변 평가 결과와 결합하여 종합 면접 피드백을 제공합니다.

AI 서비스는 FastAPI와 Python 3.10 기반으로 구성되었으며, OpenAI API를 활용해 CS 기술면접 질문 생성, 직접 입력 질문의 CS 적합성 검증, 사용자 답변 평가를 수행합니다. 답변 평가 기능은 질문, 핵심 키워드, 사용자 답변을 바탕으로 핵심 개념 포함 여부, 개념 정확성, 답변 완성도를 분석하고, 점수, 잘한 점, 개선할 점, 추가하면 좋은 내용, 모범 답변, 학습 팁, 꼬리 질문을 구조화된 응답으로 제공합니다.

사용자는 마이페이지와 대시보드에서 면접 기록과 답변 결과를 다시 확인할 수 있으며, 커뮤니티 기능을 통해 면접 질문과 학습 경험을 공유할 수 있습니다. 커뮤니티에서는 게시글, 댓글, 좋아요, 스크랩 기능을 제공하여 사용자가 학습 자료와 면접 경험을 관리할 수 있도록 구성했습니다.

일반 회원가입과 OAuth2 소셜 로그인을 지원하며, JWT(JSON Web Token) 기반 인증 구조와 Redis를 활용한 인증 정보 관리를 적용했습니다. Refresh Token은 Redis에 세션 단위로 저장하고, JWT의 세션 식별값과 연계하여 유효 세션 여부를 검증했습니다. 특히 RTR(Refresh Token Rotation, 리프레시 토큰 회전) 방식을 적용하여 Refresh Token 재사용 위험을 줄였으며, 비밀번호는 BCrypt로 암호화하여 사용자 인증 보안성을 확보했습니다.

백엔드에서는 GlobalExceptionHandler를 활용하여 서비스 전반의 예외 응답 형식을 공통화하고, 예외 상황에서도 일관된 에러 메시지를 반환하도록 구성했습니다. 또한 JUnit 5 기반 단위 테스트와 Mockito 기반 Mock 테스트를 작성하고, ArchUnit을 활용하여 계층 간 의존 방향을 검증했습니다.

본 서비스는 React 기반 프론트엔드, Spring Boot 기반 백엔드 MSA(Microservice Architecture, 마이크로서비스 아키텍처), FastAPI 기반 AI 서비스로 구성되었습니다. 백엔드 서버는 Gradle 멀티 모듈 구조로 구성하여 common, apiGateway, userService, communityService, interviewService, eurekaServer 모듈을 분리했습니다. Spring Cloud Gateway를 API Gateway(API 게이트웨이)로 사용하여 요청 진입점을 관리하고, Eureka Server/Client를 통해 서비스 디스커버리(Service Discovery) 구조를 구성했습니다. 또한 각 서비스는 Spring Cloud Config Client를 통해 외부 Config Server 기반 설정 중앙 관리를 연동할 수 있도록 구성했습니다.

데이터 저장소는 서비스별 MariaDB와 Redis를 사용하고, 면접 답변 분석 및 AI 평가 결과 같은 비정형 데이터는 MongoDB에 저장했습니다. AI 서비스는 질문 생성, STT, 답변 평가 결과를 API 응답으로 제공하며, AI 질문 및 분석 관련 데이터 저장은 백엔드/저장소 계층에서 MongoDB를 통해 관리하는 구조로 설계했습니다.

배포 환경은 백엔드 MSA와 AI/프론트엔드 서비스를 분리한 멀티 클라우드(Multi Cloud) 구조로 구성했습니다. 백엔드 MSA는 AWS(Amazon Web Services) EC2 환경에 배포하고, AI 서비스와 프론트엔드는 Oracle Cloud A1 ARM64 환경에 배포하여 서비스 특성에 따라 인프라를 분리했습니다. Docker, Nginx, GitHub Actions 기반 CI/CD(Continuous Integration/Continuous Deployment, 지속적 통합/지속적 배포)를 활용하여 서비스별 배포 흐름을 구성하고 실제 웹 서비스 형태로 운영중입니다.

사용 기술

Spring BootReactFastAPIOpenAIJavaPythonJavaScriptMariaDBMongoDBRedisAWSOracle CloudDockerNginxMyBatisJWTMediaPipeGitHub Actions
YouTube 원본 프로젝트 설명
❍ 개발자 : 안정훈 ❍ 제목 : AlgoTalk ❍ 설명 : AlgoTalk은 개발자 취업 준비생을 위한 AI 기반 CS 기술면접 연습 플랫폼입니다. 사용자는 CS 기술면접 연습을 위한 면접 세션을 생성할 수 있으며, AI가 Java, Spring, 데이터베이스, 운영체제, 네트워크 등 개발 직무와 관련된 CS 면접 질문을 자동으로 생성합니다. 질문 생성 시 이전 질문 이력을 반영하여 중복을 줄이고, 질문 의도와 난이도, 핵심 키워드를 포함한 구조화된 질문 목록을 생성하도록 구성했습니다. 사용자는 실제 면접처럼 질문에 답변할 수 있으며, 프론트엔드에서는 브라우저의 MediaRecorder와 MediaDevices API를 활용해 사용자의 음성과 카메라 스트림을 수집합니다. 녹음된 답변 음성은 AI 서비스의 STT API로 전송되어 텍스트로 변환되며, 변환 결과와 함께 발화 시간, WPM(Words Per Minute, 분당 단어 수), 침묵 비율, ASR(Automatic Speech Recognition, 자동 음성 인식) 신뢰도, 추임새 횟수 및 비율 등의 음성 지표를 산출합니다. 또한 프론트엔드에서는 MediaPipe Tasks Vision의 Face Landmarker와 Pose Landmarker를 활용하여 실시간으로 시선, 자세, 제스처 데이터를 분석합니다. 백엔드는 STT 결과와 비언어 분석 지표를 저장·점수화하고, AI 서비스의 답변 평가 결과와 결합하여 종합 면접 피드백을 제공합니다. AI 서비스는 FastAPI와 Python 3.10 기반으로 구성되었으며, OpenAI API를 활용해 CS 기술면접 질문 생성, 직접 입력 질문의 CS 적합성 검증, 사용자 답변 평가를 수행합니다. 답변 평가 기능은 질문, 핵심 키워드, 사용자 답변을 바탕으로 핵심 개념 포함 여부, 개념 정확성, 답변 완성도를 분석하고, 점수, 잘한 점, 개선할 점, 추가하면 좋은 내용, 모범 답변, 학습 팁, 꼬리 질문을 구조화된 응답으로 제공합니다. 사용자는 마이페이지와 대시보드에서 면접 기록과 답변 결과를 다시 확인할 수 있으며, 커뮤니티 기능을 통해 면접 질문과 학습 경험을 공유할 수 있습니다. 커뮤니티에서는 게시글, 댓글, 좋아요, 스크랩 기능을 제공하여 사용자가 학습 자료와 면접 경험을 관리할 수 있도록 구성했습니다. 일반 회원가입과 OAuth2 소셜 로그인을 지원하며, JWT(JSON Web Token) 기반 인증 구조와 Redis를 활용한 인증 정보 관리를 적용했습니다. Refresh Token은 Redis에 세션 단위로 저장하고, JWT의 세션 식별값과 연계하여 유효 세션 여부를 검증했습니다. 특히 RTR(Refresh Token Rotation, 리프레시 토큰 회전) 방식을 적용하여 Refresh Token 재사용 위험을 줄였으며, 비밀번호는 BCrypt로 암호화하여 사용자 인증 보안성을 확보했습니다. 백엔드에서는 GlobalExceptionHandler를 활용하여 서비스 전반의 예외 응답 형식을 공통화하고, 예외 상황에서도 일관된 에러 메시지를 반환하도록 구성했습니다. 또한 JUnit 5 기반 단위 테스트와 Mockito 기반 Mock 테스트를 작성하고, ArchUnit을 활용하여 계층 간 의존 방향을 검증했습니다. 본 서비스는 React 기반 프론트엔드, Spring Boot 기반 백엔드 MSA(Microservice Architecture, 마이크로서비스 아키텍처), FastAPI 기반 AI 서비스로 구성되었습니다. 백엔드 서버는 Gradle 멀티 모듈 구조로 구성하여 common, apiGateway, userService, communityService, interviewService, eurekaServer 모듈을 분리했습니다. Spring Cloud Gateway를 API Gateway(API 게이트웨이)로 사용하여 요청 진입점을 관리하고, Eureka Server/Client를 통해 서비스 디스커버리(Service Discovery) 구조를 구성했습니다. 또한 각 서비스는 Spring Cloud Config Client를 통해 외부 Config Server 기반 설정 중앙 관리를 연동할 수 있도록 구성했습니다. 데이터 저장소는 서비스별 MariaDB와 Redis를 사용하고, 면접 답변 분석 및 AI 평가 결과 같은 비정형 데이터는 MongoDB에 저장했습니다. AI 서비스는 질문 생성, STT, 답변 평가 결과를 API 응답으로 제공하며, AI 질문 및 분석 관련 데이터 저장은 백엔드/저장소 계층에서 MongoDB를 통해 관리하는 구조로 설계했습니다. 배포 환경은 백엔드 MSA와 AI/프론트엔드 서비스를 분리한 멀티 클라우드(Multi Cloud) 구조로 구성했습니다. 백엔드 MSA는 AWS(Amazon Web Services) EC2 환경에 배포하고, AI 서비스와 프론트엔드는 Oracle Cloud A1 ARM64 환경에 배포하여 서비스 특성에 따라 인프라를 분리했습니다. Docker, Nginx, GitHub Actions 기반 CI/CD(Continuous Integration/Continuous Deployment, 지속적 통합/지속적 배포)를 활용하여 서비스별 배포 흐름을 구성하고 실제 웹 서비스 형태로 운영중입니다. ❍ 적용 기술 : - 프레임워크 : Spring Boot 3.5.11, Spring Security, Spring Cloud Gateway, Spring Cloud Netflix Eureka, Spring Cloud Config, FastAPI, React - 프론트엔드 : React, React Router, Axios, Zustand, Vite, MediaPipe Tasks Vision, MediaRecorder API, MediaDevices API, HTML5, CSS, JavaScript - 백엔드 : Spring Boot, Spring Security, MyBatis, Spring Cloud Gateway, Eureka Server/Client, Spring Cloud Config Client, OpenFeign, WebClient, GlobalExceptionHandler 기반 공통 예외 처리 - AI 서비스 : FastAPI, Python 3.10, OpenAI API 기반 질문 생성·질문 검증·답변 평가, whisper-1 기반 STT(Speech To Text, 음성 인식) - 사용 언어 : Java 17, JavaScript, Python 3.10, HTML5, CSS - 데이터베이스 : MariaDB(Database-per-Service: 회원/커뮤니티/면접 세션 DB 분리), MongoDB(면접 답변 분석 및 AI 평가 결과 저장), Redis(인증 정보, 세션 및 토큰 관리) - 클라우드 : AWS(Amazon Web Services) EC2(Backend MSA, amd64), Oracle Cloud A1(AI Service/Frontend, ARM64) - 통신 프로토콜 : REST API, HTTPS, SMTP - 웹서버/배포 : Nginx, Docker, Docker Compose, GitHub Actions CI/CD(Continuous Integration/Continuous Deployment), HTTPS, SSL, Let’s Encrypt - 인증/보안 : JWT(JSON Web Token) 기반 인증, RTR(Refresh Token Rotation), OAuth2 소셜 로그인, Spring Security, Redis 인증 정보 관리, BCrypt 비밀번호 암호화 - 데이터 접근 기술 : MyBatis, MongoDB 연동 - 테스트/품질 관리 : JUnit 5 기반 단위 테스트, Mockito 기반 Mock 테스트, ArchUnit 1.3.0 기반 계층 구조 검증, Spring Security Test 기반 인증 테스트 - 빌드/의존성 관리 : Gradle 멀티 모듈, Spring Dependency Management, Spring Cloud 2025.0.0, Java Toolchain - 로깅 : Logback 기반 백엔드 로깅, TimedRotatingFileHandler 기반 AI 서비스 로깅 - API 활용 : OpenAI API, Whisper STT API - 기타 : Lombok ❍ 아키텍처 : - MSA(Microservice Architecture, 마이크로서비스 아키텍처), API Gateway(API 게이트웨이), 서비스 디스커버리(Service Discovery), Config Client/Config Server 연동, Database-per-Service(서비스별 데이터베이스 분리), Multi Cloud Deployment(멀티 클라우드 배포), Gradle 멀티 모듈 구조 ❍ 도메인 주소 : https://algotalk.kr ❍ github 주소 : https://github.com/project-algotalk ❍ 블로그 주소 : https://jhoondev.notion.site/bigdata

공개된 YouTube 설명에 근거한 소개입니다. 설명에 없는 학생 정보나 기능은 추가하지 않습니다.

CONTINUE EXPLORING

기술로 이어지는 작품

모든 작품 보기 ↗

이런 프로젝트를 직접 만들어보고 싶다면

빅데이터소프트웨어공학과 알아보기 (새 탭)