Skip to content
Back to Architecture Decisions

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.

Related Resources