매일 00시 모든 유저의 아바타에 대해
운동, 식사, 수면에 대한 목표치 달성 여부에 따른 체력 감소 처리와
일주일을 무사히 키운 아바타에 대해 레벨업 처리를
순서 대로 중단 없이 처리하기 위해 사용
Spring Batch의 장점 중 하나인 병렬 처리를 통해
각 chunk들을 MultiThread로 처리하여 배치 작업의 실행 속도 최적화
542ms vs 1s576ms -> 약 190%의 성능 개선
매일 5 ~ 10시에 기록된 식사는 아침,
11 ~ 16시에 기록된 식사는 점심,
17 ~ 21시에 기록된 식사는 저녁으로 분류하고
나머지 시간에는 식사 기록이 되지 않게 구현
이때, 식사하는 것을 사용자가 잊지 않도록 FCM을 이용하여 9, 15, 20시에 식사 알림을 전송
- 인증
- 로그인 시에 JWT Token 발급
- Access Token은 Client에 반환, Refresh Token은 Redis에 저장
- 인가
- JWT Interceptor로 인가가 필요한 요청의 Header로 전달된 JWT Token의 유효성 검사
@NoAuth어노테이션 구현하여 인가가 필요하지 않은 요청을 구분- 만료된 Token에 대해서 Exception을 반환하여 Client에서 Token 재발급을 요청하면, Refresh Token을 이용해 Access Token을 재발급하여 반환