[기획개발일지#5] 고속도로 전기차 충전소 웹서비스 完

by 장민준
image.png 고속도로 충전소 절망편

2편 말미에 이런 말을 했습니다.


"사용자의 페인 포인트가 이토록 명확하고, 시장이 간절히 원하는 솔루션이라는 확신이 있다면, 기획자는 어떻게든 증명해낼 길을 찾아야 한다."


말은 쉬웠습니다. 그리고 현실은 훨씬 지저분했습니다.


1. 설레는 시작, 그리고 첫 번째 벽

MVP 설계는 깔끔했습니다. 고속도로를 선택하고, 방향을 고르고, 휴게소를 누르면 가장 가까운 IC 밖 충전소를 지도로 보여주는 것. 머릿속에서는 완성된 그림이었습니다.

화면 캡처 2026-03-23 112753.png

그런데 첫 번째 데이터를 지도에 올리는 순간, 핀이 엉뚱한 곳에 찍혔습니다.

IC 좌표가 실제 위치와 수백 미터, 어떤 곳은 수 킬로미터씩 벗어나 있었습니다. 공공데이터를 그대로 믿은 것이 실수였죠. 결국 ETC 좌표 데이터와 전국휴게소정보표준데이터 CSV를 기준으로 전면 재보정을 진행했습니다. '경주건천'이 '건천'으로, '언양고래'가 '언양'으로 바뀐 것처럼 이름까지 달라진 케이스들은 하나하나 수동으로 연결했습니다.

데이터를 다루는 일은, 데이터 자체보다 데이터가 정의되는 맥락을 추적하는 싸움이라는 걸 처음으로 실감한 순간이었습니다.


2. 알고리즘을 포기하고 나서야 정확해졌다

좌표 문제를 수습하고 나니, 이번엔 IC 매핑이 문제였습니다.

처음에는 순서를 기반으로 각 휴게소의 직전/직후 IC를 자동으로 찾는 로직을 짰습니다. 코드는 우아했지만, 결과는 그렇지 않았습니다. 실제로 돌려보면 엉뚱한 IC가 매핑되는 오탐이 계속 발생했습니다.

오래 고민했습니다. 그리고 결국 자동화를 포기했습니다.

화면 캡처 2026-03-24 115138.png

각 휴게소에 직전/직후 IC를 직접 손으로 고정 연결하는 방식으로 전환했습니다. 코드는 훨씬 투박해졌지만, 정확도는 비교할 수 없이 높아졌습니다. 때로는 완벽한 알고리즘보다 믿을 수 있는 수작업이 낫다는 것을 인정할 수밖에 없었습니다.


3. 강원도가 사라졌다

진행 중 갑자기 강원도와 전북 지역 충전소 데이터가 수집이 안 됐습니다.

원인은 황당했습니다. 강원특별자치도(42→51), 전북특별자치도(45→52)로 행정구역 코드가 바뀌면서 공공데이터 API의 지역코드(zcode)가 조용히 변경된 것이었습니다. 제가 찾아본 바 아무런 공지가 없었습니다.

image.png 특별자치도로 승격하며 코드도 변경되었습니다


코드 수정은 두 줄이었습니다. 하지만 찾기까지 2시간 반이 걸렸습니다...


4. 배포 앞에서 다시 무너졌다

로컬에서 잘 돌아가던 서비스가 Railway에 올라가는 순간부터, 전혀 다른 문제들이 연달아 터졌습니다.

가장 황당했던 건 Cron 서비스가 메인 DB가 아닌 빈 DB를 바라보고 있던 문제였습니다. 5분마다 돌아야 할 충전기 상태 폴링이 아무 데이터도 없는 허공에 대고 실행되고 있었던 거죠. 또한 이전에도 언급했던 사기업의 유료 데이터가 없어 생각보다 정확하지 않았습니다.

화면 캡처 2026-03-24 092736.png 배포 서비스인 Railway

모바일 터치 UX도 만만치 않았습니다. 바텀시트를 스크롤하면 지도가 따라 움직이고, 위에서 아래로 스와이프하면 페이지가 새로고침되고, 뒤로가기를 누르면 앱이 통째로 꺼지는 문제가 연달아 터졌습니다. 하나씩 잡아나가면서, 화면 하나에 이렇게 많은 터치 이벤트 충돌이 숨어있다는 것을 처음 알았습니다.

image.png

5. 스마트한 알고리즘 대신, 정직한 숫자를 택했다

충전기 현황 표시도 처음 설계와 달라졌습니다.

원래 계획은 30분 윈도우 안에서 상태 변동 횟수를 분석해 원활/보통/혼잡/매우 혼잡 4단계로 표시하는 것이었습니다. 꽤 그럴듯했습니다. 그런데 막상 돌려보니 폴링 타이밍이 조금만 어긋나도 실제로 혼잡한 상황이 원활로 표시되는 문제가 생겼습니다.

결국 방식을 완전히 바꿨습니다. 예측 대신 현재 상태를 그냥 숫자로 보여주는 것으로요.

화면 캡처 2026-03-25 121230.png 카카오맵에 접속해서 바로 현황을 확인할 수 있습니다.


복잡한 알고리즘보다 이 안내가 훨씬 정직합니다. 사용자가 직접 판단할 수 있고, 폴링 타이밍의 영향도 받지 않습니다. 카카오맵 자체의 갱신 지연 가능성은 여전히 있어서, "고장 여부에 따라 값이 정확하지 않을 수 있습니다"라는 안내 문구를 함께 붙였습니다.


6. 그래서, 완성된 것은 이렇게 생겼습니다

ChargeFlow 바로가기

화면 캡처 2026-03-25 122243.png
화면 캡처 2026-03-25 121442.png
화면 캡처 2026-03-25 122127.png

지금 ChargeFlow는 경부, 영동, 서해안 3개 노선, 286개 노드, 약 4,300개의 충전소를 기반으로 실제 서비스로 돌아가고 있습니다.

메인 화면에서 노선을 고르면, GPS 기반으로 가장 가까운 휴게소를 자동 추천합니다. 해당 휴게소에서 빠져나갈 수 있는 IC 기준, 15분 이내에 도달 가능한 개방형 급속 충전소만을 지도에 올려줍니다.

화면 캡처 2026-03-20 090403.png 15분 이내의 충전소만 선별

마커를 클릭하면 소요 시간, 거리, 충전 용량 정보가 카드 형태로 뜨고, '카카오맵에서 보기'로 바로 길안내가 연결됩니다.

단순해 보입니다. 의도적으로 단순하게 만들었습니다.


마치며: 완성은 끝이 아니라, 증명의 시작이다

솔직히 말하면 아직 부족한 게 많습니다. 3개 노선뿐이고, 데이터 정확도도 100%가 아닙니다.

하지만 한 가지는 말할 수 있습니다.

"휴게소 충전기가 꽉 찼을 때, 사용자에게 지금 당장 쓸 수 있는 대안을 보여준다."

이 하나의 가치는, 제대로 작동하고 있습니다.

다음은 중부고속도로와 남해고속도로로 노선을 확장하고, 폴링 로그가 쌓이는 대로 시간대별 혼잡 패턴 예측도 붙여볼 계획입니다. 완성이 아니라 출발점입니다.

완벽한 서비스를 꿈꾸며 멈춰 있기보다, 부족한 채로 내놓고 계속 고쳐나가는 것. 이번 프로젝트가 저에게 남긴 가장 큰 교훈입니다.


1편 링크: https://brunch.co.kr/@e0636059d73b471/3

2편 링크: https://brunch.co.kr/@e0636059d73b471/10

서비스 링크(모바일 추천): ChargeFlow 바로가기

매거진의 이전글[기획개발일지#4] 고속도로 전기차 충전소 웹서비스 2