2012-08-27 6 views
4

내 목표는 웹 응용 프로그램을 내부 데이터베이스와 동기화하는 것입니다. 웹 응용 프로그램에는 공용 API가 있지만 두 소스를 완전히 동기화하려면 매번 약 2000 개의 개별 API 호출을해야합니다. 내 본능은 이것이 과도하고 무책임하다고 말하지만, 나는 확실히 알고있는 경험이 부족하다.데이터를 "합리적인"웹 API를 사용하여 동기화

이 특별한 경우 웹 응용 프로그램은 Asana이지만 다른 서비스와 비슷한 상황이 발생했습니다. 과도한 API 호출을 통해 서비스를 악용하는지 알 수있는 방법이 있습니까? 저는 아사나와 같은 회사에 도스에 가지 않을 것이라는 것을 알고 있습니다. 그러나 하루에 ~ 150k 건의 요청을하는 것보다 더 좋은 방법이 있어야한다는 느낌을 떨칠 수 없습니다.

내가 생각할 수있는 유일한 다른 옵션은 데이터베이스에 변경 사항이 있음을 알고있는 경우에만 웹 서비스를 업데이트하는 것이지만, 그렇게 많은 기능을 잃을 것입니다.

나는이 질문의 주체성에 대해 사과하지만 공개 API를 사용할 때 예상되는 예의가 있는지 누군가가 설명 할 수 있기를 정말로 바라고 있습니다.

답변

4

(나는 아사에서 일)

이 훌륭한 질문이다, 또는 오히려 질문을 설정합니다.

모든 개체에 대해 반복적으로 요청할 시스템을 설계하고 있습니다. 사물의 수가 증가하면 어떻게 될 것인가? 초기 요청 비율이 합리적이라 할지라도 이는 확장성에 문제가 있습니다. 보다 확장 가능한 솔루션은 번호가 시스템에서으로 변경되는 솔루션입니다. 시간이 지남에 따라 증가 할 것이지만 훨씬 더 천천히 변화합니다. 단일 사용자가 하루에 할 수있는 변경 수는 비교적 일정하지만 시간이 지남에 따라 생성 된 총 개체 수는 증가하고 커집니다. 따라서 첫 번째 조언은 이러한 방식으로 일하는 것을 피하고, 대신 변경 사항을 감지하고 그 변화를 감지하는 방법을 찾아야합니다. 이 접근법을 취함으로써 능력을 잃을 것이라고 생각하는 이유를 아는 것은 흥미로울 것입니다.

이제 Asana API가 이 아니며 현재은 시스템의 변경 사항을 감지하는 친숙한 메커니즘을 제공한다는 것을 알고 있습니다. 불행히도 배달 날짜를 약속 할 수는 없지만 일반적으로 요청되는 기능이며이를 조사하고 있습니다. 따라서 우리 시스템을 지금은 폴링하는 것 외에는 선택의 여지가 없을 것입니다.

많은 서비스 제공 업체는 API를 실수로 사용하거나 악의적으로 API를 다른 고객에게 사용하지 못하도록 API 사용에 제한을 설정합니다. Asana도 예외는 아닙니다. 때로는 이러한 제한 사항이 게시되고 다른 제한 사항은 게시되지 않으며 표준 제한이 없습니다. 모든 제한 사항은 서비스에 따라 다릅니다. 그러나 서비스 제한에 대해 궁금해하는 것은 매우 사려 깊습니다.

즉, 하루에 150,000 건의 요청이 Asana API의 경우 많은 종류라고합니다. Google의 모든 API 사용자가 트래픽을 많이 주었 더라면 Google 웹 검색보다 하루에 더 많은 요청을 처리 할 수 ​​있었을 것입니다. :) 기술적으로, 때로는 단일 사용자로부터 해당 볼륨의 요청을 처리 할 수 ​​있습니다.

폴링해야하는 경우 15 분 간격으로 폴링을 시도하십시오. 하지만이 기간 동안 전체 작업 공간을 폴링하지 마십시오. 트래픽/데이터가 너무 많을 수 있습니다. 더 나은 솔루션을 제공하기 위해 노력하고 있습니다.

Asana API에 대한 요청이 너무 많으면 원하는 응답 대신 HTTP 상태 코드 429가 반환됩니다. 자세한 내용은 여기 (https://asana.com/developers/documentation/getting-started/errors)에서 확인할 수 있습니다.

+0

고맙습니다. 그렉. 그건 매우 도움이되었고 내 질문에 모두 대답했습니다. 나는 너의 충고를 할 것이다. 기능 상실에 대한 우려는 API를 사용하여 Asana의 변경 사항을 감지 할 수 없다는 가정하에 작성되었습니다. 나는 우리 자신의 시스템에서 변화를 감지 할 수 있으며, 지금은 충분할 것입니다. 다시 한 번 감사드립니다. – wwv

+0

저는 API를 통해 변경된 데이터 만 가져 오기를 기다리는 개발자 중 한 명입니다. 지금 저는 Asana를 제 작업 공간의 모든 것에 20-25 분마다 폴링합니다. 물론 제한을 준수하고 429 개의 코드를 적절하게 처리해야합니다. – ron

관련 문제