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
쿼리