SportsEcho(4)

문정현·2024년 1월 25일
0
post-thumbnail

오늘은 비즈니스 로직을 포함한 서버의 스프링 어플리케이션에 있던
경기 일정 API를 가져오는 Scheduler를 별도의 서버를 구축하여
스케쥴러 서버를 추가하는 작업을 하였다

스케쥴러를 분리한 이유는 한가지
API 무료 건수가 일일 한도 100건이였기 때문에
당일의 경기 일정을 갱신해주는 것만 12분 간격으로 해도 96번으로
추후 일정을 가져오는 로직을 구현하기 힘들었기 때문

Football API의 데이터만 썼다면 문제가 없었을 것이다 왜냐하면 from to 파라미터로 기간별 경기 일정을 가져올 수 있기 때문에..


하지만 문제의 농구 야구.. 이들은 일일 경기만 조회가 가능하기 때문에 이를 해결하기 위한 시나리오를 짠것 이다

  1. S3 bucket에 날짜를 기입해둔다 (지금 당장은 baseball, basketball 두 파일에 적어서 각각 filename으로 불러왔지만 json형태도 나쁘지 않은 선택지 같다)
  2. 구동하는 API의 filename으로 동작하는 스케쥴 날자를 받아온다 (ex 2024/01/25)
  3. 스케쥴을 한번 돌고 S3 file의 날짜에 +1 해준다
    • 방법은 str -> localDate -> localdate.plusDays(1)
    • 다시 delete -> 새로 upload
  4. 이렇게 일일 4번씩 남은 횟수를 돌면서 매일 4일씩 점점 뒷 데이터를 DB에 적재한다

까지가 현시점에서의 로직이다.

오늘의 이슈를 남기며 마무리

데이터를 밤새도록 1,267,555건을 넣어주신 지성님의 노력으로 데이터에는 엄청난 데이터를 쌓았다

놀랍게도 인덱스가 걸려있을 것으로 예상되는 id값으로 조회를 하면 sql문 실행 속도가 5분 (스크린샷 사진을 안찍어뒀다..)
정말 이상한 현상이라 혹시 아직 너무 많은 데이터를 한꺼번에 넣어줬기에 아직 인덱스가 걸리지 않았거나 정립이 완료되지 않은 것 같다는 생각에 팀원들 모두 밥먹고 와서 계속 이 속도면 진짜 큰일 났다.. 라고 했지만

진짜 기다리니까 금방 조회 했다는거..

profile
기록 == 성장

0개의 댓글