[SSA] 수강 로직에 대한 간단한 고민 ..

2025. 9. 9. 14:11·SSA/Back

기본적으로 수강신청 과정은 다음과 같습니다.

 

1. 학생이 특정 강의 수강신청 시 수강신청 대기 생성

2. 강사가 수강신청 승낙 시 해당 강의에 대한 수강신청 대기 상태를 승낙 상태로 변경

3. 승낙 상태로 변경된 수강신청 대기에 대한 수강등록 생성

 

그림으로 보면  다음과  같습니다.

 

학생 A가 강사 B의 강의를 수강신청 했을 때, 다음과 같은 추가 상황이 발생할 수 있습니다.

 

1. 학생이 수강을 신청한 내역이 강사에 의해 승낙되었을 경우

  • 학생이 해당 강의를 수강
  • 학생이 해당 강의 수강을 취소

2. 학생이 수강을 신청한 내역이 강사에 의해 거절되었을 경우

  • 학생이 해당 강의를 재신청

3. 학생이 수강을 신청한 내역을 취소하고자 할 경우

  • 미승낙 수강신청 요청을 취소

 

이때 일반적인 강의에 대한 여러 신청, 취소, 수락, 거절 등 각각의 상황에 대해서는 학생이 요청을 하면 대기 중인 신청의 상태로 저장하고 이후 해당 강의의 강사가 대기 중인 요청을 확인하고 적절한 작업을 할 수 있어서 동시성과 관련한 이슈는 없습니다.

 

# 고민 사항 ..!

그러나, "현우진의 선착순 100명 특별 강의 개설 !!"과 같은 상황에서는 '선착순'이라는 특수한 상황 때문에 수강신청 요청을 대기 중인 것으로 고려하지 않고 바로 수락되도록 만들어야 합니다. 이때 싱글 쓰레드로 동작하는 단일 서버에서는 문제가 없겠지만 단일 서버에서도 멀티 쓰레드로 동작하거나 다중 서버(싱글 쓰레드, 멀티 쓰레드 전부 문제)에서는 동시성 이슈가 발생할 수 있습니다.

 

이러한 문제는 특강 수강정원 동시성 문제 해결에서 조금 더 자세히 다뤄 보도록 하겠습니다.

 

 

 

 

 

'SSA > Back' 카테고리의 다른 글

[SSA] Redis의 특징을 활용한 동시성 제어 (Redis 분산 락 아님)  (0) 2025.09.13
[SSA] 특강 개설 시 선착순 동시성 이슈 해결  (2) 2025.09.10
[SSA] 락의 종류와 활용 가능한 상황  (0) 2025.09.09
[SSA] Kafka Consumer가 멱등성을 가질 수 있도록 설계  (0) 2025.09.09
[SSA] 수강 기능, 알림 기능을 이벤트 기반으로 분리  (0) 2025.09.09
'SSA/Back' 카테고리의 다른 글
  • [SSA] Redis의 특징을 활용한 동시성 제어 (Redis 분산 락 아님)
  • [SSA] 특강 개설 시 선착순 동시성 이슈 해결
  • [SSA] 락의 종류와 활용 가능한 상황
  • [SSA] Kafka Consumer가 멱등성을 가질 수 있도록 설계
하가네
하가네
  • 하가네
    하 렌
    하가네
  • 전체
    오늘
    어제
    • 분류 전체보기 (128) N
      • Computer Science (23)
        • 운영체제 (7)
        • 데이터통신 (6)
        • 자료구조 (4)
        • 논리회로 (0)
        • 확률 및 통계 (0)
        • 데이터베이스 (2)
        • AI소프트웨어 (3)
        • 컴퓨터네트워크 (1)
      • Design (5) N
        • OOP - 객체 지향 프로그래밍 (3) N
        • DDD - 도메인 주도 개발 (데이터베이스 주도 .. (0)
        • EDA - 이벤트 기반 아키텍처 (1)
        • MSA - 마이크로서비스 아키텍처 (0)
        • ADD - AI 주도 개발 (1)
      • Language (2)
        • Java (0)
        • TypeScript (2)
      • Framework (12)
        • Spring (9)
        • NestJS (3)
      • Engine (3)
        • Elasticsearch (1)
        • GraphQL + Apollo Federation (2)
      • Plugin - Extension (1)
        • VS Code (1)
        • IntelliJ (0)
      • Tips (2)
        • 터미널 명령어 (1)
        • 우분투 명령어 에러 (1)
      • SSA (26)
        • Front (1)
        • Back (23)
        • DB (1)
        • 기획 (1)
      • CNU SW 아카데미 (42)
        • 1주차 (5)
        • 2주차 (5)
        • 3주차 (2)
        • 4주차 (1)
        • 5주차 (3)
        • 6주차 (2)
        • 7주차 (0)
        • 8주차 (1)
        • 9주차 (14)
        • 10주차 (0)
        • 11주차 (1)
        • 12주차 (0)
        • 13주차 (2)
        • 14주차 (2)
        • 15주차(최종 프로젝트) (3)
        • 최종 프로젝트 이후 (1)
      • 모각코 (6)
        • 2023 동계 (6)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Husky
    ci/cd
    아키텍처
    ESLint
    개발자경험(DX)
    Typescript
    릴리스엔지니어링
    lint-staged
    DX(DeveloperExperience)
    프론트엔드/백엔드
    생산성
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.
하가네
[SSA] 수강 로직에 대한 간단한 고민 ..
상단으로

티스토리툴바