장바구니 기능 기반 수강신청 웹 플랫폼
Project · 01

장바구니 기능 기반 수강신청 웹 플랫폼

2026.01.02 ~ 01.07

백엔드 기초 프로젝트

먼저 볼 핵심

정원 초과 방지

트랜잭션과 행 잠금으로 신청 흐름을 정리했습니다.

문제

여러 사용자가 같은 강의를 거의 동시에 신청하면 정원 초과가 발생할 수 있었습니다.

내 역할

  • DB 테이블과 신청 처리 흐름 설계
  • 장바구니에서 신청 확정까지 서버 로직 구현
  • 트랜잭션과 행 잠금 기준 정리

확인 결과

  • 정원 초과 방지를 목표로 신청 흐름을 정리
  • 트랜잭션과 행 잠금 기준을 코드에 반영
  • 장바구니·신청·취소 정합성을 설명 가능

role

내 역할 · 규모

  • DB 테이블과 신청 처리 흐름 설계
  • 장바구니에서 신청 확정까지 서버 로직 구현
  • 트랜잭션과 행 잠금 기준 정리

기술 스택

PHPMySQLJavaScriptHTML/CSSCRUD

case flow

문제 · 해결 · 결과

핵심 성과

  • 정원 초과 방지를 목표로 신청 흐름을 정리
  • 트랜잭션과 행 잠금 기준을 코드에 반영
  • 장바구니·신청·취소 정합성을 설명 가능

문제

여러 사용자가 같은 강의를 거의 동시에 신청하면 정원 초과가 발생할 수 있었습니다.

해결

신청 처리를 하나의 트랜잭션으로 묶고, 강의 행 잠금 뒤 정원 확인과 등록을 순서대로 처리했습니다.

결과

정원, 장바구니, 신청 내역의 데이터 정합성을 설명할 수 있게 정리했습니다.

architecture

설계 / 문서

아키텍처

  • PHP 요청 처리와 MySQL 데이터 계층 분리
  • 강의 조회, 장바구니, 신청 확정 흐름 구성

ERD / DB

  • 학생, 강의, 장바구니, 수강신청 내역 중심
  • 강의 정원과 신청 인원을 핵심 기준으로 설계

API 명세

  • 강의 조회, 장바구니 추가/삭제
  • 수강신청 확정, 신청 내역 조회/취소 흐름 정리
README / 문서 링크 보기

debugging

트러블슈팅

정원 확인과 신청 등록을 분리하면 동시 요청에서 값이 어긋날 수 있어 신청 확정 단계에 잠금 위치를 맞췄습니다.

features

주요 기능

강의 목록/상세 조회
장바구니 담기와 삭제
트랜잭션 기반 수강신청 확정
신청 내역 조회와 취소
학과/시간대 검색

problem solving

문제 해결 과정

문제 상황

동시 신청 시 현재 인원 조회와 신청 등록 사이에서 정원 초과가 발생할 수 있었습니다.

해결 과정

신청 확정 흐름을 하나의 트랜잭션으로 묶고 강의 행을 잠근 뒤 정원 확인과 등록을 순서대로 처리했습니다.

배운 점

정원·재고처럼 수량이 중요한 기능은 화면보다 트랜잭션 범위와 잠금 기준을 먼저 설계해야 했습니다.

takeaways

프로젝트에서 배운 것

01

동시 요청 기능은 트랜잭션 범위를 먼저 잡아야 함

02

정원·재고 데이터는 잠금 기준이 명확해야 함

03

장바구니와 신청은 하나의 처리 단위로 봐야 함

documents

기획자료 / 첨부 문서

프로젝트 기획자료

MVP 기능 정의서, 개발 일정표, 역할 분담표, 비용 계획, UI 체크리스트, Q&A를 프로젝트 상황에 맞게 정리한 공개용 엑셀 문서입니다.

스크린샷