본문으로 건너뛰기

커뮤니티

개요​

기수(Cohort) 기반으로 사용자를 모집하고, 참가 완료 시 카카오 오픈채팅 링크와 알림톡을 발송하는 기능입니다.


기수(Cohort) 구조​

필드설명
name기수 이름
capacity최대 정원
currentCount현재 참가 인원
openChatUrl카카오 오픈채팅 URL
expiredAt모집 마감 시각

참가 흐름​

GET /api/community/cohorts/current ← 현재 모집 중인 기수 조회
↓
POST /api/community/cohorts/{id}/join
↓
비관적 락(PESSIMISTIC_WRITE)으로 기수 행 잠금
↓
정원 초과 여부 확인 (isFull())
↓ 정원 미달
currentCount++ 후 저장
↓
카카오 알림톡 발송 (오픈채팅 URL 포함)

동시성 제어​

여러 사용자가 동시에 마지막 자리를 두고 참가 요청을 보낼 때 정원을 초과하지 않도록 **비관적 락(Pessimistic Lock)**을 사용합니다.

기수 행을 조회할 때 DB 수준의 쓰기 잠금을 획득하고, 정원 초과 여부 확인과 인원 증가를 하나의 원자적 흐름으로 처리합니다. 이를 통해 경쟁 조건(race condition)을 방지합니다.


알림 발송​

카카오 비즈메시지(알림톡) API를 통해 참가 확인 메시지와 오픈채팅 링크를 사용자 전화번호로 발송합니다. 템플릿 코드와 변수 치환 방식을 사용합니다.