Rendering Performance · 2024.10 ~ 2025.02

DMAP 지도 썸네일 최적화

“구글 지도 18개를 동시에 띄우면 어떤 일이 벌어질까?”

이동 경로를 지도 위에 남기고 SNS 피드로 공유하는 DMAP에서 프로필 3×3 지도 그리드를 최적화했습니다. 18개 동적 Google Map이 만들던 WebGL 크래시와 월 $70 과금을 정적 썸네일 + 전역 동적 지도 1개 구조로 해결했습니다.

역할
프로필 기능 전담, 렌더링 최적화 및 지도 구조 개선 주도
FE 2명, BE 2명
기여
기여도 90%
DMAP README 경로 트래킹 화면
README assets

프로젝트 화면

2 images
DMAP README 홈 화면
홈 화면
DMAP README 경로 트래킹 화면
경로 트래킹
0건
렌더링 실패
$0
월 API 비용
18개
지도 썸네일
01 · Problem

문제

프로필에서 3×3 썸네일을 여러 묶음으로 보여주면 한 화면에 최대 18개의 Google Maps 인스턴스가 필요했습니다. 벡터 지도는 WebGL 컨텍스트를 사용해 브라우저 한계에 닿으면 지도 일부가 사라졌습니다.

02 · Role

역할

프로필 기능 전담, 렌더링 최적화 및 지도 구조 개선 주도 · FE 2명, BE 2명 · 기여도 90%

ReactJavaScriptGoogle Maps APIStatic Maps APIReact Portal
03 · Approach

해결 과정

  1. 1 WebGL 해제, key 리렌더링, 스켈레톤, 캡처, 인스턴스 재사용 등 6가지 방식을 실험해 실패 원인을 좁혔습니다.
  2. 2 목록은 정적 지도 이미지로, 상세 확인은 전역 동적 지도 1개로 처리하는 하이브리드 구조를 선택했습니다.
  3. 3 Google Maps 과금 구조와 호출량을 확인하고 알림을 설정해 기술 해결이 운영 비용 절감으로 이어지게 했습니다.
  4. 4 코드 컨벤션, API 호출, 무한 스크롤 구현 차이를 조율하며 팀 전체 속도를 해치지 않는 방향으로 합의했습니다.
04 · Demo

동작 데모

05 · Results

성과

지도 타입
벡터 WebGL 지도 정적 + 전역 동적 1개
메모리 사용량 감소
렌더링 성능
크래시 발생 렌더링 실패 0건
안정성 확보
API 비용
월 $70 과금 $0
비용 100% 감소
로딩 속도
18개 동적 지도 이미지 + 지도 1개
사용자 경험 개선
06 · Records

관련 기록


다음 프로젝트

Raise Developer