bonggyulim 님의 블로그
[성능 개선] API 호출 건수 감소를 통한 검색 기능 최적화 본문
문제상황
YouTube API를 활용하여 검색 기능을 구현하였다.
초기 구현에서는 TextWatcher를 사용해 사용자가 글자를 입력할 때마다 검색 요청이 발생하도록 구현하였다.
binding.etSearch.addTextChangedListener { editable ->
val query = editable.toString()
if (query.isNotEmpty()) {
viewModel.searchVideos(query)
}
}
하지만 YouTube Data API의 search 엔드포인트는 요청 비용이 100 quota로 높은 편이다.
예를 들어 사용자가 다음과 같이 검색어를 입력하면
Android
실제로는 아래와 같은 요청이 발생한다.
A
An
And
Andr
Andro
Android
즉 한 번의 검색 과정에서 여러 번의 API 호출이 발생하게 된다.
결과적으로
- 불필요한 네트워크 요청 증가
- API quota 빠른 소모
문제가 발생하였다.
해결 방법
검색 방식을 검색 버튼 또는 키보드 엔터 입력 시 요청하도록 변경하였다.
binding.etSearch.setOnEditorActionListener { v, actionId, event ->
if (actionId == EditorInfo.IME_ACTION_SEARCH) {
val query = binding.etSearch.text.toString()
if (query.isNotEmpty()) {
viewModel.searchVideos(query)
}
true
} else false
}
결과
기존 구조 - 입력마다 API 호출
개선 구조 - 검색 실행 시 1회 API 호출
이를 통해
- API 호출 횟수 감소
- 불필요한 네트워크 요청 제거
- API quota 절약
효과를 얻을 수 있었다.
정리
검색 기능 구현 시 단순히 동작 여부뿐 아니라
API 사용량과 네트워크 요청 횟수까지 고려한 설계가 필요하다.
'Projects' 카테고리의 다른 글
| RareBridge 프로젝트 회고 (0) | 2026.03.19 |
|---|---|
| [Troubleshooting] Fragment 화면 전환 중 Flow 구독으로 발생한 NullPointerException 해결 (0) | 2026.03.10 |