Infrastructure Cost per Application

Infrastructure Cost per Application

Goal of the analysis:

Quantify and attribute infrastructure costs (cloud and on‑prem) to each application/service to reveal true run economics, identify cost drivers, and target optimization without compromising reliability or performance. Executives use this to compare cost-to-value across products, prioritize modernization, and validate business cases (e.g., cloud migration, decommissioning). A robust, defensible allocation improves transparency, enables unit economics (cost per user/transaction), and supports vendor and architecture decisions.

Data required:

  • Cost sources (numerator):
    • Cloud bills (detailed usage/line items, tags/labels, accounts/subscriptions, reservations/commitments, discounts, credits).
    • On‑prem costs: data center occupancy (power, space, cooling), hardware depreciation/amortization, support/maintenance, network, storage, backup, virtualization/containers platform licenses, managed services.
    • Security and shared platform costs (e.g., logging/observability, identity, backup, DR).
  • Usage and allocation drivers:
    • Compute: instance hours, vCPU/memory hours, container/node hours, autoscaling metrics.
    • Storage: GB‑months by tier, IOPS/throughput, snapshots/backup volumes, object lifecycle class.
    • Network: egress/ingress GB, inter‑AZ/region/Internet, CDN offload.
    • Database/managed services: instance hours, request counts, capacity units.
    • On‑prem: vCPU/memory allocation from hypervisor, TB used/provisioned, port counts, backup volumes.
  • Application mapping and metadata:
    • CMDB/service catalog: application → component → infrastructure mapping, ownership, criticality tier, environments (prod/non‑prod), regions.
    • Resource tags/labels (app, service, env, owner, cost center), Kubernetes namespaces, account/project IDs.
    • Release/change calendars to interpret spikes.
  • Context and financial policies:
    • TBM taxonomy (Apps/Infra/End‑user/Security), capitalization vs expense rules, FX rates, fiscal calendar.
    • Scope choices (what counts as “infrastructure,” inclusion of platform and shared security services).
  • Systems and sources:
    • Cloud billing (CUR/BigQuery/Azure Cost Management), FinOps tools, ERP/GL, CMDB, virtualization/K8s platforms, storage/NW monitors, logging/observability tools, data warehouse/BI.

Detailed step-by-step instruction on how to conduct the analysis:

  1. Define scope and unit of analysis:
    • Application = business service or product (not individual microservices unless required). Break out environments (prod, non‑prod) and regions.
    • Cost views: cash (OpEx + CapEx) and P&L (OpEx + D&A). Decide treatment of shared platforms and security (allocate vs show separately).
  2. Extract costs and drivers:
    • Cloud: export detailed usage with tags/labels, reservation/Savings Plan coverage, discounts, credits.
    • On‑prem: collect asset registers with depreciation schedules; data center costs; support contracts; hypervisor stats; storage/NW usage.
    • Shared services: logging, monitoring, identity, backup, DR contracts and usage signals.
  3. Normalize and reconcile:
    • Standardize fiscal periods and currencies; map to TBM categories; ensure totals reconcile to GL/ERP and cloud invoices.
    • Clean tags/labels; create a mapping table from resource/namespace/account to application and environment; quantify tagging coverage (% of cost with reliable tags).
  4. Classify cost as direct vs shared:
    • Direct: resources exclusively used by one application (tagged instances, dedicated DBs, app‑specific storage).
    • Shared: multi‑tenant clusters, shared storage arrays, network backbone, security/observability platforms.
  5. Define allocation drivers and methods:
    • Compute pools (VM/K8s): allocate by vCPU‑hours and GB‑RAM‑hours (weighted), or container/node usage metrics.
    • Storage arrays/object stores: GB‑months by tier; apply IOPS/throughput weighting for high‑performance tiers.
    • Network: allocate egress GB by app source; if unavailable, apportion by direct cost share or request counts.
    • Security/observability: allocate by log/event volume, host count, or % of direct infra costs when metering is absent.
    • Overheads: add reasonable adders for facilities/ops (e.g., % of direct on‑prem costs) to ensure full cost recovery.
  6. Allocate and validate:
    • Apply driver-based allocation to shared pools; preserve a “not‑allocatable” bucket for transparency (work to reduce it).
    • Reconcile: allocated total = 100% of scoped infra spend; review outliers with platform owners.
  7. Compute metrics per application (by month/quarter and TTM):
    • Total infrastructure cost and split: compute, storage, network, database/managed services, security/observability.
    • Environment split: prod vs non‑prod share; region split.
    • Unit economics (where feasible): cost per active user, per transaction/request, per GB processed/stored.
    • Utilization signals: reservation/commitment coverage and savings, CPU/memory utilization bands, storage tier mix, non‑prod scheduling adherence.
    • Coverage/quality: % cost tagged/allocated, “unknown” share, driver quality score.
  8. Variance and drivers:
    • Bridge vs prior period: price/rate (e.g., vendor increases), volume/consumption, mix (tier/region/env), architecture changes (new service, refactor), FX.
    • Identify top movers and the categories driving change (e.g., storage snapshots growth, egress spikes).
  9. Segment and benchmark internally:
    • By application tier (critical vs non‑critical), lifecycle (legacy vs modern), hosting model (cloud/on‑prem/managed), BU/product, vendor‑managed vs in‑house.
    • Compare peers with similar scale/traffic; derive internal quartiles for cost per user/transaction.
  10. Validate with owners and institutionalize:
    • Review allocations and drivers with app/platform owners; resolve mis‑tagged resources; agree on unit metrics.
    • Automate monthly refresh; enforce tagging policy and periodic driver recalibration; publish a living dashboard.

Format of the output of analysis:

  • Executive summary: top 10 most expensive applications, key drivers of change, non‑prod share, allocation coverage, and savings opportunities.
  • Application cost tables: total and by component (compute/storage/network/DB/security), prod vs non‑prod, region split.
  • Waterfall/bridge charts: change vs prior period decomposed into price, volume, mix, architecture, FX.
  • Pareto chart of application infra spend with cumulative share; heat map by BU/product and hosting model.
  • Unit economics panel: cost per user/transaction/request with trend and peer quartiles.
  • FinOps panel: reservation/commitment coverage, utilization bands, storage tier mix, tagging/coverage score.
  • Exception list: unallocated/untagged costs, orphaned resources, idle/underutilized assets with owners and remediation due dates.

How to interpret results:

  • High cost can be justified by scale or critical SLAs; scrutinize when driven by non‑prod sprawl, low utilization, premium tiers without need, or data egress patterns.
  • Prod vs non‑prod: non‑prod consistently above ~30–40% of total often indicates oversizing or poor scheduling; investigate “off hours” shutdowns and test data retention.
  • Compute heavy vs storage heavy profiles suggest different levers (rightsizing/auto‑scaling vs tiering/lifecycle).
  • Rising egress or inter‑region traffic may point to architecture inefficiencies; consider CDN, regionalization, or co‑location of dependent services.
  • Low tagging/coverage undermines confidence; prioritize data quality before making big decisions.
  • Unit economics: compare cost per transaction/user to business value; high cost density with low usage is a candidate for rationalization or re‑platforming.

Steps a company can take to improve on this measure:

  • FinOps and data discipline:
    • Enforce mandatory tagging/labels (app, env, owner, cost center) with policy‑as‑code; target >90% cost coverage.
    • Standardize allocation drivers and document methodology; review quarterly with platform owners.
  • Cloud efficiency levers:
    • Rightsize instances and DBs; enable auto‑scaling; schedule non‑prod shutdowns; adopt spot/preemptible where safe.
    • Increase reservation/Savings Plan coverage; optimize region/AZ selection; eliminate idle/orphaned resources.
    • Storage lifecycle and tiering; prune snapshots; compress/partition cold data; use CDN to reduce egress.
    • Improve K8s/bin‑packing and quotas; remove over‑requests for CPU/RAM.
  • On‑prem optimization:
    • Increase virtualization/container density; reclaim stranded capacity; align chargeback to consumption, not allocation.
    • Tier storage; modernize backup/retention; consolidate arrays; decommission underused hardware.
  • Architecture and product changes:
    • Refactor hotspots (chatty cross‑region calls, heavy synchronous IO); cache where appropriate; adopt managed services where TCO is lower.
    • Rationalize/retire duplicate applications; avoid “lift‑and‑shift” running indefinitely without optimization.
  • Commercial and governance:
    • Negotiate enterprise discounts tied to commitments with flexibility; align contract terms to decommission milestones.
    • Set cost SLOs/guardrails (e.g., non‑prod ≤35% of infra spend; RI coverage ≥70%) and review in operations forums.
  • Targeted actions by signal:
    • If non‑prod share is high: implement schedule enforcement, ephemeral test environments, and data retention policies.
    • If storage dominates: move cold data to cheaper tiers, shorten snapshot retention, and deduplicate assets.
    • If egress spikes: add CDN/edge, co‑locate services, or redesign integrations to reduce cross‑region chatter.

Benchmark comparisons:

General benchmarks:

  • Tagging/coverage: aim for ≥90% of infra cost reliably tagged and allocated; unallocated “unknown” <5–10%.
  • Environment mix: non‑prod infra cost commonly 25–40% of total; >50% warrants review of scheduling and sizing.
  • Commitment coverage: mature cloud practices sustain 60–80% coverage with reservations/commitments on steady workloads.
  • Utilization targets: steady‑state CPU/RAM utilization bands of 40–60% (post headroom) are typical; materially lower suggests over‑provisioning.

Segment- or industry-specific benchmarks:

  • Customer‑facing, spiky workloads: higher network/CDN share and variable compute; autoscaling and spot usage should be visible in the mix.
  • Data/analytics platforms: storage and IO dominate; effective tiering should hold hot storage to a minority of TB‑months.
  • Regulated/mission‑critical apps: higher redundancy/DR overhead; compare within the same criticality tier, not against internal tools.

External $/application ranges vary widely by scale and architecture, making broad comparisons unreliable. Construct internal benchmarks: track cost per application (and per unit, e.g., user/transaction) over 4–8 quarters by archetype and criticality; set targets at internal top quartile; manage to guardrails (tagging coverage, non‑prod share, commitment coverage, utilization) to drive sustained improvements.

How to get started

1

arrow-down-blue

Tell us about your project

2

arrow-down-blue

Interview candidates

(We’ll provide bios within 48 hours on average)

3

Select your consultant and start work

Find a Consultant

or email us at: [email protected]