
Project · 01
장바구니 기능 기반 수강신청 웹 플랫폼
2026.01.02 ~ 01.07
role
내 역할 · 규모
role
내 역할 · 규모
- DB 테이블과 신청 처리 흐름 설계
- 장바구니에서 신청 확정까지 서버 로직 구현
- 트랜잭션과 행 잠금 기준 정리
기술 스택
PHPMySQLJavaScriptHTML/CSSCRUD
case flow
문제 · 해결 · 결과
case flow
문제 · 해결 · 결과
핵심 성과
- 정원 초과 방지를 목표로 신청 흐름을 정리
- 트랜잭션과 행 잠금 기준을 코드에 반영
- 장바구니·신청·취소 정합성을 설명 가능
문제
여러 사용자가 같은 강의를 거의 동시에 신청하면 정원 초과가 발생할 수 있었습니다.
해결
신청 처리를 하나의 트랜잭션으로 묶고, 강의 행 잠금 뒤 정원 확인과 등록을 순서대로 처리했습니다.
결과
정원, 장바구니, 신청 내역의 데이터 정합성을 설명할 수 있게 정리했습니다.
architecture
설계 / 문서
architecture
설계 / 문서
아키텍처
- PHP 요청 처리와 MySQL 데이터 계층 분리
- 강의 조회, 장바구니, 신청 확정 흐름 구성
ERD / DB
- 학생, 강의, 장바구니, 수강신청 내역 중심
- 강의 정원과 신청 인원을 핵심 기준으로 설계
API 명세
- 강의 조회, 장바구니 추가/삭제
- 수강신청 확정, 신청 내역 조회/취소 흐름 정리
debugging
트러블슈팅
debugging
트러블슈팅
정원 확인과 신청 등록을 분리하면 동시 요청에서 값이 어긋날 수 있어 신청 확정 단계에 잠금 위치를 맞췄습니다.
features
주요 기능
features
주요 기능
강의 목록/상세 조회
장바구니 담기와 삭제
트랜잭션 기반 수강신청 확정
신청 내역 조회와 취소
학과/시간대 검색
problem solving
문제 해결 과정
problem solving
문제 해결 과정
문제 상황
동시 신청 시 현재 인원 조회와 신청 등록 사이에서 정원 초과가 발생할 수 있었습니다.
해결 과정
신청 확정 흐름을 하나의 트랜잭션으로 묶고 강의 행을 잠근 뒤 정원 확인과 등록을 순서대로 처리했습니다.
배운 점
정원·재고처럼 수량이 중요한 기능은 화면보다 트랜잭션 범위와 잠금 기준을 먼저 설계해야 했습니다.
takeaways
프로젝트에서 배운 것
takeaways
프로젝트에서 배운 것
01
동시 요청 기능은 트랜잭션 범위를 먼저 잡아야 함
02
정원·재고 데이터는 잠금 기준이 명확해야 함
03
장바구니와 신청은 하나의 처리 단위로 봐야 함
documents
기획자료 / 첨부 문서
documents