본문 바로가기
개발/개발 필기

네이버 오픈 API 사용 개선 경험 공유

by nicksoon 2024. 12. 6.
반응형

오늘은 네이버 오픈 API를 사용하여 쇼핑 정보를 가져오면서 겪었던 문제와 이를 해결했던 경험을 공유하려고 합니다.

이 과정에서 Too Many Requests 에러를 해결하고 효율적인 데이터 요청 방법을 찾았던 내용을 소개해 드릴게요.

 

문제 상황: Too Many Requests

저희 서비스에서는 네이버의 쇼핑 정보를 가져와야 했습니다.

특히 한 번에 2000개의 키워드에 대해 쇼핑 정보를 불러와야 하는 상황이었습니다.

네이버 오픈 API를 사용해 많은 데이터를 받아오려고 여러 번 요청을 보냈지만,

그럴 때마다 Too Many Requests라는 응답을 받게 되었습니다.

 

처음에는 "왜 이런 문제가 발생할까?"라고 고민했습니다.

당시 요청 방식은 1초에 상품 100개씩, 키워드 100개를 요청하는 구조였는데,

네이버 API는 이러한 대량의 요청을 한 번에 처리하기 어려웠던 것입니다.

결국 네이버도 API 트래픽이 많이 발생하면 부담이 되겠죠.

 

이전 요청 방식

  • API 키 사용 구조: API 키 하나로 10,000번 요청한 후, 다음 키로 넘어가는 구조였습니다.
  • 요청 데이터 크기: 상품 정보를 100개씩 요청했습니다.
  • 요청 빈도: 1초에 100개 키워드에 대한 요청을 보냈습니다.

이렇게 요청을 보내면 결국 API 서버에 많은 부하가 가게 되어,

Too Many Requests 에러가 발생하게 된 것이죠.

한동안 API를 사용하지 않고 문제를 해결할 방법을 고민했습니다.

 

해결 방법: 조건 변경 후 최적화

그 후, 요청 방식을 변경해 테스트를 진행했습니다. 변경된 조건은 다음과 같습니다.

  1. API 키 순차 사용: 이전에는 API 키 하나로 10,000번 요청한 후에야 다음 키를 사용했지만,
    이제는
    API 키를 한 번 사용하면 바로 다음 키로 전환하는 방식으로 변경했습니다.
    이를 위해
    30개 이상의 API 키를 준비하고 순차적으로 사용했습니다.
  2. 요청 데이터 크기 조정: 상품 정보를 100개씩 받는 대신, 10개씩 받도록 조정했습니다.
    이렇게 해서 각 요청의 부담을 줄였습니다.
  3. 요청 빈도 유지: 1초에 100개 키워드에 대해 요청을 보내는 빈도는 유지했습니다.

이렇게 개선된 방식으로 요청을 보냈고, 이전보다 더 빠르게 데이터를 받을 수 있었습니다. 무엇보다 Too Many Requests 에러 없이 안정적으로 데이터를 수집할 수 있었습니다.

요청 방식

개발 환경의 제약과 해결 방법

저희 개발 환경은 카페24에서 제공하는 서버였기 때문에,

Redis와 같은 고급 캐시 관리 도구를 사용할 수 없었습니다.

그래서 저는 .txt 파일을 활용해 순번을 저장하고, n분의 1 방식으로 동작하도록 구현했습니다.

(참, 저는 n분의 1 방식을 정말 좋아하는 것 같네요 😂)

이 방식으로 순차적으로 API 키를 관리하며 안정적으로 데이터를 가져올 수 있었고,

네이버 API의 요청 제한을 효율적으로 피할 수 있었습니다.

 

마무리하며

이번 경험을 통해 대량의 데이터를 API를 통해 가져올 때,

요청 빈도와 데이터 크기를 적절히 조절하는 것이 중요하다는 것을 다시 한 번 느꼈습니다.

네이버 오픈 API를 사용할 때에도 API 요청에 대한 부담을 줄이고,

여러 API 키를 순차적으로 활용하여 안정적인 데이터 수집이 가능했습니다.

여러분도 API 사용 시 Too Many Requests 문제가 발생한다면,

요청 빈도와 데이터 크기를 조정하고,

여러 키를 활용해 요청을 분산하는 방법을 고려해보세요!

 

읽어주셔서 감사합니다. 😊

반응형