공공 API를 덜 두드리는 법 — 30초 캐시, 동시 요청 합치기, 실패한 뒤 물러서기
호출 한도가 있는 공공 버스 API를 쓰는 Bus Explorer가 실시간 위치를 캐시하는 방법을 정리합니다. 같은 키의 동시 요청 병합, 실패 시 30·60·120초 물러서기, 한도 초과 시 서비스 단위 차단, 오래된 값을 신선한 척하지 않는 규칙을 코드로 설명합니다.
매일의 소식에서 중요한 변화를 발견하고,
그 안의 기술을 깊이 살펴봅니다.
그리고 직접 만든 것의 기록을 남깁니다.
첫 일일 기술 뉴스 글을 준비하고 있습니다.
검토를 마친 글이 이곳에 차례로 쌓입니다.첫 심층 기술 분석 글을 준비하고 있습니다.
검토를 마친 글이 이곳에 차례로 쌓입니다.호출 한도가 있는 공공 버스 API를 쓰는 Bus Explorer가 실시간 위치를 캐시하는 방법을 정리합니다. 같은 키의 동시 요청 병합, 실패 시 30·60·120초 물러서기, 한도 초과 시 서비스 단위 차단, 오래된 값을 신선한 척하지 않는 규칙을 코드로 설명합니다.
버스 환승 경로 탐색을 우선순위 큐로 만들었더니 실제 질의에서 아무것도 찾지 못했습니다. 탑승 횟수별 라운드 탐색과 도보 환승으로 바꾼 과정, 후보를 고르는 규칙, 300개 질의로 잰 결과를 정리합니다.
Bus Explorer는 정류장 사이 소요 시간을 예측값이 아니라 관측으로 재려고 차량 위치를 반복 수집합니다. 첫 측정에서 모든 구간이 폴링 간격과 같은 40초로 나온 버그의 원인, 도착 시점을 중간에 놓는 해법, 하루 호출 한도 안에서 도는 수집기 설계를 정리합니다.
공공데이터에는 정류장 사이 소요 시간표가 없습니다. Bus Explorer가 실시간 도착 정보, 관측한 구간 중앙값, 기본값을 섞어 경로의 소요 시간을 추정하고, 그 추정이 어디서 왔는지 함께 보여 주는 방법을 코드로 정리합니다.