Skip to content

20K 이상의 트래픽에도 안정적인 수강 신청 플랫폼 | 교수님 티켓팅(백엔드)

Notifications You must be signed in to change notification settings

team-11-challenge/back-end

Repository files navigation

👨🏻‍🏫 01 | 프로젝트 소개 [교수님 티켓팅]

교수님 티켓팅_배너-001

🏫 20K 이상의 트래픽에도 안정적인 수강 신청 플랫폼

- 빠르고 정확한 강의 조회 서비스
- 원하는 강의를 신속하게 신청할 수 있는 장바구니 서비스
- 대용량 트래픽에도 안정적으로 동시성 제어를 하는 수강 신청 서비스
- DB 과부하와 UX를 고려한 접속자 대기열 서비스
  • 원하는 강의를 조회해볼 수 있습니다.
  • 원하는 강의를 미리 장바구니에 담아둘 수 있습니다.
  • 장바구니에 담아둔 강의를 수강 신청과 취소를 할 수 있습니다.
  • 장바구니에 담아두지 않은 경우, 강의 조회 후 수강 신청할 수 있습니다.
  • 수강 신청을 취소할 수 있습니다.
  • 신청 시 대기열 기능을 통해 나의 순서를 알 수 있습니다.

🎥 발표영상

🛒 02 | 프로젝트 목표

ezgif com-video-to-gif (12)

1️⃣ 데이터 수집 및 전처리

  • 데이터 수집
    • 실제 대학의 허락을 받고 1만 건 이상의 강의 데이터 확보
    • 학생 및 코드 더미 데이터 생성
  • 데이터 전처리
    • 강의 csv 파일에서 대학, 학과, 전공, 교과목, 교수 데이터 전처리
    • 불규칙한 시간표 데이터 전처리

2️⃣ 검색 성능 개선을 통한 빠른 검색 및 정확도 높은 검색 제공

  • 검색에 대한 빠른 결과 제공
  • 다양한 필터에 대한 정확한 검색 결과 제공

3️⃣ 4000명 이상 접속자 동시성 제어

  • 비관적 락을 통한 동시성 제어
  • 분산 서버 환경에서 스케줄 락을 통한 이벤트 중복 수행 방지

4️⃣ 20K 이상의 트래픽에도 안정적인 서비스 제공

  • 로드밸런싱 및 오토스케일링
  • 접속자 대기열 기능을 통한 대기순번 및 예상시간 제공

⚙️ 03 | 아키텍쳐

서비스 아키텍쳐

서비스아키텍처

ERD

erd

API 명세서 (swagger)

REST API Reference

04 | 성능 개선

🎯 05 | 트러블 슈팅

레벨별 성능테스트 결과 보고서

🛠️ 06 | 기술 스택

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

기술적 의사 결정

👨‍👩‍👧‍👦 07 | 팀원

이름 담당 역할 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

About

20K 이상의 트래픽에도 안정적인 수강 신청 플랫폼 | 교수님 티켓팅(백엔드)

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •