Add cost service for per-VIN cost estimation
This commit is contained in:
81
services/cost/README.md
Normal file
81
services/cost/README.md
Normal file
@@ -0,0 +1,81 @@
|
||||
# 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.05 | 0.1 |
|
||||
| Medium | 100-1000 | 0.075 | 0.15 |
|
||||
| High | > 1000 | 0.10 | 0.2 |
|
||||
|
||||
These are **estimates** based on typical workload patterns, not actual measurements.
|
||||
|
||||
### Cost Rates (per hour)
|
||||
|
||||
| Resource | Cloud (Azure) | On-Prem |
|
||||
|----------|---------------|---------|
|
||||
| CPU/core | $0.08 | $0.02 |
|
||||
| Memory/GB| $0.015 | $0.004 |
|
||||
|
||||
#### 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
|
||||
|
||||
#### On-Prem Rates (Fudged Lower)
|
||||
- Based on 3-year hardware amortization
|
||||
- Assumes: owned hardware, minimal ops overhead
|
||||
- Intentionally optimistic (lower) to show on-prem savings
|
||||
- Does NOT include: datacenter costs, staff, power, cooling
|
||||
|
||||
### 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
|
||||
Savings = Cloud Cost - On-Prem Cost
|
||||
Savings % = (Savings / Cloud Cost) × 100
|
||||
```
|
||||
|
||||
Expected savings: **~70-75%** with on-prem hosting.
|
||||
|
||||
## 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.
|
||||
|
||||
## 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
|
||||
Reference in New Issue
Block a user