Files
cloud-services/services/cost/README.md
Chris Rai 3f7f2d559f cost: bump rates to match actual Azure billing (~$65k/mo)
- 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
2026-02-01 00:19:29 -05:00

7.3 KiB
Raw Blame History

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:

  1. Querying vehicle activity from ClickHouse (message counts)
  2. Estimating resource usage based on activity level
  3. Applying cost rates for cloud vs on-prem hosting
  4. 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