1. 부하 테스트 조건
•
vUser: 500
•
테스트시간: 120초
상세 정보
2. 테스트 결과
1회차
2회차
3회차
인프라 모니터링
3. 부하 테스트 성능 개선 주요 후보
RegularClassCDCAccordionsContainer
RegularClassDetailScreen_CustomStudyActivity
SyncStudyViewTypeHandler_GroupStudyModuleInstances
RegularClassDetailLayout
updateLastLearningHistoryForBlock
UseMe
RegularClassCSUExpansionPanelContainer
3.1. RegularClassCDCAccordionsContainer
개선 필수 쿼리
•
GraphQL
예시 Response
•
주요 내용
◦
정규수업목록에서 호출. FE에서 깊은 뎁스로 Eager Loading 하여 데이터 조회.
◦
FE 개선 필요
◦
StatisticServiceImpl.findStudyModuleInstanceStatisticBySmiId
▪
데이터 로더 연동 필요 (마이너 개선)
▪
innerJoinAndSelect('smis.studyModuleInstance', 'smi') 필요한지 체크 필요
3.2. SyncStudyViewTypeHandler_GroupStudyModuleInstances
개선 권장 쿼리
수업동기화 납치에 사용
•
GraphQL
예시 Response
•
주요 내용
◦
CustomCurriculumsServiceImpl.findCustomCurriculumsByGroupId
▪
Group → customCurriculums 리졸브 필드
▪
데이터 로더 연동 필요
◦
CustomCurriculumsServiceImpl.findManyStudyModuleInstancesByStudyModuleInstanceCriteria
▪
CSM → SMIs 리졸브 필드
▪
데이터 로더 연동 필요
◦
FE
▪
정규 수업 목록 에서 호출중. 어떠한 용도로 사용중인지 확인 필요
▪
SMIs 레벨까지 eager 하게 조회 필요한지?
▪
groupId 하나를 찾기 위해 쿼리를 사용하는 것으로 보이는데 GraphQL 최적화 방식 논의 필요
3.3. RegularClassDetailScreen_CustomStudyActivity
개선 권장 쿼리
•
GraphQL
•
주요 내용
◦
CustomCurriculumsServiceImpl.findCustomStudyUnitByCustomStudyActivityId
▪
CA → CSU 리졸브 필드
▪
데이터 로더 없음
◦
CustomCurriculumsServiceImpl.findManyStudyUnitInstancesByStudyUnitInstanceCriteria
▪
CSU → SUIs 리졸브 필드
▪
데이터 로더 없음
◦
FE 용도 확인 필요
3.4. RegularClassCSUExpansionPanelContainer
개선 권장 쿼리
좌측 사이드 바 수업 목록 조회 시 호출
•
GraphQL
예시 Response
•
주요 내용
◦
LoadLearningActivitiesByStudyUnitInstanceIdUseCase
▪
SUI → LAs 리졸브 필드
◦
FE
▪
LA 까지 Eager 조회 필요한지?
3.5. RegularClassDetailLayout
•
GraphQL
•
주요 내용
◦
LoadLearningActivitiesByStudyUnitInstanceIdUseCase
▪
SUI → LAs 리졸브 필드
◦
FE
▪
쿼리 뎁스가 깊음. eager 조회 확인 필요
3.6. updateLastLearningHistoryForBlock
•
GraphQL
•
주요 내용
◦
FE 쿼리 방식 논의 필요
▪
LA → SUI 바로 조회 불가능한지?
◦
CustomCurriculumsServiceImpl.findManyStudyUnitInstancesByStudyUnitInstanceCriteria
▪
CSU → SUIs 리졸브 필드
◦
LoadCustomActivityByLearningActivityIdUseCase
▪
LA → CA 리졸브 필드
4. Slow Query
4.1. CSM(RSM) 목록 조회
개선 필수 쿼리
•
# Query_time: 7.304144 Lock_time: 0.000006 Rows_sent: 734 Rows_examined: 1709
•
연관 API
◦
FE에서 CC - CA까지의 모든 데이터를 조회하여 수업 목록 이동을 판단중
▪
CustomCurriculumTeachingSidebar
◦
CC → CSMs
◦
ReplicaStudyModulesRepositoryImpl@findCustomStudyModulesByCustomCurriculumIdAndFilters
쿼리 플랜
쿼리
4.2. CCC 조회
•
# Query_time: 8.740880 Lock_time: 0.000002 Rows_sent: 1 Rows_examined: 55
•
연관 API
◦
CustomCurriculumsRepositoryImpl@findManyMainByGroupId
쿼리 플랜
쿼리
4.3. SAI id / type 조회
•
# Query_time: 7.090671 Lock_time: 0.000002 Rows_sent: 13 Rows_examined: 276
•
연관 API
◦
CSM → firstIntegratedActivity
▪
학습하기 최초 진입 시, 첫번째 학습 위치로 이동할 때 사용
◦
StudyActivityInstancesRepository@findFirstStudyActivityInstanceIdByCustomStudyModuleId
쿼리 플랜
쿼리
4.4. app session log 생성
•
# Query_time: 15.104511 Lock_time: 0.000002 Rows_sent: 0 Rows_examined: 0
•
연관 API
◦
POST /app-session
◦
AppSessionsController
Query