지도 API, 코루틴으로 8초 → 2초!
by DD
5개월 전
조회수 57
지도보기 API의 8초 응답 시간을 개선하기 위해 Kotlin Coroutine Async를 도입함
표준 상품 API 호출 방식을 병렬 처리하도록 구조를 변경하고, 동적 Window 분할 전략을 적용함
결과적으로 응답 시간 4배 단축, TPS 7배 증가를 달성하여 사용자 경험을 대폭 개선함
병렬 처리를 위한 아키텍처 설계
기존 동기 방식의 API 호출은 표준 상품 API의 순차 처리로 인해 병목 현상이 발생했다. Kotlin Coroutine Async를 활용하여 표준 상품 API 호출을 병렬 처리하도록 구조를 변경했다. 따라서 응답 시간 단축과 TPS 증가를 동시에 달성했다.
동적 Window 분할 전략의 효과
동적 Window 분할 전략은 제휴점 개수에 따라 병렬 처리의 정도를 조절한다. 30개 이하는 분할하지 않고, 61개 이상은 최대 3개 window로 제한하여 과도한 부하를 방지한다. 결과적으로 자원 효율성을 높이고, 안정적인 성능을 유지한다.
Async 구현과 성능 개선
CoroutineScope 내에서 async 함수를 사용하여 표준 상품 API를 비동기적으로 호출한다. awaitAll()을 통해 모든 작업의 완료를 기다린 후 결과를 병합한다. 응답 시간 4배 단축 및 TPS 7배 증가를 통해 사용자 경험을 크게 개선했다.