- 기간: 2024.07.25 ~ 2024.10.04
- 사용 도구: Spring Boot, Spring Security, Spring Batch, node.js, MySQL, Redis, EC2, S3
- FE깃헙 리파지토리: FE 깃헙 리파지토리 링크
- BE깃헙 리파지토리: BE 깃헙 리파지토리 링크
- 미디어중계서버 리파지토리: BE 깃헙 리파지토리 링크
본 프로젝트는 오프라인 교육의 실시간 소통 장점과 온라인 플랫폼의 접근성을 결합
한 라이브 강의 플랫폼을 개발하는 것을 목표로 한다. 또한, WebRTC 기반의 미디어 전
송 최적화와 클라우드 인프라를 도입하여 확장성을 개선하고, 동시 접속자가 많은 상
황에서도 안정적인 스트리밍 환경을 제공한다. 이러한 방식으로 학습자와 강사 간의
상호작용을 극대화하고, 플랫폼의 신뢰성과 사용자 경험을 향상시키고자 한다.
궁극적으로, 본 프로젝트는 학습자들이 언제 어디서나 원활한 환경에서 교육에 집중
할 수 있도록 하여 더 나은 학습 경험을 제공하는 것을 지향한다.
- Spring Boot 3.3.2
- Spring Security 6.2.1
- Spring Batch 5.1.0
- React.js 18.3.1
- TypeScript 4.9.5
-
강의 탐색 및 수강 신청
사용자들은 플랫폼 메인 페이지에서 다양한 개설된 강의를 둘러볼 수 있다. 강의 소개 페이지에서는 강의 내용, 커리큘럼, 강사 정보 등을 자세히 확인할 수 있고, 관심 있는 강의를 발견하면 “수강 신청” 버튼을 통해 간편하게 등록할 수 있다.
-
라이브 스트리밍 강의
라이브 강의에서는 강사가 여러 수강생에게 웹캠 영상, 화면 공유 영상, 오디오를 실시간으로 전송할 수 있다.
-
실시간 채팅
라이브 강의 중 강사와 수강생 간의 실시간 소통을 위해 채팅 기능을 도입하였다. 이를 위해 WebSocket을 사용하였다.
-
인기강의 순위 제공
강의 순위 결정 과정은 매일 오전 2시에 일괄적으로 수행되도록 설계되었다. 대용량 데이터의 효율적인 처리를 위해 Spring Batch를 활용하였다.
- Mediasoup v3 requirements
- Node.js >= v8.6
- Browserify
The server app runs on any supported platform by Mediasoup. The client app runs on a single browser tab.
# create and modify the configuration
# make sure you set the proper IP for mediasoup.webRtcTransport.listenIps
cp config.example.js config.js
nano config.js
# install dependencies and build mediasoup
npm install
# create the client bundle and start the server app
npm start
-
설명: https://alnova2.tistory.com/1291 [몽상가:티스토리]
$cp config.example.js config.js
$vi config.js (이 부분에서 ssl 패스, 포트 등을 설정해 준다)
$npm install
$npm start
- browserify 설치
sudo npm install -g browserify
- 인증서 적용
openssl req -newkey rsa:2048 -nodes -keyout server.key -x509 -days 365 -out server.crt
cat server.crt server.key > server.pem
sudo mkdir -p /usr/local/etc/ssl
sudo cp server.key /usr/local/etc/ssl/server.key
sudo cp server.crt /usr/local/etc/ssl/server.crt
sudo chmod 644 /usr/local/etc/ssl/server.key
sudo chmod 644 /usr/local/etc/ssl/server.crt
- config파일 변경
sslCrt: '/usr/local/etc/ssl/server.crt',
sslKey: '/usr/local/etc/ssl/server.key',
Licensed under the MIT License, Copyright © 2024-present Nemo