실전 과제로 배우고, AI로 성장하다
- 프로젝트 기간: 2026.04.06 ~ 2026.05.21 (7주)
- 개발 인원: 6명 (FE 2, BE 3, AI 1)
AI 활용 학습 환경은 점점 확대되고 있지만, 현재 많은 학습 서비스는 AI가 어떤 방식으로 학습자에게 도움을 주었는지, 학습자가 어떤 과정을 거쳐 문제를 해결했는지 확인하기 어려운 구조입니다. 이로 인해 단순히 최종 결과물만 보고 학습 성과를 판단하게 되며, 실제 학습 과정이나 사고 흐름을 평가하기 어렵습니다.
특히 학습자가 AI에게 어떤 질문을 했고, 어떤 답변을 바탕으로 코드를 수정하거나 문제를 해결했는지 기록되지 않으면 교수자나 운영자는 학습자의 이해도와 AI 활용 능력을 정확히 파악하기 어렵습니다.
또한 AI를 단순 정답 생성 도구로 사용하는 경우, 학습자는 문제 해결 과정을 충분히 익히지 못하고 결과에만 의존하게 될 수 있습니다. 따라서 AI 활용 과정 자체를 추적하고 분석하여, 학습자가 올바르게 AI를 활용하고 있는지 피드백할 수 있는 시스템이 필요합니다.
AIground는 AI와의 상호작용, 실행 흐름, 코드 변경 과정 등을 기록하고 분석하여 학습자의 문제 해결 과정을 투명하게 확인하고, 이를 바탕으로 맞춤형 피드백을 제공하는 AI 기반 학습 플랫폼을 목표로 합니다.
- 에이전트 지침·스킬·실행 규칙 파일 직접 편집
HARNESS.md/instruction.md등 파일을 AI 프롬프트에 자동 주입- 단계별 질문 폼(마법사)을 통해 목표·스킬·규칙 입력 시 하네스파일 자동 생성
- Monaco Editor 기반 풀이 환경 (Java / Python 지원)
- 파일 탐색기, diff 뷰, 테스트 결과 패널을 통합한 IDE 레이아웃
- 테스트 실행 및 빌드 상태 확인
- 문제 풀이 중 AI 에이전트와 실시간 대화 지원
- 파일 변경 제안(Patch) 수락·거절 인터페이스
- 실행기록 조회: 소요시간, 토큰
- Span 단위 세부내역: LLM호출, Tool 실행
- 간트 차트 기반 타임라인: Span별 실행흐름, Input / Output / 로그
- 제출 완료 후 AI가 자동 생성하는 하네스 품질 평가 리포트
- 5개 평가 기준
- 목표 명확도, 워크플로우 설계, 정보 품질, 스킬 모듈성, 검증 루프
- 강점 / 개선 포인트 / 다음 액션 가이드 및 평가 근거 제공
- 사용자는 AI Agent가 참고할 수 있는 개인 하네스 파일을 직접 관리할 수 있습니다.
- 파일 생성, 수정, 이동, 삭제 기능을 통해 사용자별 개발 지침과 실행 환경 설정을 구성할 수 있습니다.
- 새 풀이 세션을 시작할 때 사용자 하네스가 세션 하네스로 복사되어, 과제별 Agent 작업 기준으로 활용됩니다.
- 과제 목록에서 난이도와 유형을 기준으로 실무형 개발 과제를 필터링할 수 있습니다.
- 상세 페이지에서 풀이 시작을 누르면 Web IDE 환경으로 진입하여 제공된 초기 코드 파일을 수정하며 과제를 해결할 수 있습니다.
- 실행 버튼을 통해 공개 테스트를 수행하고, 제출 버튼을 통해 숨김 테스트까지 포함한 최종 채점을 진행할 수 있습니다.
- 실행 결과는 성공 여부, 통과 테스트 수, 실패 메시지, 출력 로그 형태로 제공됩니다.
- 사용자는 채팅 모드에서 과제 해결 방향, 코드 구조, 오류 원인 등에 대해 AI에게 질문할 수 있습니다.
- 에이전트 모드에서는 AI Agent가 파일을 분석하고 수정 제안을 생성할 수 있습니다.
- Agent가 제안한 변경 사항은 사용자가 승인하거나 거절할 수 있어, 학습자의 판단 흐름을 유지하면서 도움을 받을 수 있습니다.
- Trace 화면에서는 AI Agent가 어떤 파일을 확인하고, 어떤 근거로 작업을 진행했는지 확인할 수 있습니다.
- 단순한 결과만 제공하는 것이 아니라, Agent의 분석 과정과 작업 흐름을 함께 보여줍니다.
- 사용자는 Trace를 통해 AI Agent가 어떤 도구와 LLM을 호출했는지, 어떤 파일을 수정했는지를 자세하게 확인할 수 있습니다.
- 과제 풀이가 종료되면 실행 이력과 제출 결과를 기반으로 학습 리포트를 확인할 수 있습니다.
- 테스트 통과율, 실패 원인, 코드 수정 흐름 등을 바탕으로 사용자의 풀이 과정을 분석합니다.
- 리포트를 통해 단순 정답 여부를 넘어, 어떤 부분에서 막혔고 어떻게 개선할 수 있는지 확인할 수 있습니다.
- 사용자는 마이페이지에서 과제 풀이 이력을 기반으로 산출된 역량 지표를 확인할 수 있습니다.
- 개인 API Key를 등록하여 AI 기능을 사용할 수 있으며, 등록된 Key를 관리할 수 있습니다.
- API 키 등록 시 AES-256-GCM 알고리즘으로 키를 암호화하여 저장하고, 인증성과 무결성 검증을 함께 보장하도록 구현했습니다.
- 사용자의 제출 코드를 Docker 컨테이너 내부에서 격리 실행하도록 설계했습니다.
- runner-python:3.12, runner-java-spring:3.5.13 실행 이미지에서 처리하여 실행 환경 일관성과 서버 안정성을 확보했습니다.
- Caddy 로드밸런서를 통해 여러 Runner 인스턴스로 요청을 분산 처리했습니다.
- Prometheus, Grafana, cAdvisor, node-exporter를 연동하여 Runner 서버와 Docker 컨테이너의 실행 상태를 관찰할 수 있도록 구성했습니다.
- Runner 요청 수, 실행 시간, 대기 시간, 활성 실행 수, 컨테이너 CPU/메모리 사용량을 확인할 수 있어 운영 중 병목과 장애 원인을 빠르게 파악할 수 있습니다.
- Java/Spring 실행은 초기 구동 시간이 길기 때문에, runner-warm-java-* 컨테이너를 미리 준비해두는 Warm Container Pool 방식을 적용했습니다.
- 이를 통해 Java 제출 코드 실행 시 매번 새 환경을 완전히 준비하는 비용을 줄이고, 채점 응답 시간을 개선했습니다.
- 사용자의 코드 실행 요청을 즉시 Runner로 보내지 않고, RabbitMQ 메시지 큐에 작업으로 등록하도록 설계했습니다.
- 실행 요청은
QUEUED → RUNNING → COMPLETED / FAILED상태로 관리하여, 사용자가 현재 실행 대기 여부와 처리 결과를 확인할 수 있도록 구성했습니다. - Java, Python 실행 작업을 언어별 Queue와 Consumer로 분리하여 실행 환경별 처리 흐름을 독립적으로 관리할 수 있도록 했습니다.
- Consumer 동시 실행 수를 환경변수로 조절할 수 있게 구성하여, Runner 서버 처리 용량에 맞춰 큐 대기량과 실행 부하를 조절할 수 있도록 했습니다.
|
|
|
|
|
윤진원 |
신영옥 |
황효주 |
|
|
|
|
|
김민서 |
이상헌 |
성민제 |









