대시보드

1. 부하 테스트 조건

vUser 250
테스트시간: 120초
상세 정보

2. 테스트 결과

1회차
2회차
3회차
인프라 모니터링

3. 부하 테스트 성능 개선 주요 후보

LearningResultTable
ClassIntegratedDashboardScreen
CDCNavigation
LearningHistoryTable
ClassIntegratedDashboardScatterPlotChart
ClassLearningHistoryTooltipCustomActivityContent
ClassIntegratedDashboardScreen_RecentLearningHistory

3.1. LearningResultTable

개선 필수 쿼리
GraphQL 쿼리
예시 Response
주요 내용
classCustomStudyModuleStats
getClassCustomStudyModuleLearningStats
SMI 별 통계 정보를 replicaStudyModuleId 기준으로 그룹화
FE / BE 양쪽다 최적화 필요
페이지네이션 누락
쿼리 뎊스 깊음
CCC 내 CSM 기준으로 모든 학생 정보들을 집계하여 연산 후 반환

3.2. ClassIntegratedDashboardScreen

개선 필수 쿼리
GraphQL
예시 Response
주요 내용
CustomCurriculumsServiceImpl@findCustomStudyModuleByCustomStudyUnitId
CSU → CSM 리졸브 필드
findByReplicaStudyUnitIdWithDeleted 데이터로더 적용 필요
LoadActivityEstimationsByActivitySnapshotIdUseCase
findActivityEstimations 데이터로더 적용 필요
getSubtitleFiles resolve 필드로 분리 필요
findLearningActivitiesOfCustomActivityByCriteria
현상황
CA의 Resolve Field (learningActivities)
studentIds를 인풋으로 받음
SAI 조회 후, LA, Snapshot, SAI를 순회하며 조회 (데이터로더 적용완)
개선방향 TBD
FE
Eager 조회하는 쿼리 개선 필요
예시

3.3. CDCNavigation

개선 필수 쿼리
GraphQL
예시 Response
주요 내용
CustomCurriculumsServiceImpl@findCustomStudyUnitsByCustomStudyModuleId
CSM → CSUs 리졸브필드
데이터로더 적용 완료. 추가 개선 지점 보이지 않음
FE
ClassIntegratedDashboardScreen 에서 중복된 필드들을 조회하는 것으로 보임
쿼리 뎁스 깊음
페이지네이션 누락

3.4. LearningHistoryTable

GraphQL
예시 Response
주요 내용
StatisticServiceImpl.findStudentCustomCurriculumStats
CCC id를 바탕으로 SUI 레벨의 모든 통계정보 질의
유저마다 어플리케이션 레벨에서 매번 데이터 가공하여 Return 중
TBD
실시간성을 감소 시킬 수 있는 방법?
FE
어떤 상황에서 조회하는지 확인 필요. 학급 대시보드에서 필요한지??

3.5. ClassLearningHistoryTooltipCustomActivityContent

GraphQL
느린 지점
findLearningActivitiesOfCustomActivityByCriteria
실시간정규수업에서도 사용되는 코드
CA의 Resolve Field (learningActivities)
studentIds를 인풋으로 받음
SAI 조회 후, LA, Snapshot, SAI를 순회하며 조회 (데이터로더 적용완)
TBD. 확인 필요

3.6. ClassIntegratedDashboardScatterPlotChart

GraphQL
예시 Response
느린 지점
StatisticServiceImpl@findStudentCustomCurriculumStats
CCC Id 기준을 SUI 통계정보를 일괄 조회하여 유저별로 어플리케이션 레벨에서 연산
TBD
FE
용도 확인 필요

3.7. (기타) VerifyPermissions

각 페이지에서 매번 호출하는 것처럼 보이는데, 매번 호출이 필요한건지??

4. Slow Query

4.1. SAI id / type 조회

# Query_time: 7.550746 Lock_time: 0.000003 Rows_sent: 18 Rows_examined: 381
쿼리

4.2. RSA 조회

# Query_time: 6.992621 Lock_time: 0.000002 Rows_sent: 217 Rows_examined: 701
연관 API
ReplicaStudyActivitiesRepositoryImpl@findManyByReplicaStudyUnitIdDataLoader
CSU → CAs 리졸브 필드
쿼리 플랜
쿼리

4.3. SMI 통계 목록 조회

# Query_time: 9.365656 Lock_time: 0.000002 Rows_sent: 1116 Rows_examined: 2294
연관 API
StatisticRepositoryImpl@findStudyModuleInstanceStatisticsByCsmIds
ClassCustomStudyModuleStat
학급의 수업(CSM) 통계 정보
CC → classStatistics 리졸브 필드
쿼리 플랜
쿼리

4.4. SUI 목록 조회

# Query_time: 8.233588 Lock_time: 0.000003 Rows_sent: 3078 Rows_examined: 3319
연관 API
StatisticRepositoryImpl@findSuiStatsByCccId
classStudentCustomCurriculumStats
학생별 학습 기록 조회
쿼리 플랜
쿼리