Total Cost of Ownership
Include ops, on-call, and migration cost — not just the cloud invoice — when comparing options.
Why
The cloud invoice is 30-50% of what a service actually costs to run; the rest is the engineering time to operate it, the on-call burden when it breaks, and the migration cost if you ever leave. A TCO analysis that includes '2 engineers × 20% time to operate Kafka' often reverses the decision vs. looking at just the managed-service price. Teams that compare only invoice costs routinely pick the 'cheaper' option that costs 3x more in engineering hours, because ops time doesn't show up on a bill but it does show up in burnout and missed features.
When
When choosing between build-vs-buy or managed-vs-self-hosted. Takes half a day. Skip for decisions where ops cost is negligible.
How
1. Cloud cost (from the cost model) — the invoice line 2. Ops cost — engineer-hours/month × loaded hourly rate - Estimate: patching, upgrades, incident response, capacity tuning 3. On-call cost — pages/month × hours-to-resolve × hourly rate - Use historical incident data from a similar system 4. Migration cost (if switching) — one-time engineer-weeks × rate 5. Opportunity cost — features delayed by the ops burden 6. Sum all five for each option; decide on the 3-year TCO, not month-1 7. Document the TCO in the ADR so the assumptions are auditable
Example
Option A: self-hosted Kafka on EC2 Cloud: $400/mo Ops: 2 eng × 20% × $80/hr × 160h = $5,120/mo On-call: 4 pages/mo × 3h × $80 = $960/mo 3-yr TCO: ($400+$5,120+$960) × 36 = $233,280 Option B: MSK (managed Kafka) Cloud: $1,200/mo Ops: 0.5 eng × 10% × $80 × 160 = $640/mo On-call: 1 page/mo × 1h × $80 = $80/mo 3-yr TCO: ($1,200+$640+$80) × 36 = $69,120 → MSK is 3x cheaper on TCO despite 3x higher invoice.
Common Problems
- ⚠Counting only month-1 cost — managed services look expensive early but win over 3 years as self-hosted ops accumulates.
Best Practices
- ✓Use a 3-year horizon — shorter hides the ops cost that compounds; longer is too speculative.
- ✓Get ops estimates from a team currently running the technology, not vendor whitepapers — vendors undercount ops.