Total Cost of Ownership (TCO) Analysis Template
Multi-year TCO comparison of options by cost category, with NPV discounting, sensitivity, break-even and recommendation
Mode d'emploi: Use when choosing between options whose costs differ in timing or type, such as self-hosting versus SaaS. Fix scope, horizon, currency and discount rate first, then fill every cost category for every option. The main pitfall is under-counting people and exit costs; keep all arithmetic visible.
Aperçu
Total Cost of Ownership Analysis: [Solution or decision name]
Total cost of ownership (TCO) analysis comparing two or more options over a fixed horizon: scope, cost categories (acquisition, implementation, operations, licences, people, infrastructure, exit), year-by-year cost tables, discounting to net present value, sensitivity analysis, assumptions and a recommendation. Based on common industry practice for TCO and discounted cash-flow comparison. Replace every
[bracketed]value and every figure marked Example. This is a format for analysis, not financial advice; agree the discount rate and accounting treatment with your finance team.
| Field | Value |
|---|---|
| Document ID | [TCO-001] |
| Decision supported | [e.g. Self-host versus SaaS for the observability platform] |
| Version | [0.1] |
| Status | [Draft / In review / Approved] |
| Owner | [@architect] |
| Finance reviewer | [@finance-partner] |
| Last updated | YYYY-MM-DD |
| Related | [Technology selection TS-NNN], [ADR-NNN], [Business case] |
1. Scope and horizon
[Describe the capability, the user population and the volumes being costed. List anything explicitly out of scope.]
Example: Observability platform (logs, metrics, traces) for 140 services, 2 TB of logs per day, 30-day hot retention, 400 engineers with read access. Out of scope: security information and event management (SIEM), which has its own budget line.
| Parameter | Value |
|---|---|
| Options compared | Example: A = self-hosted open-source stack; B = SaaS observability vendor |
| Horizon | Example: Year 0 (set-up) plus 3 operating years |
| Currency and basis | Example: USD thousands, nominal (includes expected price rises) |
| Discount rate | Example: 8% per year, supplied by [finance] |
| Timing convention | Example: Year 0 costs at start; Years 1 to 3 costs at year end |
| Volume growth | Example: Flat volumes; growth tested in section 5 |
2. Cost categories
| Category | Includes | Excludes |
|---|---|---|
| Acquisition | Hardware purchase, perpetual licences, one-off vendor fees, procurement costs | Recurring subscriptions |
| Implementation | Design, build, configuration, data migration, integration, training, consultants | Run-state staff |
| Licences | Subscriptions, support contracts, usage-based fees | One-off perpetual licences |
| Infrastructure | Compute, storage, network egress, backup, environments | Vendor-hosted costs inside the subscription |
| People | Loaded cost of staff who operate, maintain and support the solution | Implementation project staff |
| Operations | Monitoring, incident tooling, audits, certificates, minor tooling | Staff time (counted under people) |
| Exit | Data export, parallel running, decommissioning, contract termination fees | Costs of the successor solution |
Hidden costs to check for each option: [list]. Example: egress fees, premium support tiers, compliance audits, on-call allowances, retraining when staff leave, and the cost of the old system running in parallel.
3. Cost tables per option
3.1 Option A: [Self-hosted open-source stack]
Values in USD thousands. Year 0 is set-up; Years 1 to 3 are operating years.
| Category | Year 0 | Year 1 | Year 2 | Year 3 | Total |
|---|---|---|---|---|---|
| Acquisition | Example: 40 | 0 | 0 | 0 | 40 |
| Implementation | 120 | 0 | 0 | 0 | 120 |
| Licences (support contract) | 0 | 10 | 10 | 10 | 30 |
| Infrastructure | 30 | 60 | 60 | 60 | 210 |
| People (1 FTE platform engineer, loaded) | 0 | 150 | 150 | 150 | 450 |
| Operations | 0 | 20 | 20 | 20 | 60 |
| Exit | 0 | 0 | 0 | 30 | 30 |
| Total | 190 | 240 | 240 | 270 | 940 |
Notes: [sources]. Example: infrastructure from the cloud cost calculator for 18 storage-optimised nodes; people cost at the internal loaded rate of 150 per FTE-year.
3.2 Option B: [SaaS observability vendor]
| Category | Year 0 | Year 1 | Year 2 | Year 3 | Total |
|---|---|---|---|---|---|
| Acquisition (onboarding fee) | Example: 10 | 0 | 0 | 0 | 10 |
| Implementation | 80 | 0 | 0 | 0 | 80 |
| Licences (subscription, +5% per year) | 0 | 180 | 189 | 198 | 567 |
| Infrastructure | 0 | 0 | 0 | 0 | 0 |
| People (0.33 FTE administrator) | 0 | 50 | 50 | 50 | 150 |
| Operations | 0 | 10 | 10 | 10 | 30 |
| Exit (data export, dual running) | 0 | 0 | 0 | 40 | 40 |
| Total | 90 | 240 | 249 | 298 | 877 |
Notes: Example: subscription from vendor quote Q-2291 dated YYYY-MM-DD, with the 5% annual uplift in the draft contract; Year 3 uplift rounded to 198.
3.3 Option [C]: [Name]
[Repeat the table for each further option, or delete this subsection. Include a "do nothing" option when the current solution has a running cost that would continue.]
4. Discounting and net present value
The net present value of the cost stream of an option is
where is the total cost in year , is the discount rate and is the last year of the horizon. With the discount factors are , , and for Years 0 to 3.
| Year | Factor | Option A cost | Option A PV | Option B cost | Option B PV |
|---|---|---|---|---|---|
| 0 | 1.0000 | 190 | 190.0 | 90 | 90.0 |
| 1 | 0.9259 | 240 | 222.2 | 240 | 222.2 |
| 2 | 0.8573 | 240 | 205.8 | 249 | 213.5 |
| 3 | 0.7938 | 270 | 214.3 | 298 | 236.6 |
| Total | 940 | 832.3 | 877 | 762.3 |
Example result: Option B has the lower NPV of cost by thousand, about 8% of Option A. Present values are computed with unrounded factors and then rounded to one decimal.
Cost per unit of value, where useful: [e.g. cost per GB ingested, per user, per transaction]. Example: Option B costs thousand USD per TB ingested over the horizon, about USD 400 per TB.
5. Sensitivity analysis
| Scenario | Change | Option A NPV | Option B NPV | Lower cost |
|---|---|---|---|---|
| Baseline | As in sections 3 and 4 | 832.3 | 762.3 | B |
| Example: Vendor uplift 10% per year | B licences 180 / 198 / 218 | 832.3 | 785.9 | B |
| Example: Self-host needs 1.2 FTE | A people 180 per year; Year 3 total 300 | 909.6 | 762.3 | B |
| Example: Discount rate 5% | Factors 0.9524 / 0.9070 / 0.8638 | 869.5 | 801.8 | B |
| [Scenario] | [Change] | [ ] | [ ] | [ ] |
Break-even: [state the value of the key input at which the options cost the same]. Example: holding everything else at baseline, Option B's Year 1 to 3 subscription would have to be about 70.0 / (0.9259 + 0.8573 + 0.7938) 27 thousand per year higher, that is roughly 207 instead of 180 in Year 1, before Option A becomes cheaper.
Qualitative factors not priced: [list]. Example: SaaS removes on-call burden for the platform; self-hosting keeps data in our own account, which simplifies some customer audits.
6. Assumptions
| ID | Assumption | Value | Source | Confidence |
|---|---|---|---|---|
| AS-01 | Example: Loaded cost per platform engineer FTE-year | 150 | HR finance rate card YYYY | High |
| AS-02 | Example: Log volume per day | 2 TB, flat | 90-day average from current platform | Medium |
| AS-03 | Example: Vendor annual price uplift | 5% | Draft contract clause | Medium |
| AS-04 | Example: Exit costs incurred in final year | Yes | Architecture team estimate | Low |
| AS-05 | Example: Discount rate | 8% | Finance policy | High |
| [AS-nn] | [Assumption] | [Value] | [Source] | [H/M/L] |
7. Recommendation
Example: Choose Option B. It has the lower NPV of cost in every tested scenario (762.3 versus 832.3 thousand USD at baseline), removes a dedicated on-call rota, and the break-even subscription increase of about 15% gives a reasonable margin. Conditions: cap the annual uplift at 7% in the contract, and re-run this analysis if daily log volume exceeds 3 TB, because usage-based fees then dominate.
| Field | Value |
|---|---|
| Recommended option | [Option] |
| NPV of cost advantage | [Amount and %] |
| Key conditions | [Conditions] |
| Decision owner | [@name] |
| Re-run trigger | [Event or date] |
8. Approval
| Role | Name | Decision | Date |
|---|---|---|---|
| Architecture owner | [@name] | [Approved / Changes requested] | YYYY-MM-DD |
| Finance partner | [@name] | [Decision] | YYYY-MM-DD |
| Budget holder | [@name] | [Decision] | YYYY-MM-DD |
Standard and licence note
Based on common industry practice for total cost of ownership analysis and discounted cash-flow (net present value) comparison. Original text written for this collection; example figures are illustrative. This template is a format for analysis, not financial advice. Template licence: MIT.
Modèles associés
Software Architecture Document Template (4+1 Views)
SAD with Kruchten 4+1 views – goals and constraints, scenarios, logical, process, development, physical views, sizing, view mapping
Architecture & Conception systèmeCloud Architecture Review Template (Six Pillars)
Well-architected style review across six pillars: questions, current state, high/medium/none risk, improvement plan, sign-off
Architecture & Conception systèmeData Dictionary Template
Business and technical definitions per attribute: type, format, allowed values, source, owner, classification, code lists, derived fields