블로그 목록

충전소에 갔더니 다 고장이었다: EV-Lens를 만든 이유

배터리가 20% 아래로 내려간 상태에서 처음 가보는 지역의 충전소를 찾아간 적이 있습니다. 내비게이션에는 분명 충전기가 여러 대 있다고 나와 있어서 안심하고 진입했는데, 막상 도착해 보니 한 대는 이미 다른 차량이 충전 중이었고 나머지 두 대는 화면이 꺼져 있거나 '점검 중' 안내문이 붙어 있었습니다. 결국 배터리 경고등을 보며 다음 충전소를 다시 검색해 이동해야 했습니다.

그날 이후 "출발하기 전에, 혹은 경로를 틀기 전에 내 차에 맞는 충전기가 지금 실제로 비어 있는지 지도로 바로 확인할 수 있으면 좋겠다"는 생각으로 EV-Lens(이비렌즈)를 설계하고 만들게 되었습니다.

충전소 위치 정보만으로는 부족한 이유

전기차를 운행해 보면 충전소가 어디에 있는가보다 지금 당장 내가 꽂을 수 있는 충전기가 남아 있는가가 훨씬 중요합니다. 거리가 아무리 가까워도 모든 충전기가 충전 중이면 30분 이상 대기해야 하고, 통신 이상이나 고장 상태면 아예 발길을 돌려야 합니다. 게다가 내 차량이 지원하는 커넥터 규격(DC콤보, 차데모, AC3상, 완속 5핀)과 충전 속도(급속·완속)까지 맞아야 합니다.

집이나 직장 주변에서는 어느 충전소가 비교적 한산하고 관리가 잘 되는지 경험으로 알 수 있지만, 주말 나들이나 장거리 출장길에서는 그런 정보가 전혀 없습니다. 특히 배터리 잔량이 15~20% 이하로 떨어진 상태에서는 충전소 한 곳을 헛걸음하는 것 자체가 큰 부담이 됩니다. 출발 전 1분만 투자해 1순위 충전소와 2순위 예비 충전소의 실시간 상태를 함께 확인할 수 있는 도구가 필요했습니다.

기존 충전소 조회 앱을 쓰며 느꼈던 아쉬움

기존 충전소 앱과 지도 서비스들도 유용하지만, 빠르게 경로 주변 상황을 훑어볼 때는 몇 가지 불편이 있었습니다.

  • 상태 확인까지 거쳐야 하는 단계가 많음: 지도에서 마커를 누르고, 상세 팝업을 열고, 하위 충전기 리스트를 스크롤해야만 현재 사용 가능 대수를 알 수 있는 경우가 많았습니다.
  • 내 차에 맞지 않는 규격이 함께 섞여 보임: 완속 충전기만 있는 곳이나 커넥터가 다른 충전소가 함께 표시되면, 급속 충전이 급한 상황에서 후보지를 추려내기가 번거로웠습니다.
  • 무거운 앱 구동 속도: 급하게 확인해야 할 때 회원가입이나 무거운 초기 로딩 없이 모바일 웹에서 즉시 열리는 가벼운 지도가 필요했습니다.

그래서 만든 EV-Lens

한국환경공단(무공해차 통합누리집)이 공공데이터포털을 통해 제공하는 전국 전기차 충전소 데이터에는 충전소 좌표뿐 아니라 개별 충전기 단위의 상태 코드(충전 대기, 충전 중, 점검 중, 통신 미연결 등)와 마지막 상태 갱신 시각이 포함되어 있습니다. EV-Lens는 이 데이터를 수집·정규화하여 지도 위에서 직관적으로 탐색할 수 있게 만든 서비스입니다.

  • 줌 레벨 기반 클러스터링 지도: 전국 단위로 축소했을 때는 지역별 군집(Cluster)으로 묶어 보여주고, 지도를 확대하면 개별 충전소의 실시간 가용 상태를 즉시 렌더링합니다.
  • 직관적인 상태 색상 배지: 사용 가능(초록), 충전 중(주황), 점검·고장·통신 이상(빨강/회색)을 색상으로 구분해 상세 창을 열기 전에도 충전소 상황을 파악할 수 있습니다.
  • 커넥터 및 급속/완속 다중 필터: DC콤보, 차데모, AC3상, 완속 필터를 조합해 내 차에 바로 꽂을 수 있는 충전소만 지도에 남길 수 있습니다.
  • 원클릭 내비게이션 연동: 선택한 충전소에서 카카오맵·네이버지도·티맵 등 평소 쓰는 길찾기 앱으로 목적지를 바로 전달할 수 있습니다.
EV-Lens 지도 위에 표시된 전기차 충전소 현황

▲ 지도 위에서 주변 충전소와 충전기 상태를 확인하는 EV-Lens 화면

단계별 상세 활용법은 EV-Lens 사용 가이드에 정리해 두었고, 커넥터 규격과 급속·완속 기준이 헷갈리신다면 전기차 충전 커넥터 종류와 급속·완속 차이 정리를 함께 참고해 보세요.

개발하며 해결한 대용량 마커 렌더링과 공공데이터 동기화

전국에 설치된 전기차 충전기는 수십만 기에 달합니다. 이를 브라우저 지도에 한꺼번에 마커로 그리면 DOM 노드가 폭증해 모바일 브라우저가 즉시 멈추게 됩니다. 이를 해결하기 위해 현재 화면 영역(Viewport Bounding Box)과 줌 레벨에 맞춰 인접 마커를 묶어주는 공간 클러스터링(Spatial Clustering)을 적용하여, 지도를 빠르게 드래그하거나 확대·축소해도 프레임 저하 없이 부드럽게 동작하도록 최적화했습니다.

또한 공공데이터 API를 매번 사용자 요청 시점마다 직접 호출하면 응답 지연과 호출 제한(Rate Limit)이 발생하고, 캐시가 만료되는 순간 동시 요청이 몰리는 캐시 스탬피드(Cache Stampede) 문제가 생길 수 있습니다. 이를 방지하기 위해 백엔드에서 충전소 기본 제원과 실시간 상태 변경분을 분리해 주기적으로 동기화하고 인메모리 캐시와 DB 락 전략을 결합했습니다. 관련 백엔드 설계 원칙은 캐시 스탬피드의 원인과 대응 아티클에 자세히 기록해 두었습니다.

실제 장거리 운행에서는 이렇게 씁니다

고속도로 장거리 주행을 떠나기 전에는 출발지에서 EV-Lens를 열고, 차량 커넥터(DC콤보)와 '급속' 필터를 켠 상태에서 목적지나 경유지 주변을 먼저 훑어봅니다. 초록색(사용 가능) 충전기가 2기 이상 여유 있는 곳을 1순위 목적지로 정하고, 반경 3~5km 이내의 다른 급속 충전소를 2순위 예비 후보로 함께 기억해 둡니다. 점검 중(빨간색) 비율이 높은 충전소는 애초에 경로에서 제외합니다.

주행 중에는 안전을 위해 직접 화면을 조작하지 않고, 휴게소에 정차했을 때나 동승자의 도움을 받아 도착 예정 충전소의 최신 상태를 한 번 더 점검합니다. 운전 중 스마트폰 조작은 매우 위험하므로 반드시 안전한 곳에 정차한 뒤 확인하시기 바랍니다.

공공데이터의 구조적 한계와 개선 계획

EV-Lens를 활용하실 때 꼭 염두에 두셔야 할 공공데이터 특유의 한계점도 있습니다.

  • 상태 갱신 시차(Latency): 개별 충전기 제어기에서 운영기관 서버, 그리고 환경부 통합 플랫폼으로 상태가 전달되기까지 보통 1~5분가량의 시차가 존재합니다. 화면에서 초록색이었더라도 도착 직전에 다른 차량이 먼저 입차했을 수 있습니다.
  • 물리적 주차 환경 미반영: 충전기 통신 상태는 '정상 대기'이더라도 일반 내연기관 차량의 불법 주정차, 충전소 입구 공사, 아파트 단지 방문객 출입 제한 같은 현장 상황은 데이터만으로 알 수 없습니다.
  • 통신 단절과 실제 고장의 차이: 지하 주차장 음영 지역으로 인해 일시적으로 통신 미연결 상태인 충전기가 현장에서는 정상 결제·충전되는 경우도 있습니다.

따라서 EV-Lens는 100% 절대적인 보장 수단이 아니라 헛걸음 확률을 크게 낮춰주는 의사결정 보조 도구로 활용하시는 것이 가장 안전합니다. 배터리 잔량이 20% 미만일 때는 반드시 2순위 충전소까지 함께 확인해 두세요.

앞으로는 충전소별 최근 상태 갱신 시각(Timestamp)을 더 눈에 띄게 표시해 데이터 신선도를 바로 판단할 수 있게 하고, 자주 방문하는 충전소를 브라우저에 즐겨찾기로 고정하는 기능을 추가할 계획입니다.