테슬라 기본 브라우저로 과속 단속 카메라 알림 받기 — '오마이스피드' 개발기

한눈에 보는 요약
테슬라에서 과속 단속 카메라 경고음을 들으려면 프리미엄 커넥티비티 구독이 필요합니다. 이 불편함을 해결하기 위해 한 개발자가 테슬라 기본 브라우저에서 주소만 열면 바로 작동하는 웹 지도를 직접 만들었습니다. 이름은 '오마이스피드'입니다.
핵심은 세 가지입니다.
- 설치·가입·광고가 없습니다. 주소만 열면 끝입니다
- 위치 정보가 브라우저를 벗어나지 않습니다. GPS 값을 서버로 전송하는 코드 자체가 없습니다
- 정적 호스팅 기반이라 차량 브라우저에서도 가볍게 돌아갑니다
어떤 데이터가 들어 있나
공공데이터를 기반으로 운전에 실질적으로 도움이 되는 지점들을 모아 담았습니다. 괄호는 데이터 기준일입니다.
| 분류 | 수량 | 기준일 | | --- | --- | --- | | 단속 카메라 | 29,928곳 | 2026-08-07 | | 구간 단속 | 1,037구간 | 2026-08-07 | | 주정차 단속 CCTV | 14,135곳 | 2026-06-30 | | 과속방지턱 | 85,809곳 | - | | 가변속도 구간 | 3,906곳 | - | | 졸음쉼터·고속도로 휴게소 | 463곳 | - | | 테슬라 슈퍼차저 | 182곳 | - | | 주차장 | 17,459곳 | - |
단속 정보뿐 아니라 졸음쉼터, 슈퍼차저, 주차장까지 함께 담아 주행 중 실제로 찾게 되는 정보를 한 화면에서 볼 수 있게 설계한 점이 눈에 띕니다.
프라이버시를 지키는 방식
위치 기반 서비스에서 가장 민감한 부분이 바로 '내 위치가 어디로 가는가'입니다. 오마이스피드는 이 지점을 구조적으로 차단했습니다.
- GPS 좌표는 브라우저 내부에서만 사용됩니다. 서버로 보내는 코드가 아예 존재하지 않습니다
- 실시간 교통 정보를 켤 때만 서버 요청이 발생하는데, 이때도 보내는 값은 0.5도(약 55km) 격자 셀 번호입니다
- 즉 서버가 알 수 있는 건 정확한 좌표가 아니라 "지금 대략 어느 칸을 보고 있나" 정도입니다
"정책으로 약속한다"가 아니라 애초에 보낼 수 없는 구조로 만든다는 접근이라, 프라이버시를 중요하게 보는 분들에게 설득력이 있습니다.
개발자가 신경 쓴 기술 포인트
차량 브라우저라는 특수한 환경
가장 재미있는 부분입니다. 개발자가 테슬라 실차에서 뷰포트를 직접 측정해 보니 804×638px이었습니다. 일반적인 반응형 디자인의 데스크톱 분기점에 걸리지 않는 애매한 크기여서, 기본 설정 그대로 두면 사이드바가 사라져 버렸다고 합니다.
실제 기기에서 재보지 않으면 절대 알 수 없는 종류의 문제입니다. 차량 인포테인먼트를 타깃으로 하는 웹 개발에서 참고할 만한 사례입니다.
PMTiles + MapLibre 조합
지도 렌더링은 PMTiles와 MapLibre를 써서 정적 호스팅으로 처리했습니다. 타일 서버를 따로 운영하지 않아도 되니 운영 비용과 복잡도가 크게 줄어듭니다.
실시간 교통 정보는 영리하게 분리했습니다.
- 도로 형상은 변하지 않으므로 불변 타일로 처리
- 속도 정보만 격자 프록시(5분 캐시)에서 받아와 색을 입힘
무거운 기하 데이터는 캐시하고 가벼운 상태 값만 갱신하는 구조라, 데이터 전송량과 서버 부하를 동시에 줄일 수 있습니다.
솔직하게 밝힌 한계
개발자가 직접 밝힌 제약 사항도 함께 짚어둘 만합니다.
- 최신성: 카메라 데이터는 공공데이터 기준일 시점이라, 최근 설치된 단속 장비는 빠져 있을 수 있습니다
- 회전금지 표시: OSM(OpenStreetMap) 기반이라 누락된 교차로가 있습니다
- 참고용: 실제 단속 기준과 다를 수 있습니다
이런 한계를 숨기지 않고 먼저 공개한 점은 오히려 신뢰를 높이는 부분입니다. 보조 수단으로 활용하되, 결국 안전 운전의 기준은 도로의 실제 표지판이라는 걸 잊지 않으면 좋겠습니다.
정리하며
오마이스피드는 "구독하지 않으면 안 되는 기능"을 웹 표준과 공공데이터만으로 대체한 사례입니다. 설치 장벽이 없고, 위치 정보를 구조적으로 보호하고, 정적 호스팅으로 운영 부담을 낮춘 설계가 인상적입니다.
개인 개발자가 실제로 겪은 불편을 직접 해결하면서, 그 과정의 기술적 판단까지 공개한 좋은 Show GN 사례라고 볼 수 있겠습니다.