Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
Tags
- java map 출력
- java기본자료형
- java set 출력
- 항해99후기
- java list 저장
- sqld자격증합격
- 프로그래머스
- javaJVM
- 노베이스부트캠프
- java알고리즘
- 항해15기
- javaJRE
- 컴파일
- 프로그래머스제일작은수
- java set 저장
- java 자료구조 활용
- java map 저장
- 코딩부트캠프후기
- java map
- java최솟값구하기
- 격파르타합격후기
- java참조자료형
- 비전공자sqld
- java list 출력
- 격파르타후기
- java알고리즘문제풀이
- 작은수제거하기
- 격파르타비전공자
- 격파르타장점
- 인터프린터언어
Archives
- Today
- Total
코딩과 결혼합니다
[Game_Crew] 성능 테스트 : 저장된 더미데이터 활용하기 본문
728x90
기존에는
1. A 유저가 B유저 평가
2. B유저가 이전에 받은 평가 기록이 있는지
없으면 - record of rating 과 total rating에 받은 점수를 그대로 각각 저장
있으면 - record of rating에 평가기록 저장
+ 이전의 최신 기록들을 최대 10개까지 합산, 평균을 낸 다음 total rating 업데이트
이러한 과정을 거쳤었다.
하지만 성능 테스트를 하면서는 record of rating에만 더미데이터를 넣어놨기 때문에
total rating 테이블을 비어있는 상태이다.
이 저장되어있는 데이터들을 하나씩 읽어 계산한 뒤에 total rating에 저장 및 업데이트를 하도록 할것이다.
public void registrationOfRatings(UserRatingRequestDto userRatingRequestDto, User evaluator, Long evaluated_user) {
int manner = userRatingRequestDto.getManner();
//생략
Long evaluatorId =evaluator.getUserId();
Optional<TotalRating> checkRating = totalRatingRepository.findByUserId(evaluated_user);
LocalDateTime now = LocalDateTime.now();
if (checkRating.isEmpty()){
//평가 받은 내용을 각각의 테이블에 그대로 저장
} else if (checkRating.isPresent()) {
//record of rating에 평가기록 저장
+ 이전의 최신 기록들을 최대 10개까지 합산, 평균을 낸 다음 total rating 업데이트
}
}
이 메서드를 어플리케이션이 실행될때마다 record of rating의 테이블을 하나씩 읽어서 동작하도록 한다.
@PostConstruct 가 이를 가능하게 해준다.
@PostConstruct
@Scheduled(fixedRate = 3600000) // 1시간마다 실행
public void populateTotalRatingWithRecordOfRatings() {
List<RecordOfRatings> allRatings = recordOfRatingsRepository.findAll();
for (RecordOfRatings rating : allRatings) {
UserRatingRequestDto requestDto = new UserRatingRequestDto(rating.getManner(), rating.getParticipation(), rating.getGamingSkill(), rating.getEnjoyable(), rating.getSociability());
User evaluator = userRepository.findById(rating.getEvaluator()).orElseThrow(() -> new IllegalArgumentException("Evaluator Not Found")); // 평가자 정보를 가져옵니다.
Long evaluated_user = rating.getUserId();
registrationOfRatings(requestDto, evaluator, evaluated_user);
}
}
더하여 스케쥴러를 사용하여 어플리케이션이 실행되는 동안에 1시간 마다 새로운 데이터를 확인하고 처리하는 과정을 자동으로 실행한다.

어플리케이션을 실행하고 터미널을 확인해보니 열심히 메서드를 수행중이다.

그리고 이렇게 모든 user의 총 평점이 자동으로 계산되어 완전히 업데이트 되었다.
API 성능 테스트를 할 준비가 끝났다! 다음 글에서는 본격적으로 성능테스트 툴을 사용하여 현재의 서비스 성능을 확인해보고 목표를 정하여 더 나은 서비스를 위하여 개선해보고자 한다.
'코딩과 매일매일♥ > Game_Crew' 카테고리의 다른 글
| [Game-Crew] 트러블 슈팅 : 로컬에 Embedded Redis 적용(Chche, Redis) (0) | 2024.01.12 |
|---|---|
| [Game_Crew] 성능 테스트 : JMeter 사용법과 테스트 (0) | 2024.01.12 |
| [Game_Crew] 성능 테스트 : 툴 선정하기, 설치 (0) | 2023.12.28 |
| [Game_Crew] 성능 테스트 : Java Faker 를 사용하여 더미데이터 생성하기 (0) | 2023.12.27 |
| [Game_Crew] 성능 테스트 : Mockaroo 를 사용하여 더미데이터 생성하기 (2) | 2023.12.22 |