- Increased CPU/memory rates and per-VIN resource estimates - Added base infrastructure cost distribution across active VINs - Updated README with projected costs for 5000 vehicles - Image: fiskercloud.azurecr.io/cost:v6
Cost Service
Per-vehicle cost estimation service for capacity planning and cloud vs on-prem comparison.
Overview
This service estimates the cost of running cloud services per VIN by:
- Querying vehicle activity from ClickHouse (message counts)
- Estimating resource usage based on activity level
- Applying cost rates for cloud vs on-prem hosting
- Storing aggregated cost data for reporting
Cost Estimation Methodology
Resource Estimates Per Active VIN
| Activity Level | Messages/15min | CPU (cores) | Memory (GB) |
|---|---|---|---|
| Low | < 100 | 0.60 | 1.00 |
| Medium | 100-1000 | 0.90 | 1.50 |
| High | > 1000 | 1.20 | 2.00 |
These estimates account for the full data pipeline per vehicle:
- Data ingestion (MQTT/HTTP endpoints)
- Kafka message processing
- Stream processing and transformations
- ClickHouse storage and queries
- Redis caching
- MongoDB document storage
- API serving
Base Infrastructure Costs
Shared infrastructure costs are distributed across active vehicles each collection interval:
| Component | Cloud ($/15min) | On-Prem ($/15min) |
|---|---|---|
| Storage, Event Hubs, Defender, monitoring | $7.00 | $0.90 |
Cost Rates (per hour)
| Resource | Cloud (Azure) | On-Prem |
|---|---|---|
| CPU/core | $0.20 | $0.02 |
| Memory/GB | $0.05 | $0.005 |
Cloud Rates (Fudged Higher)
- Based on Azure D-series VM pricing + 50% managed services overhead
- Includes: AKS compute, managed Kafka (Event Hubs), CosmosDB, Azure Storage, networking, monitoring
- Intentionally conservative (higher) to show true cloud TCO
On-Prem Rates (Fudged Lower)
- Based on 3-year hardware amortization only
- Assumes: owned hardware, minimal ops overhead
- Intentionally optimistic (lower) to show on-prem savings
- Does NOT include: datacenter costs, staff, power, cooling, network, maintenance
Savings Calculation
Per-VIN Cost = (CPU_cores × rate + Memory_GB × rate) × hours + (base_infra / active_vins)
Cloud Cost = Per-VIN costs summed across fleet
On-Prem Cost = Same formula with on-prem rates
Savings = Cloud Cost - On-Prem Cost
Savings % = (Savings / Cloud Cost) × 100
Expected savings: ~85-88% with on-prem hosting (hardware costs only).
Projected Annual Costs (5000 vehicles)
Based on actual Azure billing (~$65k/month):
| Metric | Cloud | On-Prem |
|---|---|---|
| Monthly Cost | ~$65,000 | ~$9,500 |
| Annual Cost | ~$780,000 | ~$114,000 |
| Per Vehicle/Month | ~$13.00 | ~$1.90 |
| Annual Savings | ~$666,000 (85%) | - |
API Endpoints
GET /cost/vin/{vin}
Cost summary for a specific VIN.
GET /cost/fleet
Fleet-wide cost summary with top cost VINs.
GET /cost/summary?period=day|week|month
High-level cost summary for a time period.
GET /cost/comparison
Cloud vs on-prem cost comparison with projected annual savings.
GET /cost/report
Plain text report for terminal viewing.
Accessing the Report
The service is deployed internally on cec-prd-cluster-1 (no public ingress). To view the report:
# Quick one-liner
kubectl --context cec-prd-cluster-1 run curl-test --image=curlimages/curl --rm -it --restart=Never -- curl -s http://cost.default.svc.cluster.local:8077/cost/report
# Or port-forward and curl locally
kubectl --context cec-prd-cluster-1 port-forward svc/cost 8077:8077 &
curl http://localhost:8077/cost/report
Example Report Output
╔══════════════════════════════════════════════════════════════════╗
║ COST SERVICE REPORT ║
╠══════════════════════════════════════════════════════════════════╣
║ Period: 2026-01-01 to 2026-02-01
╠══════════════════════════════════════════════════════════════════╣
║ FLEET OVERVIEW ║
║ ─────────────────────────────────────────────────────────────── ║
║ Active Vehicles: 81
║ Cloud Cost: $0.58
║ On-Prem Cost: $0.09
║ Savings: $0.50 (85.2%)
╠══════════════════════════════════════════════════════════════════╣
║ COST RATES ║
║ ─────────────────────────────────────────────────────────────── ║
║ Cloud: CPU $0.120/core-hr Memory $0.0250/GB-hr
║ On-Prem: CPU $0.015/core-hr Memory $0.0030/GB-hr
╠══════════════════════════════════════════════════════════════════╣
║ ANNUAL PROJECTION (based on current usage) ║
║ ─────────────────────────────────────────────────────────────── ║
║ Cloud Annual: $6.99
║ On-Prem Annual: $1.04
║ Annual Savings: $5.96
╚══════════════════════════════════════════════════════════════════╝
TOP COST VEHICLES:
VIN Cloud $ On-Prem $ Savings %
─────────────────── ────────── ────────── ────────
VCF1EBU20PG009666 0.01 0.00 85.2%
VCF1EBU29PG011061 0.01 0.00 85.2%
VCF1UBU20PG006530 0.01 0.00 85.2%
...
Note: Costs shown are from a short collection period. Numbers accumulate over time as the collector runs every 15 minutes.
Configuration
| Env Var | Description | Default |
|---|---|---|
| CLICKHOUSE_HOST | Local CH for storing cost data | localhost |
| REMOTE_CLICKHOUSE_HOST | Dev cluster CH for VIN activity | - |
| COLLECTOR_INTERVAL_MINUTES | How often to collect metrics | 15 |
Limitations
- Resource estimates are approximations, not actual measurements
- Cost rates are simplified and don't reflect all real-world factors
- On-prem costs exclude significant operational overhead
- Designed for business case illustration, not precise billing