TIL - 대회/랭킹 도메인 흐름 정리

2026. 5. 6. 17:15·내배캠

이번 최종 프로젝트의 전체적인 흐름을 적었습니다.

도메인과 엔티티를 분리해서 진행해서, 테이블을 기준으로 담당하는 기능들을 설명해 봤습니다.


먼저 대회 서비스에는 3개의 테이블이 있습니다.

  • p_competitions
    • 대회 서비스의 메인테이블로써, 전반적인 흐름을 관리한다.
      • 대회 생성 (최소 참가 인원수를 설정)
      • 대회 정보 수정
      • 대회 게시(대회의 isReadable 필드를 true로 변경 및 상태를 PUBLISHED로 변경)
      • 대회 참가 신청(대회의 현재 참가 인원수를 +1)
      • 대회 참가 취소(대회의 현재 참가 인원수를 -1)
      • 대회 시작(대회 상태를 ONGOING으로 변경)
      • 대회 취소(대회 진행 중(ONGOING)에서 CANCELED로 변경)
      • 대회 종료(대회 상태를 FINISHED로 변경)
  • p_competition_change_notices
    • 대회가 게시되었을 때(= 대회의 boolean 필드 isReadable이 true일 때) 대회의 정보가 변경되면 row를 생성한다.
      • 대회명, 대회 설명, 대회 기간이 변경될 때, 전후값(before/after)과 변경 이유(reason)를 테이블에 기록한다.
  • p_competition_participant
    • 유저가 대회에 참가신청을 넣을 시 생성되는 데이터다.
      (competition.register()을 호출해서, 현재 참가인원수를 +1 하고 난 후, competitionParticipantRepository.save(participant)를 호출한다.)

아래는 MVP 시연 때, scenario.http를 통해 보여드린 흐름입니다.

1~9번, 15번이 대회 서비스에서 담당하고 14, 16번은 랭킹에서 담당

그리고 랭킹 서비스에는 1개의 테이블로 구성됩니다.

  • p_rankings
    • 매매 체결 성공 시, 매매를 한 유저의 총자산을 전달받아 Redis Sorted Set에 저장
    • 대회 종료 시, 최종 순위를 DB에 저장 및 Redis에도 저장
    • 특정 대회의 순위 목록 조회
    • 내 순위 조회

지금까지 기능들은 어느 정도 완성을 했고, 아래는 아직 더 구현해야 할 것 들입니다.

  1. 헤더에서 유저정보 받아오기
    ( 생성/수정/삭제자 기록, 내 랭킹 조회 등 )
  2. 에러코드가 지금은 2개만 사용하는데 상황에 맞게 세분화할 예정
    - new BusinessException(ErrorCode.COMPETITION_NOT_FOUND))
    - new BusinessException(ErrorCode.INVALID_INPUT)
  3. 응답 body 객체로 감싸서 반환

아래는 지금까지 좀 신경 써서 구현한 부분입니다.

  • 대회 신청 시에 비관락 적용
  • DB저장 후, 내부 스프링 이벤트로 발행해서 AFTER_COMMIT시에 이벤트 발행

'내배캠' 카테고리의 다른 글

TIL - 프로젝트에 같은 모듈을 중복으로 import 하면?  (0) 2026.05.08
TIL - 코드리뷰 피드백 정리  (0) 2026.05.07
TIL - Redis 및 Kafka 사용 시 DB와의 분산트랜잭션 문제 해결하기  (0) 2026.05.02
전자기기로 이해하는 헥사고날 아키텍처  (1) 2026.04.30
TIL - 공통 모듈의 ErrorCode, 어떻게 관리해야 할까  (0) 2026.04.26
'내배캠' 카테고리의 다른 글
  • TIL - 프로젝트에 같은 모듈을 중복으로 import 하면?
  • TIL - 코드리뷰 피드백 정리
  • TIL - Redis 및 Kafka 사용 시 DB와의 분산트랜잭션 문제 해결하기
  • 전자기기로 이해하는 헥사고날 아키텍처
MvA
MvA
백엔드 개발자 김재현입니다. 주로 공부하면서 느낀점을 기록합니다.
  • MvA
    Man vs Ai
    MvA
  • 전체
    오늘
    어제
    • 분류 전체보기 (94)
      • Java (6)
      • Python (8)
        • 딥러닝 (1)
        • 머신러닝 (7)
      • JavaScript (2)
      • 내배캠 (60)
      • 개인 프로젝트 (11)
      • 책 후기 (5)
      • 기타 (1)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    내일배움캠프
    머신러닝
    Riot API
    TiL
    아키텍처
    배포
    딥러닝
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
MvA
TIL - 대회/랭킹 도메인 흐름 정리
상단으로

티스토리툴바