DevTzu
Fly.io란? Fly.io로 Tesla Fleet Telemetry mTLS 수신 서버 구축하기 본문

Tesla Fleet Telemetry 서버를 만들 때 가장 먼저 고민하는 것은 「어디에 배포할까」입니다. 서버리스 플랫폼은 장시간 연결을 받기 어렵고, 일반 VM 클라우드는 설정과 운영 부담이 큽니다. 공식 저장소가 권장하는 Kubernetes까지 올리기엔 초기 비용도 부담됩니다.
이번 글에서는 Fly.io 소개, 필요한 이유, 기본 사용 방법, mTLS 수신 서버 개념, 그리고 Tesla Fleet Telemetry 서버로 Fly.io 단독이 최상의 선택인 이유를 정리합니다.
· Fly.io — Firecracker 기반 Machines를 전 세계 리전에 배포하는 앱 플랫폼
· 필요한 이유 — 상시 실행·TCP 443 수신·앱 레벨 mTLS 종료
· 기본 사용 —
fly launch → fly.toml → fly deploy· mTLS — 차량과 서버가 서로 인증서를 검증하는 양방향 TLS
· Fleet Telemetry — 차량이 WebSocket으로 직접 스트리밍 · mTLS는 Telemetry 서비스에서 종료
· 결론 — Telemetry 수신 서버는 Fly.io 하나로 충분하고, 가장 빠르게 안정 구축 가능
Fly.io란?

Fly.io는 애플리케이션을 전 세계 데이터센터에 배포하는 글로벌 앱 플랫폼입니다. 공식 문서 기준 핵심 실행 단위는 Fly Machines이며, Firecracker microVM 위에서 동작합니다.
서버리스처럼 요청이 올 때만 깨어나는 구조가 아니라, 항상 켜져 있는 프로세스를 VM으로 운영하는 데 맞춰져 있습니다. Docker 이미지를 그대로 올릴 수 있어 tesla/fleet-telemetry 같은 공식 컨테이너 배포에도 잘 맞습니다.
| 개념 | 역할 |
|---|---|
| Fly Machines | 실제 워크로드가 돌아가는 microVM |
| Fly Launch | fly launch, fly deploy, fly scale 등 앱 수명주기 관리 |
| Fly Apps | 여러 Machine을 묶어 관리하는 단위 |
| fly.toml | 포트·서비스·리전·스케일 설정 파일 |
Fly.io가 필요한 이유
모든 백엔드를 Fly.io에 올릴 필요는 없습니다. 다만 Tesla Fleet Telemetry처럼 아래 요구가 겹치면 Fly.io가 특히 유리합니다.
| 요구 | Fly.io가 맞는 이유 |
|---|---|
| 장시간 실행 | 서버리스 타임아웃 없이 프로세스 유지 |
| TCP 443 수신 | 외부에서 Telemetry 포트로 직접 연결 |
| 앱 레벨 mTLS | Fleet Telemetry 바이너리가 인증서를 직접 처리 |
| 컨테이너 배포 | 공식 Docker 이미지 그대로 사용 |
| 리전 선택 | 차량·사용자에 가까운 리전 배치 |
| 빠른 초기 구축 | Kubernetes 없이 단일 앱으로 시작 가능 |

Fly.io 기본 사용 방법
공식 Quickstart 흐름은 아래와 같습니다.
fly auth login으로 로그인fly launch — 앱 생성·리전·Dockerfile 감지fly.toml에서 내부 포트 443·공개 서비스 설정fly deploy 배포 · fly logs로 연결 상태 확인cd fleet-telemetry-project
fly launch
fly secrets set AIRBRAKE_PROJECT_KEY=...
fly deploy
fly status
| 명령 | 용도 |
|---|---|
fly launch |
앱 생성·초기 설정 |
fly deploy |
새 버전 배포 |
fly scale count |
Machine 수 조절 |
fly secrets set |
인증서·환경 변수 등록 |
fly logs |
Telemetry 연결·에러 로그 확인 |
tesla/fleet-telemetry 이미지를 단독 배포하는 편이 훨씬 빠릅니다. 이후 트래픽이 커지면 Kafka·Redis를 Fly.io 내부 앱으로 추가하거나 외부로 분리하면 됩니다.
mTLS 수신 서버란?
mTLS(Mutual TLS)는 일반 HTTPS와 달리 서버와 클라이언트가 서로 인증서를 검증하는 방식입니다. Tesla Fleet Telemetry에서는 차량이 클라이언트 인증서로 서버에 접속하고, 서버도 신뢰할 수 있는 인증서를 제시합니다.
| 구분 | 일반 HTTPS | mTLS |
|---|---|---|
| 서버 인증 | 클라이언트가 서버 인증서 검증 | 서버·클라이언트 양쪽 검증 |
| 클라이언트 인증 | 없음(또는 별도 로그인) | 차량 클라이언트 인증서 필수 |
| 종료 지점 | 로드밸런서·리버스 프록시 | Fleet Telemetry 서비스에서 직접 종료 |
Tesla Fleet Telemetry에서의 mTLS
공식 GitHub 저장소는 아래를 명시합니다.
- mTLS 연결은 Fleet Telemetry 서비스에서 종료해야 합니다
- 설정
tls블록에 server_cert, server_key 지정 - FQDN을 할당하고 차량·서버 설정에 동일 호스트명 사용
- 배포 후 check_server_cert.sh로 호스트·CA 호환성 검증
- 차량은 WebSocket으로 연결을 유지하며 Telemetry 레코드를 전송
"host": "telemetry.your-domain.com",
"port": 443,
"tls": {
"server_cert": "/etc/fleet-telemetry/server.crt",
"server_key": "/etc/fleet-telemetry/server.key"
},
"records": {
"V": ["kafka", "redis"],
"connectivity": ["kafka"]
}
}
Tesla Fleet Telemetry 서버 개요
Fleet Telemetry는 vehicle_data API를 반복 호출하는 폴링 방식보다, 차량이 서버로 직접 스트리밍하는 구조입니다. 불필요한 차량 깨우기를 줄이고 데이터 수집 비용을 낮추는 것이 목표입니다.
mTLS WebSocket
Fleet Telemetry
후속 처리
| 항목 | 내용 |
|---|---|
| 수집 방식 | 차량 → 서버 직접 스트리밍 |
| 연결 프로토콜 | WebSocket + mTLS |
| 서버 요건 | 공개 인터넷 · FQDN · 포트 443(기본) |
| 후속 처리 | Kafka(권장), Redis, Kinesis 등 Dispatcher |
| 모니터링 | Prometheus 메트릭 · connectivity 이벤트 |
| 장애 대응 | 버퍼링 · 재연결 · fleet_telemetry_errors API |
왜 Fly.io 단독이 최상의 선택인가
Telemetry 수신 서버는 「프론트엔드 호스팅」과 다른 문제입니다. 차량이 직접 붙는 mTLS + WebSocket + 상시 실행 서버가 핵심이므로, 이 역할에 Fly.io 단독 구성이 가장 현실적입니다.
| 플랫폼 | Fleet Telemetry 적합도 | 이유 |
|---|---|---|
| Fly.io | ★★★★★ | 상시 VM · Docker · TCP 443 · mTLS 앱 종료 · 빠른 배포 |
| 서버리스(Vercel 등) | ★☆☆☆☆ | 장시간 WebSocket·mTLS 종료 구조에 부적합 |
| 일반 VM(EC2 등) | ★★★☆☆ | 가능하지만 방화벽·로드밸런서·배포 자동화를 직접 구성 |
| Kubernetes | ★★★★☆ | 공식 Helm 지원 · 대규모에 적합 · 초기 운영 비용 큼 |
| 로컬 터널 | ★☆☆☆☆ | 개발 테스트용 · 프로덕션 FQDN·인증서 요건 미충족 |
Fly.io 단독이 최상인 이유 6가지
공식 요구사항과 구조가 정확히 맞는다
Fleet Telemetry는 mTLS를 서비스에서 직접 종료해야 합니다. Fly.io Machine 위에서 tesla/fleet-telemetry 바이너리나 컨테이너가 443 포트를 열고 인증서를 읽는 패턴이 공식 설치 가이드와 동일합니다.
Kubernetes 없이도 프로덕션 수준으로 시작할 수 있다
공식 저장소는 Helm Chart를 권장하지만, 소규모·개인·초기 서비스에는 과합니다. Fly.io는 fly launch 한 번으로 VM·공개 주소·배포 파이프라인을 갖추고, 나중에 필요할 때만 스케일을 키우면 됩니다.
장시간 WebSocket 연결에 유리하다
차량은 연결을 유지하며 데이터를 밀어 넣습니다. 서버리스의 실행 시간 제한과 달리 Fly.io Machines는 프로세스가 계속 살아 있는 구조라 재연결·버퍼 플러시 상황에도 안정적입니다.
Docker 이미지를 그대로 올릴 수 있다
공식 tesla/fleet-telemetry Docker 이미지를 Fly.io에 배포하면, 로컬에서 검증한 설정을 거의 그대로 프로덕션에 옮길 수 있습니다. EC2처럼 OS 패치·런타임 설치를 직접 관리할 필요가 적습니다.
후속 파이프라인까지 한 플랫폼에서 확장 가능하다
Telemetry 수신 후 Kafka·Redis·모니터링 앱을 Fly.io 내부의 별도 앱으로 두거나, 외부 매니지드 서비스와 연결할 수 있습니다. 수신 서버만 Fly.io로 시작해도 아키텍처가 단순합니다.
초기 비용 대비 운영 효율이 높다
EC2+로드밸런서+오토스케일링을 직접 붙이거나, EKS 클러스터를 유지하는 것보다 Fly.io 단일 앱이 구축 속도·월 운영 부담 면에서 유리합니다. 차량 수가 늘면 fly scale로 Machine 수만 조절하면 됩니다.
Fly.io 단독 구축 순서
fleet-telemetry 앱 생성 · server_config.json 작성synced: true 확인 후 Fly.io 로그·Prometheus·fleet_telemetry_errors로 수신 점검
자주 묻는 질문 (FAQ)
Q. Fleet Telemetry 서버를 Vercel이나 Netlify에 올릴 수 있나요?
권장되지 않습니다. 이들 플랫폼은 HTTP·서버리스 중심이고, Fleet Telemetry는 차량의 지속 WebSocket 연결 + 앱 레벨 mTLS 종료가 필요합니다.
Q. 공식 Helm Chart가 있는데 왜 Fly.io인가요?
Helm은 대규모·다중 리전 운영에 적합합니다. 반면 초기 구축·소규모 서비스는 Fly.io 단독이 배포 속도와 운영 단순성에서 유리합니다. 트래픽이 커지면 그때 Kubernetes로 이전해도 됩니다.
Q. EC2 하나로도 되지 않나요?
가능합니다. 다만 공개 IP·방화벽·배포·모니터링·인증서 갱신을 직접 관리해야 합니다. Fly.io는 이 중 상당수를 플랫폼이 흡수해 같은 목적을 더 빨리 달성할 수 있습니다.
Q. Kafka 없이 Redis만으로 시작할 수 있나요?
가능합니다. 공식 저장소는 Kafka를 권장하지만 Redis Pub/Sub Dispatcher도 지원합니다. 초기에는 Redis만 연결해 수신 여부를 확인하고, 이후 Kafka로 확장하는 전략이 흔합니다.
체크포인트
- Fly.io = Machines 기반 ·
fly launch/fly deploy로 빠른 배포 - mTLS = Fleet Telemetry 서비스에서 직접 종료 · 프록시 앞단 종료 금지
- 차량 연결 = WebSocket · 상시 실행 서버 필수
- FQDN + check_server_cert.sh 검증은 배포 전 필수
- Telemetry 수신 서버는 Fly.io 단독이 요구사항·속도·운영 효율 모두에서 최상
마무리
Tesla Fleet Telemetry 서버를 만들 때 중요한 것은 화려한 아키텍처가 아니라, 차량이 신뢰하고 붙을 수 있는 mTLS 수신 엔드포인트를 안정적으로 운영하는 것입니다.
서버리스는 이 역할에 맞지 않고, Kubernetes는 초기에 무겁습니다. Fly.io 단독이면 공식 Docker 이미지·mTLS 종료·443 수신·글로벌 배포를 한곳에서 해결할 수 있어, Fleet Telemetry 입문과 프로덕션 초기 운영 모두에 가장 현실적인 선택입니다.
Fly.io 단독 Telemetry 서버입니다.
#Fly.io #TeslaFleetTelemetry #mTLS #FleetAPI #테슬라 #백엔드 #인프라 #WebSocket #서버구축 #Telemetry
'review' 카테고리의 다른 글
| 법인차란? 운행일지·연두색 번호판·세금 한도 총정리 (1) | 2026.07.17 |
|---|---|
| 2026 하반기 달라지는 제도 총정리 — 단기 육아휴직·통합 앱·AI 정부24·노란우산 (0) | 2026.07.16 |
| Claude Code로 IR PPT 발표 자료 만들기 — 잘 만들기 위한 준비 단계 정리 (0) | 2026.07.15 |
| 2026년 제1기 확정 부가세 — 신고 기간·대상·홈택스 방법 총정리 (0) | 2026.07.14 |
| Claude Code란? 설치방법·기본 사용법·ChatGPT 차이점까지 한 번에 (1) | 2026.07.14 |