처리중입니다. 잠시만 기다려주세요.
TTJ 코딩클래스
정규반 단과 자료실 테크 뉴스 코딩 퀴즈
테크 뉴스
Hacker News 2026.06.18 26

지도 마커가 수천 개일 때, 클러스터링이 정말 최선일까?

Hacker News 원문 보기

지도 위 마커가 수천 개, 그래서 클러스터링을 켰는데…

부동산 매물이든 배달 가능한 가게든, 지도 위에 위치를 핀(마커)으로 찍는 서비스를 만들다 보면 금방 벽에 부딪혀요. 마커가 몇 개일 때는 깔끔한데, 수백 수천 개가 되는 순간 화면이 깨알 같은 핀으로 뒤덮여서 뭐가 뭔지 알아볼 수가 없거든요. 이때 거의 모든 개발자가 가장 먼저 손을 뻗는 해법이 바로 클러스터링(clustering)이에요.

클러스터링이 뭐냐면, 가까이 뭉쳐 있는 마커 여러 개를 동그라미 하나로 묶고 그 안에 '23' 같은 숫자를 띄워주는 기법이에요. 줌을 당겨서 가까이 들어가면 그 동그라미가 다시 쪼개지면서 개별 핀으로 흩어지고요. 구글 지도, 카카오맵, 네이버 지도에서 한 번쯤은 다 보셨을 거예요. 화면에 보이는 점의 개수를 확 줄여주니까 렌더링도 빨라지고 화면도 깔끔해 보여서, 사실상 업계 표준처럼 자리 잡았죠. 그런데 이번 글의 저자는 솔직하게 말해요. '나는 이 클러스터링이 별로다'라고요. 다들 쓰는 기법인데 왜 이런 얘기를 할까요?

동그라미 안의 숫자는 생각보다 정직하지 않아요

첫 번째 불만은, 클러스터가 사용자에게 거짓말에 가까운 정보를 준다는 거예요. '23'이라고 적힌 동그라미를 보면 우리는 '아, 여기 23개가 있구나' 하고 받아들이지만, 그 23개가 한 건물에 몰려 있는지 반경 2km에 흩어져 있는지는 전혀 알 수 없거든요. 줌 레벨에 따라 묶이는 기준이 계속 바뀌니까, 같은 지역인데도 줌을 조금만 움직이면 숫자가 47이 됐다가 12가 됐다가 춤을 춰요. 사용자 입장에서는 '내가 찾는 게 여기 있나?'를 판단할 근거가 사라지는 셈이죠.

두 번째는 상호작용 문제예요. 개별 마커는 클릭하면 바로 상세 정보가 뜨는데, 클러스터는 클릭하면 그냥 줌만 더 당겨질 뿐이에요. 그것도 한 번에 안 풀리고, 들어가도 또 다른 클러스터가 기다리고 있는 경우가 많죠. 사용자가 원하는 매물 하나를 누르기까지 클릭을 서너 번 해야 하는 상황이 생기는 거예요. 마커가 화면 가장자리에서 줌할 때마다 위치가 휙휙 점프하는 것도 멀미를 유발하고요.

기술적으로 보면 클러스터링은 보통 두 방식으로 동작해요. 하나는 화면을 격자(grid)로 잘라서 같은 칸에 들어온 점을 묶는 방식이고, 다른 하나는 점들 사이 거리를 계산해 가까운 것끼리 묶는 방식이에요. Mapbox가 만든 supercluster 라이브러리나 Leaflet.markercluster가 대표적인데, 줌 레벨마다 격자 크기가 달라지니까 앞서 말한 '숫자가 춤추는' 현상이 구조적으로 따라올 수밖에 없어요.

그럼 클러스터링 말고 뭘 쓸까

저자가 말하고 싶은 핵심은 '클러스터링이 항상 정답은 아니다'예요. 상황에 따라 더 나은 선택지가 있거든요. 밀도 자체를 보여주고 싶다면 히트맵(heatmap)이 훨씬 정직해요. 점이 많은 곳은 빨갛게, 적은 곳은 파랗게 칠해주니까 어디가 핫한지 한눈에 보여주죠. 또 하나는 서버에서 미리 집계해 내려주는 방식이에요. 클라이언트에 수천 개 좌표를 다 던지지 말고, 행정구역이나 육각형 격자(hexbin) 단위로 '이 구역에 몇 개'를 서버가 계산해서 주는 거죠. 데이터 전송량도 줄고 일관성도 좋아져요.

요즘은 GPU를 활용하는 방법도 현실적이에요. deck.gl 같은 라이브러리는 수십만 개 점을 클러스터링 없이도 부드럽게 그려내거든요. 그리고 의외로 강력한 해법은 '화면에 보이는 영역(viewport)의 데이터만 불러오기'예요. 어차피 사용자는 보이는 곳만 보니까, 지도를 움직일 때마다 그 범위의 데이터만 요청하면 전체를 묶을 필요 자체가 줄어들어요.

한국 개발자에게 주는 시사점

배달, 부동산, 매장 찾기, 차량 공유처럼 지도가 핵심인 서비스를 만든다면 이 고민은 남 얘기가 아니에요. 습관적으로 markercluster부터 붙이기 전에 '우리 사용자는 이 지도에서 뭘 알고 싶은 걸까?'를 먼저 물어보면 좋겠어요. 개별 매물을 빨리 누르고 싶은 거라면 viewport 로딩이, 동네별 인기 분포를 보고 싶은 거라면 히트맵이나 서버 집계가 클러스터링보다 나을 수 있거든요.

마무리

클러스터링은 편하지만 만능은 아니에요. 화면을 깔끔하게 만드는 대신 정보의 정확함과 클릭 편의성을 갉아먹을 수 있다는 걸 기억하면, 더 나은 지도 UX를 설계할 수 있어요. 여러분이 만든(혹은 써본) 지도 서비스에서는 마커가 많을 때 어떻게 풀었나요? 클러스터링이 정말 최선이었는지 한번 떠올려 보면 좋겠네요.


🔗 출처: Hacker News

이 뉴스가 유용했나요?

TTJ 코딩클래스 정규반

월급 외 수입,
코딩으로 만들 수 있습니다

17가지 수익 모델을 직접 실습하고, 1,300만원 상당의 자동화 도구와 소스코드를 받아가세요.

144+실전 강의
17개수익 모델
4.9수강생 평점
정규반 자세히 보기

"비전공 직장인인데 반년 만에 수익 파이프라인을 여러 개 만들었습니다"

실제 수강생 후기
  • 비전공자도 6개월이면 첫 수익
  • 20년 경력 개발자 직강
  • 자동화 프로그램 + 소스코드 제공

매일 AI·개발 뉴스를 받아보세요

주요 테크 뉴스를 매일 아침 이메일로 전해드립니다.

스팸 없이, 언제든 구독 취소 가능합니다.