Skip to content

wonseokyoon/Course-Catch

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Course-Catch

image

프로젝트 소개

개요

  • 주제: 수강신청 서비스
  • 설명: 강의를 신청할 수 있는 실시간 기반 예매 시스템
  • 목표: 트래픽 폭주에도 안정적으로 작동하고, 공정한 예매 및 실시간 대기열 기능 제공

기획 의도

  • 강의 신청 오픈 시 동시 접속자 폭주 문제 해결
  • 대기열, 실시간 여석, 알림 등 실제 환경과 유사한 서비스 구현

특징

  • 안정적인 예매 시스템이 필요
  • 서버 과부하, 예약 시스템 불만족 등 민원 최소화 목표
  • 신청 데이터 분석 및 실시간 현황 모니터링 요구

🔑 핵심 기능

image

개발 기간

2025.07.16 ~ 2025.8.17 (약 5주)

팀 구성 및 역할

1인 개발

기능

1차 스프린트 - 기본 기능

  • 인증/인가: 이메일 로그인, 회원가입
  • 강의: 등록, 조회, 삭제, 수정
  • 수강 신청: 신청, 취소, 조회, 여석제한
  • CICD: 자동화 파이프라인 환경 구축

2차 스프린트 - 주요 기능

  • 인증/인가: SSO 로그인, 이메일 인증, 회원 (소프트)탈퇴, 1년뒤 하드 삭제, 계정 복구, 회원 정보 수정, 비밀번호 DB에 암호화하여 저장, 토큰 정보 Redis에 저장
  • 강의: 검색, 신청 시간 제한, 대기열 시스템
  • 신청: 신청 목록 페이징, 동시성 제어, 중복 신청 방지

3차 스프린트 - 고도화

  • 모니터링
  • 부하테스트
  • 성능개선
  • 결제: 결제와 취소
  • 알림: 수강 신청 상태 알림

ERD

image

API 명세서

image

기술 스택

image

CI/CD

image

검증 체인 활성화

image

배포 자동화

image

개발 환경과 운영 환경 분리

트러블 슈팅

트러블 슈팅

기술 선택

동시성 제어

image

대기열 시스템

image

신청 알림

image

결제

HTTP Client: RestTemplate vs RestClient

  • 동기 vs 비동기
  • 스레드 병목현상 감안하여 비동기 방식 사용
  • Kafka를 사용하여 외부 메시지 발행을 안정적으로 처리

Link

Notion

About

수강신청 서비스 "콜캐치(Course-Catch)"

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages