[문제 상황 & 원인]
- 특정 조건에 의해 자동으로 포인트를 지급하는 메서드 수행과정
- @Scheduler 통해 구현한 서비스단 메서드로 단일 서버 환경에서 정상 동작.
- 하지만 배포 후 멀티 서버 환경에서는 해당 메소드가 서버의 수만큼 동작하여 리소스 낭비 + 포인트 추가 지급 문제 발생
[해결 과정]
- 멀티 서버 환경에서도 한 번에 메서드가 실행되어야 하기에 Spring batch, AWS Lambda를 이용하여 지정된 시간에 스케쥴링을 실행할 수 있다고 판단
- Spring batch는 스케쥴링 기능은 있지만 대용량 데이터 자동화 처리에서 사용하기 위해 나왔으며, 별도의 서버를 설치 및 구성해야 한다는 점에서 AWS에서 제공하는 서버리스 서비스인 Lambda와 EventBridge를 이용하여 스케쥴링을 구현

- Lambda에 실행 할 Http 메소드를 기재하고 원하는 시간에 EventBridge에서 이벤트를 발생시켜서 Lambda가 실행되도록 설정

추가 +
유저가 포인트 지급 요청을 알아내어 악용하는 문제를 방지하기 위해 특정 key를 사용하여 컨트롤러에 요청하도록 구현( Valid)
'트러블슈팅' 카테고리의 다른 글
| 토큰 검증 오류 (0) | 2024.05.08 |
|---|---|
| 동시성 제어 (0) | 2024.05.08 |
| 배포전 로컬 테스트 중 데이터베이스 연결 문제 (0) | 2024.04.19 |
| RedisConfig의 복수의 CacheManager 문제 (0) | 2024.04.15 |
| Spring Day 22 : MySQL 테스트 데이터 생성 (0) | 2024.02.23 |