프로젝트 목록

팀 프로젝트 2 · 2024.11 ~ 2024.12 · 메인·관리자 페이지 제작 · 배포

KosLearn

강의 구매·수강·관리 기능을 갖춘 LMS 플랫폼

개요

수강생·강사·관리자 3개 역할로 구성된 온라인 강의 판매 플랫폼입니다. 강의 검색부터 장바구니·결제, 수강까지 전 과정을 구현했으며, Spring Boot + MyBatis + Thymeleaf 스택으로 MVC 구조를 갖추고 Docker + GitHub Actions CI/CD로 AWS EC2에 배포·운영 중입니다.

메인 페이지

주요 기능

역할기능
수강생강의 검색·카테고리 필터, 장바구니, 결제, 수강 페이지, 리뷰
강사강의 등록(이미지·첨부자료 업로드), 강사 프로필 관리
관리자회원·강의·결제 내역 조회 및 관리, 공지사항 등록
공통회원가입/로그인, 이메일 인증 비밀번호 재설정, 커뮤니티 게시판

강의 상세 페이지

서비스 아키텍처

Spring Boot MVC 모놀리식 구조로, AWS EC2 한 대에서 Nginx 리버스 프록시 뒤에 운영됩니다.

[사용자] ──HTTPS──> AWS EC2 (t3.small · 서울)
                    Nginx 리버스 프록시 · HTTPS
                          │
                          ▼
                 Spring Boot (Thymeleaf MVC) ──> MySQL
                          │
                    업로드 파일 → Docker named volume ×6 (영속화)

CI/CD — main 브랜치 push → GitHub Actions (bootJar 빌드 → JRE 베이스 이미지에 JAR 복사 → push) → GHCR(ghcr.io/leewj12/koslearn) → EC2 pull·재기동

DB 구조

ERD

담당 역할

팀 프로젝트 당시

프로젝트 이후 단독 개선

개발 일정

기간작업
11/18~11/21요구사항 분석, 기획, DB 설계
11/22~11/28기능 구현 (수강생·강사·관리자)
11/29~12/01통합 테스트, 버그 수정, 발표 준비

트러블슈팅

CSS 경량화 — 디자인 시스템 도입 팀원마다 CSS를 각자 작성하다 보니 중복·충돌이 누적되어 7,003줄에 달했습니다. 전체를 common.css 기준으로 재설계해 변수·컴포넌트 클래스로 통합하고 2,763줄로 줄이면서 일관된 디자인을 확보했습니다.

Docker 파일 영속성 컨테이너 재시작 시 업로드 파일이 사라지는 문제가 있었습니다. 강의 이미지·첨부파일·프로필 이미지 등 6개 경로를 named volume으로 분리해 해결했습니다.

배운 점

팀 프로젝트가 끝난 뒤에도 혼자 CSS 정리·버그 29건 수정·CI/CD 구축까지 끌고 가며, '발표용으로 동작하는 코드'와 '실제로 배포되어 운영되는 서비스'는 다르다는 것을 체감했습니다. 특히 Spring Security 기반 인증·권한과 Docker 배포를 직접 다루면서, 만드는 것만큼 안정적으로 운영하는 것이 중요하다는 점을 배웠습니다.