알림 기능 (FCM) 에서 이어진다.
일단 가장 큰 문제점은 다음과 같다.
말도 안되는 오버헤드이다. 현재는 개발 환경이여서 그렇지, 플랜에는 이미 지난것도 있고 먼 훗날의 것도 있는데
그걸 다 조회해서 필터링 해서 가져오는것? 말이 안된다.
그리고 단순히 현재 로직처럼
→ 지나지 않은 플랜을 모두 조회 → 이후 완료, 시간 등에 따라서 필터링
이렇게 찾는다면, 플랜을 모두 조회할 때 큰 오버헤드와 데이터베이스 부하를 겪게 될 것이다.
단순히 스케줄링 시간을 조정한다고 해결되는 문제가 아니다. 애초에 모든 플랜을 조회하는 것 부터 큰 과부하이다.
→ Plan
을 조회하는 것 자체에서 일단 보완을 해야한다.
여기서 생각한게 우선 캐싱이다.
이전에 PriviewPlan
을 구현할 때 Redis
를 사용했는데,
이번에는 그 Redis
를 캐싱에 사용해 보면 어떨까?
대략적인 흐름은 다음과 같다.