프로젝트 목록

팀 프로젝트 3 · 2024.12 ~ 2025.01 · 공개 페이지 프론트엔드 · 회원관리 백엔드 · 배포

MetaLearning

KDT 국비지원 + 온라인 강의 마켓플레이스 통합 플랫폼

개요

KDT(국민내일배움카드) 국비지원 교육과정과 온라인 강의 마켓플레이스를 하나로 통합한 LMS 플랫폼입니다. 수강생·강사·매니저·관리자 4개 역할로 권한을 분리하고, Spring Boot + Thymeleaf(공개 페이지)와 React SPA(대시보드)를 혼합 구조로 구현했습니다. 5인 팀 프로젝트로 4주간 진행했습니다.

메인 페이지

주요 기능

역할기능
수강생KDT 과정 목록·신청, 온라인 강의 구매(장바구니·결제·환불), S3 영상 수강, 출석 확인, 테스트 응시
강사커리큘럼·영상 등록, 강의 진행 현황 대시보드
매니저출석 관리, KDT 상담 목록, 게시판 관리
관리자KDT 과정·세션 등록, 테스트 출제·채점, IP 기반 출석 제어, 통계 대시보드, 회원 관리

국비지원 교육과정

서비스 아키텍처

Thymeleaf(공개 페이지)와 React SPA(대시보드)를 하나의 WAR로 묶은 혼합 모놀리식 구조입니다.

[사용자] ──HTTPS──> AWS EC2 (t3.small · 서울)
                    Nginx 리버스 프록시 · HTTPS
                          │
                          ▼
              Spring Boot ── Thymeleaf (공개 페이지)
                          └─ React SPA (대시보드, WAR에 빌드 포함)
                          │
                          ├─> MySQL
                          └─> AWS S3 (강의 영상)

CI/CD — main 브랜치 push → GitHub Actions (① npm ci && build(React) → ② bootWar 빌드 → Docker 이미지 → push) → GHCR → EC2 pull·재기동

DB 구조

ERD

담당 역할

팀 프로젝트 당시

프로젝트 이후 단독 개선

개발 일정

기간작업
12/23~12/29요구사항 분석, 프로젝트 셋팅
12/30~1/5회원관리, 국비 관리 구현
1/6~1/12강의 관리(온라인+국비), 결제 관리 구현
1/13~1/15시스템 통합·테스트, 배포, 발표 준비

트러블슈팅

스케줄러 ONGOING 버그 KDT 세션 상태를 주기적으로 업데이트하는 스케줄러(updateSessionsToOngoing)가 시작일이 미래인 세션까지 ONGOING으로 변경해 신청 버튼이 사라지는 문제가 있었습니다. 쿼리의 날짜 조건(start_date <= now())이 누락되어 있었고, 조건을 추가해 해결했습니다.

CI/CD React 빌드 누락 GitHub Actions 배포 후 React 대시보드가 404로 표시되는 문제가 있었습니다. CI 스크립트에 npm ci && npm run build 단계가 빠져 있어 빌드된 정적 파일이 WAR에 포함되지 않았습니다. Actions 워크플로우에 빌드 단계를 추가해 해결했습니다.

배운 점

회원관리 백엔드와 스케줄러를 다루며, 쿼리의 작은 조건 하나(start_date <= now())가 누락된 것만으로도 사용자에게 보이는 기능이 망가질 수 있다는 것을 경험했습니다. 또 CI 스크립트에서 React 빌드 단계가 빠져 배포가 깨진 일을 겪으며, 코드뿐 아니라 빌드·배포 파이프라인 전체를 이해하고 있어야 한다는 점을 배웠습니다.