Add cost service for per-VIN cost estimation
- Estimates cloud vs on-prem costs per active vehicle - Queries feature_table_last_shard from ClickHouse (lightweight) - 85% savings estimate with on-prem (hardware only) - Deployed to cec-prd-cluster-1 (internal only) - Text report endpoint at /cost/report
This commit is contained in:
@@ -16,40 +16,47 @@ This service estimates the cost of running cloud services per VIN by:
|
||||
|
||||
| Activity Level | Messages/15min | CPU (cores) | Memory (GB) |
|
||||
|---------------|----------------|-------------|-------------|
|
||||
| Low | < 100 | 0.05 | 0.1 |
|
||||
| Medium | 100-1000 | 0.075 | 0.15 |
|
||||
| High | > 1000 | 0.10 | 0.2 |
|
||||
| Low | < 100 | 0.15 | 0.25 |
|
||||
| Medium | 100-1000 | 0.225 | 0.375 |
|
||||
| High | > 1000 | 0.30 | 0.50 |
|
||||
|
||||
These are **estimates** based on typical workload patterns, not actual measurements.
|
||||
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
|
||||
|
||||
### Cost Rates (per hour)
|
||||
|
||||
| Resource | Cloud (Azure) | On-Prem |
|
||||
|----------|---------------|---------|
|
||||
| CPU/core | $0.08 | $0.02 |
|
||||
| Memory/GB| $0.015 | $0.004 |
|
||||
| CPU/core | $0.12 | $0.015 |
|
||||
| Memory/GB| $0.025 | $0.003 |
|
||||
|
||||
#### Cloud Rates (Fudged Higher)
|
||||
- Based on Azure D-series VM pricing + 20% overhead
|
||||
- Includes: compute, managed services, networking, support
|
||||
- Intentionally conservative (higher) to show cloud costs
|
||||
- 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
|
||||
- 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
|
||||
- Does NOT include: datacenter costs, staff, power, cooling, network, maintenance
|
||||
|
||||
### Savings Calculation
|
||||
|
||||
```
|
||||
Cloud Cost = (CPU_cores × $0.08 + Memory_GB × $0.015) × hours
|
||||
On-Prem Cost = (CPU_cores × $0.02 + Memory_GB × $0.004) × hours
|
||||
Cloud Cost = (CPU_cores × $0.12 + Memory_GB × $0.025) × hours
|
||||
On-Prem Cost = (CPU_cores × $0.015 + Memory_GB × $0.003) × hours
|
||||
Savings = Cloud Cost - On-Prem Cost
|
||||
Savings % = (Savings / Cloud Cost) × 100
|
||||
```
|
||||
|
||||
Expected savings: **~70-75%** with on-prem hosting.
|
||||
Expected savings: **~85-88%** with on-prem hosting (hardware costs only).
|
||||
|
||||
## API Endpoints
|
||||
|
||||
@@ -65,6 +72,60 @@ 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:
|
||||
|
||||
```bash
|
||||
# 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 |
|
||||
|
||||
Reference in New Issue
Block a user