본문으로 건너뛰기
← All Projects
Featured Project

바나나맵

편의점·푸드트럭·음식점 등 지금 이 순간 영업 중인 매장을 지도에서 "LIVE" 버튼으로 필터링해 보여주는 지도 서비스. 소비자용 앱과 상점주용(광고/등록) 양면 플랫폼으로 서울 베타를 출시했다. 코아리버 외주, 기여도 50%(2017.08~2018.01).

바나나맵
바나나맵
바나나맵

Project Overview

역할

Cordova 기반 하이브리드 앱 개발 + 관리자 웹페이지 개발, 기여도 50%.

Project Story

프로젝트 이야기

배경과 과정, 그리고 판단의 기록

배경

바나나맵의 질문은 단순했다 — "지금 문 연 곳이 어디지?" 편의점·푸드트럭·음식점의 실시간 영업 여부를 지도 위 "LIVE" 버튼 하나로 필터링해 보여주고, 상점주는 매장을 등록·광고하는 양면 플랫폼이었다.

지도 위의 성능과 데이터

매장 수가 늘며 지도 마커 렌더링이 버벅이기 시작했다. 줌 레벨에 따라 표시 범위를 조절하고, 밀집 구역은 매장 개수 숫자(클러스터)로 묶어 표시한 뒤 클러스터를 클릭했을 때만 해당 구역 데이터를 불러오는 방식으로 바꿨다 — 화면에 필요한 데이터만 조회해 렌더링과 조회 부하를 함께 분산시켰다.

핵심 기능인 LIVE 필터링은 하버사인 공식 기반 거리순 정렬에 요일별 영업시간(오픈/마감/브레이크타임)을 조인해 구현했고, 글로벌 확장을 전제로 국가별 지도/네비게이션 API를 분기 처리해 차량·대중교통·도보별 도착예정시간으로 매장 마감 전 도착 가능 여부까지 알려주도록 했다.

Technology Stack

이 프로젝트를 구성한 기술들

PHPPHP
CodeIgniterCodeIgniter
jQueryjQuery/Ajax
MySQLMySQL 5.7
Google MapsGoogle Maps API
MMarkerClustererPlus
NNavigation APIs (Tmap, Maps.me, Sygic)
FirebaseFCM (Firebase Cloud Messaging)

Technical Implementation

Architecture decisions and code highlights

Architecture

Key Highlights

  • 마커 렌더링 최적화 — 줌 레벨에 따라 표시 범위를 조절하고, 밀집 구역은 매장 개수 클러스터로 묶은 뒤 클러스터를 클릭했을 때만 해당 구역 데이터를 불러오는 방식으로 렌더링·조회 부하를 분산 (MarkerClustererPlus 커스텀)

  • 글로벌 확장(서울 → 밴쿠버·뉴욕 예정)을 전제로 국가별 최적 지도/네비게이션 API(Google·Tmap·MAPS.ME·SYGIC)를 분기 처리하고, 차량·대중교통·도보별 도착예정시간을 계산해 매장 마감시간 전 도착 가능 여부를 알려주는 기능 구현

  • 핵심 기능인 실시간 "LIVE" 필터링 — 하버사인 공식 기반 거리순 정렬 + 요일별 영업시간(오픈/마감/브레이크타임) 조인으로 구현

Impact Analysis

Project Impact & Results

Real-world outcomes and measurable results

Achievements

  • 서울 베타 출시 (서비스 종료)

Next Project

바닐라펫

Hybrid App