본문 바로가기
  • 컴공생의 공부 일기
  • 공부보단 일기에 가까운 것 같은
  • 블로그
Club|Project/이대솔브닥웹사이트 - 뀨엘 | Frontend(React,Next.js)

📊 뀨업 : 2차 릴리즈 준비 - 회의 9 : 이화랭킹 로직

by 정람지 2025. 3. 15.


📊 TODO

다음주 TODO

정은체
실제 데이터로 수식 테스트해보고 미세 조정 
프론트단 쿠키 생성 / 리프레시 로직 다시 만들기
페이지네이션 구현 
랭킹 수식 구현 순위 api 연결 ( 동시성 문제 처리 

히언
VPC 돈나가는 이유 알아내기
 랭킹 db 만들기
다이너모 db 구축

소은
랭킹 수식 구현 순위 api 만들기

📊 ewhaRanking

 

랭킹 리프레시 

- 매 정각 (매일) 전체 갱신

- 리프레시 버튼 : 리프레시 누른 사람 정보만 갱신


시간복잡도 개선

- 리프레시 갱신 로직

- 수식 계산 매번? : 랭킹 db 만들기

- db 쿼리 횟수 : 이화인 * 문제수 ㄴㄴ -> 이화인 +1 방식?


DB 구조 ( sql / nosql )

기존 sql 추가

랭킹 테이블 스키마(MySQL)

  • 핸들(기본키), 점수
다이너모 테이블 스키마 

 

  • 파티션 두개로 설정
  • Student 파티션: 각 학생 당 푼 문제들 번호 저장
  • Problem 파티션: 각 문제별 푼 사람 수 저장
Student 파티션 아이템 예시 { Type: Student, Handle: celina324 SolvedProblems: { NS: [1231, 2313, 2333, ...] } } Problem 파티션 아이템 예시 { Type: Problem, Number: 10264, SolvedStudents: 222 }

 


리프레시 연타 문제

Semaphore

여러 프로세스(또는 스레드)가 공유 자원에 접근할 수 있는 최대 동시 실행 개수를 제어하는 기법

 

1. 서버 측 (Backend)

 요청이 일정 횟수를 초과하면 차단 (Rate Limiting)

 Redis 또는 DB를 활용한 세마포어 관리

 

2. 클라이언트 측 (Frontend)

 버튼 또는 특정 액션이 연속해서 실행되지 않도록 막음

 localStorage 또는 sessionStorage 활용