[프로젝트] 바다서원
개인 라이브 강의 플랫폼
개인 라이브 강의 플랫폼 바다서원의 프로젝트 소개입니다.
[](mailto:ktb.nemo@gmail.com)
요약
- 기간: 2024.07.25 ~ 2024.10.04
- 사용 도구: Spring Boot, Spring Security, Spring Batch, node.js, MySQL, Redis, EC2, S3
- FE깃헙 리파지토리: FE 깃헙 리파지토리 링크
- BE깃헙 리파지토리: BE 깃헙 리파지토리 링크
- 미디어중계서버 리파지토리: BE 깃헙 리파지토리 링크
역할
- Spring Boot를 이용한 REST API 서버 구현
- 인기 강의 스코어를 연산하는 배치 시스템 개발
- 미디어 중계 서버 개발
성과
- Redis Cache 도입으로 API 응답 시간 837ms > 228ms (3.7배 개선)
- Presigned URL 도입으로 서버의 Network IO 50KB 기준 91% 절감
- Mediasoup 중계 서버 도입으로 동시 참여 유저 수 11.4배 증가
About the Project
본 프로젝트는 오프라인 교육의 실시간 소통 장점과 온라인 플랫폼의 접근성을 결합
한 라이브 강의 플랫폼을 개발하는 것을 목표로 한다. 또한, WebRTC 기반의 미디어 전
송 최적화와 클라우드 인프라를 도입하여 확장성을 개선하고, 동시 접속자가 많은 상
황에서도 안정적인 스트리밍 환경을 제공한다. 이러한 방식으로 학습자와 강사 간의
상호작용을 극대화하고, 플랫폼의 신뢰성과 사용자 경험을 향상시키고자 한다.
궁극적으로, 본 프로젝트는 학습자들이 언제 어디서나 원활한 환경에서 교육에 집중
할 수 있도록 하여 더 나은 학습 경험을 제공하는 것을 지향한다.
Technologies
- Database
- Backend
- Spring Boot 3.3.2
- Spring Security 6.2.1
- Spring Batch 5.1.0
- Media Server
- Frontend
- React.js 18.3.1
- TypeScript 4.9.5
Key Features
-
강의 탐색 및 수강 신청
사용자들은 플랫폼 메인 페이지에서 다양한 개설된 강의를 둘러볼 수 있다. 강의 소개 페이지에서는 강의 내용, 커리큘럼, 강사 정보 등을 자세히 확인할 수 있고, 관심 있는 강의를 발견하면 “수강 신청” 버튼을 통해 간편하게 등록할 수 있다.
-
라이브 스트리밍 강의
라이브 강의에서는 강사가 여러 수강생에게 웹캠 영상, 화면 공유 영상, 오디오를 실시간으로 전송할 수 있다.
-
실시간 채팅
라이브 강의 중 강사와 수강생 간의 실시간 소통을 위해 채팅 기능을 도입하였다. 이를 위해 WebSocket을 사용하였다.
-
인기강의 순위 제공
강의 순위 결정 과정은 매일 오전 2시에 일괄적으로 수행되도록 설계되었다. 대용량 데이터의 효율적인 처리를 위해 Spring Batch를 활용하였다.