지도 통합, 비용 절감, 아키텍처 개선까지! 여기어때 개발팀의 기술 회고
by DD
5개월 전
조회수 2
네이버 지도 SDK 사용량 증가로 비용 26배 폭증 문제 발생
ViewModel 비대화 문제를 해결하기 위해 StateHolder 패턴 도입
Haversine 공식 기반의 거리 기반 클러스터링으로 마커 겹침 해결
비용 절감을 위한 Lazy Load 전략
구체적으로 MapView를 Global로 사용하는 대신, Lazy Load 방식을 채택하여 지도 렌더링 시점을 조절했다. 따라서 네이버 지도 SDK의 API 호출 빈도를 줄여 비용 절감을 달성했다. 반면, 지도 렌더링 지연에 따른 사용자 경험 저하를 막기 위해 PlaceHolder 이미지를 활용했다.
StateHolder 패턴을 활용한 ViewModel 리팩토링
기존 3,000줄에 달하는 ViewModel을 StateHolder 패턴으로 분리하여 코드 가독성을 높였다. 구체적으로 TopNavigationStateHolder, MapStateHolder, PlaceListBottomSheetStateHolder로 분리하여 각 컴포넌트의 책임 분리를 명확히 했다. 결과적으로 코드 파악 및 온보딩이 용이해졌다.
Haversine 공식을 이용한 마커 클러스터링
Haversine 공식을 활용하여 지구 곡면을 고려한 정확한 거리 계산을 구현했다. 따라서 동일 건물 내 다수 제휴점의 마커 겹침 문제를 해결했다. 구체적으로 위·경도 차이를 이용한 선행 필터링을 통해 연산 비용을 최적화했다.
댓글 0
첫 번째 댓글을 남겨보세요!