프로젝트 목록으로
2026.01.02 ~ 01.07
장바구니 기능 기반 수강신청 웹 플랫폼
동시 수강신청에서 발생할 수 있는 정원 초과 문제를 MySQL 트랜잭션과 행 잠금으로 제어한 웹 플랫폼

01 FEATURES
주요 기능
강의 목록 조회와 상세 정보 확인
장바구니 담기와 삭제 흐름
트랜잭션 기반 일괄 수강신청 처리
신청 내역 조회와 취소 처리
학과와 시간대 기준 검색 및 필터링
02 PROCESS
문제와 해결
문제: 여러 사용자가 같은 강의를 동시에 신청할 때 정원 초과가 발생할 수 있었습니다. 단순히 현재 인원을 조회한 뒤 신청 수를 증가시키는 방식으로는 거의 동시에 들어온 요청을 구분하기 어려웠습니다. 해결: 수강신청 처리 흐름을 하나의 트랜잭션으로 묶고, 강의 행을 SELECT FOR UPDATE로 잠근 뒤 정원 확인과 신청 등록을 순서대로 처리했습니다. 장바구니에서 실제 신청으로 넘어가는 단계도 같은 처리 단위로 정리해 중간 실패가 생겨도 데이터가 어긋나지 않도록 했습니다. 배운 점: 동시성 문제는 화면 기능보다 데이터 처리 순서에서 먼저 설계해야 한다는 것을 배웠습니다. 특히 정원, 재고, 결제처럼 수량이 중요한 기능은 트랜잭션 범위와 잠금 기준을 명확히 잡는 것이 중요했습니다.
03 TAKEAWAYS
배운 점
동시 요청이 많은 기능에서는 트랜잭션 범위를 먼저 설계해야 한다는 점
정원, 재고처럼 수량이 중요한 데이터는 잠금 기준이 명확해야 한다는 점
장바구니와 신청 처럼 이어지는 흐름은 하나의 처리 단위로 바라봐야 한다는 점
04 IMAGES
이미지 기록
작업 화면과 과정 이미지를 순서대로 정리했습니다.