-
Notifications
You must be signed in to change notification settings - Fork 0
[BE] Google Elevation API를 이벤트 기반 비동기 배치 처리
송현성 edited this page Feb 24, 2025
·
1 revision
기존 서비스에서는 캠퍼스 내 길 정보를 조회할 때, 동기식으로 Google API를 호출하여 데이터를 처리했습니다. 이 방식은 단순하지만, 응답 지연과 함께 비용 및 성능 측면에서 한계가 있었습니다. 이에 저희는 동기식 처리 방식에서 비동기 처리 방식으로 전환하고, 비용 경제적인 배치 처리를 도입하는 방향으로 개선하였습니다.
- 비동기 처리 전환:
- 응답 지연 문제를 해결하기 위해, 기존의 동기식 호출 방식을 비동기 방식으로 변경하였습니다. 이를 통해 API 호출로 인한 응답 지연을 크게 줄일 수 있었습니다.
- 비용 경제적 배치 처리:
- Google API는 한 번 호출할 때 1개 좌표를 요청하던 512개 좌표를 요청하던 호출당 비용은 동일합니다.
- 따라서, 여러 요청을 모아서 한 번에 처리하면 비용 측면에서 경제적입니다.
- 30분 배치 처리 전략:
- 첫 요청이 들어오면, 이후 30분 동안 발생하는 모든 요청을 모아 배치로 처리하는 전략을 채택하였습니다.
- 이 방식은 여러 사용자의 요청을 하나로 통합하여 API 호출 횟수를 줄이고, 동시에 비용 부담을 최적화하는 데 기여합니다.
- 30분간 해발고도 데이터는 주변 노드의 평균 해발고도로 채워두어 길 찾기 결과에 영향을 최소화 하였습니다.
- 비동기 전환:
- 기존 동기식 API 호출을 Spring WebClient와 Reactor를 활용한 비동기 호출 방식으로 전환하여 응답 시간을 단축했습니다.
- 이벤트 기반 배치 처리:
- 첫 API 요청 시, 스케쥴러를 통해 30분간 들어오는 모든 요청을 모아 한 번에 배치 처리하도록 설계했습니다.
- 배치 처리는 비용 경제적인 방식으로, 여러 개의 작은 요청을 하나의 대규모 요청으로 통합함으로써 Google API 호출 비용을 절감하고, 시스템의 안정성을 높였습니다.
- 🚏 완벽한 길을 그리기 위한 노력
- 🪖 버그데이 UT 결과 리포트
- 🐜 어드민 페이지
- 🌊 1차 자체 QA
- 🌊 2차 자체 QA
- 🌊 3차 자체 QA
- 🌊 4차 외부 QA
- 🌊 5차 외부 QA
- ☁️ FE의 GCP를 활용한 배포 방식 및 내부 아키텍쳐
- 🍀 UNIRO의 자연스러운 로딩 화면, 어떤 원리일까? (Suspense)
- 🧪 완벽한(?) 페이지를 위한 LightHouse 점수 개선기
- 🌎 구글 구면 좌표계 도입 여부
⚠️ API 통신 에러 처리- 🥷 바텀시트 만들기
- 💨 최적화 : 효율적인 길 렌더링(Event Capturing)
- 📀 최적화 : 오브젝트 캐싱
- 😎 최적화 : 모든 길 조회 SSE 적용