Skip to content

Github API의 느린 응답 이슈 개선을 위한 스케줄링을 통한 DB 업데이트

김승진 edited this page Mar 18, 2024 · 1 revision

문제 상황 & 접근


매우 느린 Github API를 사용해야 했으며 바로 데이터를 response 해야 함

  • 문제가 생긴 사용해야할 Github API 의 특징

    • 맨 처음 호출시 202 상태코드 response 및 계산 시작
    • 계산이 끝나면 그 다음 호출시 데이터 반환하며 비동기 호출 방법을 제공하지 않음
  • 평균 7초 이상 소요되며 최대 10초 가량 소요

  • 한 번 조회한 부분은 이후에는 빠르게 response할 수 있으면 좋겠다 판단

  • DB에 저장하여 데이터가 있는 경우 해당 데이터를 사용하는 방법 구상

적용


  • 이미 DB에 데이터가 존재하는 경우 해당 데이터를 response
  • DB에 존재하는 데이터를 스케줄링을 통해 2시간 마다 일괄 업데이트 진행

결론


  • 부하테스트를 통해 평균 Latency를 확인하였다.
  • 첫 호출 이후부터는 DB조회만 수행하면 되어 개선된 latency 제공

매번 API 호출 [7.72s]

image

DB 조회 [49.26ms 15.67배 개선]

image

개선할 사항


  • 캐시와 비슷한 성격을 띄고 있으므로 캐시에 저장
  • 히트율 고려
    • Github Repository의 스타 수가 많은 경우만 스케줄링을 통해 갱신
    • 회원 본인의 Repository는 앱 실행시 한 번 모두 갱신