실시간 정규 수업

1. 부하 테스트 조건

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

2. 테스트 결과

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

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

BlockStudyActivityStudentListDrawerBodyCustomActivity
StudentStatistics
CustomCurriculumTeachingFirstClassRedirect
ClassMonitorDataPolling
CustomCurriculumTeachingSidebar

3.1. CustomCurriculumTeachingFirstClassRedirect

실시간 정규 수업 화면 최초 진입시 호출.
수업 모니터링에서 빈화면일때 리다이렉트 되면서 호출되는데, 정상 케이스에서는 호출되지 않음
GraphQL

3.1. CustomCurriculumTeachingSidebar

개선 필수 쿼리
데이터독
CustomCurriculumsFacade@findFirstIntegratedActivityIdByCustomStudyModuleId
현상황
CSM → firstIntegratedActivity (ResolveField)
CSM 마다 하위 쿼리가 돌면서 group user 조회 중
이후, CSM id 기준 가장 빠른 SAI id 조회
가장빠른 studentId를 FE에서 받는 방법은 없을지???
LoadCustomActivitiesByCsuIdUseCase
추가 개선 지점 보이지 않음. 데이터 로더 연동 완료

3.2. BlockStudyActivityStudentListDrawerBodyCustomActivity

개선 필수 쿼리
우측 사이드바 - 학생목록
GraphQL
예시 Response
주요 내용
LoadActivityEstimationsByActivitySnapshotIdUseCase
LoadActivityEstimationResultsByLearningActivityIdUseCase
추가 개선 지점 보이지 않음. 데이터 로더 연동 완료
FE에서 Lazy Loading 할 수 있는 부분 없는지?
예) userGroups 배열 / activityEstimations 배열

3.3. CustomCurriculumTeachingCATreeItemContainer

개선 필수 쿼리
좌측 사이드바 - 수업목록
GraphQL Query
예시 Response
주요 내용
findLearningActivitiesOfCustomActivityByCriteria
현상황
CA의 Resolve Field (learningActivities)
studentIds를 인풋으로 받음
SAI 조회 후, LA, Snapshot, SAI를 순회하며 조회 (데이터로더 적용완)
개선 방향 TBD
FE
학생들이 SUIs / LAs 들을 모두 다 조회 필요한지??

3.4. StudentStatistics

GraphQL
예시 Response
주요 내용
findLearningActivitiesOfCustomActivityByCriteria
현상황
CA의 Resolve Field (learningActivities)
studentIds를 인풋으로 받음
SAI 조회 후, LA, Snapshot, SAI를 순회하며 조회 (데이터로더 적용완)
개선 방향 TBD
LoadActivityByIdUseCase
개선 지점이 딱히 보이지 않음. 데이터 로더 적용 되어 있음
FE
우측 사이드바 - 학생목록의 학생 제출 답 / 학습 상태 등을 조회하는 operation으로 보임
BlockStudyActivityStudentListDrawerBodyCustomActivity 와 중복된 데이터 조회 아닌지??

3.5. GroupHeader

주요 내용
GraphQL
예시 Response
주요 내용
CustomCurriculumsServiceImpl.findCustomCurriculumsByGroupId
Group → customCurriculums 리졸브 필드
데이터 로더 연동 X
과도한 데이터 조회. FE 개선 가능 여부 확인 필요

4. Slow Query

1000ms 이상 슬로우 쿼리는 확인 되지 않음.
두드러지게 나타나는 상위 쿼리 2개로 분석

4.1. Group User 쿼리

연관 API
CSM → firstIntegratedActivity (ResolveField)
findFirstByCustomStudyModuleId
쿼리 플랜
쿼리

4.2. SAI 쿼리

연관 API
CSM → firstIntegratedActivity
findFirstStudyActivityInstanceIdByCustomStudyModuleId
쿼리