문제 제출

1. 사전 분석

1.1. 문제 제출 Flow

1.
Learning Activity Mutation
Activity Estimation Result 생성 (Insert)
SAI 업데이트
learningState
correctType
SAI 제출 이벤트 발행
BE StudyActivityInstanceCommand
통계 테이블(statistics) 데이터 업데이트
SAI / SMI 테이블에 다이렉트로 업데이트 X
Data StudyActivityInstanceUpdatedEvent
지식태그 자동판단, 대시보드 코멘트 등에서 활용 (학습 시간)
2.
SUI / SMI 진행률 Fetch
Query
studyModuleInstanceCompleteRate - 통계 테이블 조회
studyUnitInstanceCompleteRate - 통계 테이블 조회

1.2. 개선 방향

[SMI / SUI 진행률 우선 개선]

FE
RegularClassSidebar_CompleteRate 를 바로 Fetch 하지 않고 자체 계산 진행
BE
Consumer Lag 개선
batch consumer 적용
구현 옵션
Kafka batch library by Spring Boot
Kafka js batch 기능 구현
사내 라이브러리 고도화 및 테스트 필요
공통 (Optional)
Server Sent Event를 활용하여 BE → FE 이벤트 전파
SMI / SUI 진행률 최종 업데이트

2. 성능 측정

@고준호 계정 생성 스크립트를 이용하여 성능 측정 진행 예정
병렬로 스크립트 구동 가능 (다수의 학생이 문제를 제출하는 상황 재현 가능)