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 리졸브필드
▪
데이터로더 적용 완료. 추가 개선 지점 보이지 않음
◦
LoadCustomActivitiesByCsuIdUseCase
◦
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
▪
학생별 학습 기록 조회
쿼리 플랜
쿼리