🏫 20K 이상의 트래픽에도 안정적인 수강 신청 플랫폼
- 빠르고 정확한 강의 조회 서비스
- 원하는 강의를 신속하게 신청할 수 있는 장바구니 서비스
- 대용량 트래픽에도 안정적으로 동시성 제어를 하는 수강 신청 서비스
- DB 과부하와 UX를 고려한 접속자 대기열 서비스
- 원하는 강의를 조회해볼 수 있습니다.
- 원하는 강의를 미리 장바구니에 담아둘 수 있습니다.
- 장바구니에 담아둔 강의를 수강 신청과 취소를 할 수 있습니다.
- 장바구니에 담아두지 않은 경우, 강의 조회 후 수강 신청할 수 있습니다.
- 수강 신청을 취소할 수 있습니다.
- 신청 시 대기열 기능을 통해 나의 순서를 알 수 있습니다.
→ 🎥 발표영상
1️⃣ 데이터 수집 및 전처리
- 데이터 수집
- 실제 대학의 허락을 받고 1만 건 이상의 강의 데이터 확보
- 학생 및 코드 더미 데이터 생성
- 데이터 전처리
- 강의 csv 파일에서 대학, 학과, 전공, 교과목, 교수 데이터 전처리
- 불규칙한 시간표 데이터 전처리
2️⃣ 검색 성능 개선을 통한 빠른 검색 및 정확도 높은 검색 제공
- 검색에 대한 빠른 결과 제공
- 다양한 필터에 대한 정확한 검색 결과 제공
3️⃣ 4000명 이상 접속자 동시성 제어
- 비관적 락을 통한 동시성 제어
- 분산 서버 환경에서 스케줄 락을 통한 이벤트 중복 수행 방지
4️⃣ 20K 이상의 트래픽에도 안정적인 서비스 제공
- 로드밸런싱 및 오토스케일링
- 접속자 대기열 기능을 통한 대기순번 및 예상시간 제공
Backend | Tech | Spring Boot Spring JPA Spring Security QueryDSL |
---|---|---|
Platform | Ubuntu | |
DB | AWS RDS(Mysql) AWS ElastiCache(Redis) | |
DevOps | AWS EC2 Docker | |
CI/CD | Github Actions | |
Test | JUnit5 Apache Jmeter | |
Monitoring | Grafana Prometheus(JVM, Node Exporter) | |
logging | logstash Amazon Open Search | |
Frontend | Tech | HTML CSS JavaScript Bootstrap |
CI/CD | Netlify | |
Protocol | HTTPS Websocket & STOMP |
이름 | 담당 역할 | Github |
---|---|---|
정명주(팀장) | - 강의 데이터 수집 및 전처리 후 DB 적재 - 수강신청, 조회, 삭제 기능 구현 - Redis와 STOMP를 활용한 접속자 대기열 기능 구현 - AWS EC2 환경 구축 - Docker를 활용한 인프라 구축 - CI/CD(Github Actions) 적용 - Junit5와 Mockito를 이용한 테스트 코드 작성 - JMeter를 활용한 부하 테스트 수행 - 전체 Front-End UI 디자인 수정 - 접속자 대기열 Front-End 구현 |
https://github.com/thing-zoo/ |
장미 | - 강의 데이터 수집 및 전처리 후 DB 적재 - 시간표 조회 기능 구현 - 학생 정보, 기간 조회 구현 - 사간표 조회 및 강의 조회 Query 최적화 - 수강신청 로직에 Redis Cache 도입 - Swagger 적용 - Front-End 시간표 작업 - Junit5와 Mockito를 이용한 테스트 코드 작성 - JMeter를 활용한 부하 테스트 수행 |
https://github.com/klettermi |
류이환 | - Spring Security, Jwt 기반의 로그인 기능 구현 - 장바구니 조회, 신청, 삭제 기능 구현 - 동시성 제어(Lock 비교, 테스트, 적용) - 단일 서버: 비관적 락 적용 - 분산 서버: 스케줄 락 적용 - logging 출력 최적화 및 중앙 집중형 시스템 구축 - Front-End 초기 설정 및 UI 작업, CI/CD 적용 - Junit5와 Mockito를 이용한 테스트 코드 작성 - JMeter를 활용한 부하 테스트 수행 - JMeter 전체 테스트 결과 분석 및 정리 |
https://github.com/YiHwanRyu |
김재익 | - Bakc-End 베이스 코드 구축 (디렉토리 구조, 공통 응답 클래스, 응답코드 ENUM 등) - 강의 조회 기능 구현 - AWS DNS 환경 구축 - AWS ALB, ASG 를 이용한 로드밸런싱, 오토스케일링 구현 - 모니터링 기능 구현 (Grafana, Prometheus) - 대기열 기능 개선 및 개편 - Front-End 초기 설정 및 UI 작업 - Junit5와 Mockito를 이용한 테스트 코드 작성 - JMeter를 활용한 부하 테스트 수행 |
https://github.com/Eulga |