Blast Radius Analysis

Blast Radius Analysis: Estimating the Cost of a Bad Deploy

A single bad deployment produced a $180,000 incident, not because the deployment was uniquely catastrophic, but because nothing in the system was configured to stop it from spreading. The blast radius of that deployment, documented by ZopDev, was not a function of what went wrong. It was a function of how many services depended on the failing component without any registered failure boundary to contain the cascade. The deployment failed for ordinary reasons. The $180,000 outcome was a function of an architecture that had never calculated its own blast radius, and therefore had no basis for sizing its containment investment.

Every service with downstream dependents and no registered failure boundary is a live exposure, priced at whatever your next bad deploy happens to cost. That is not a dramatic framing, it is a financial statement. The blast radius of a bad deployment is the width of the exposure in the moment the change goes wrong. Multiplied by the time it takes to detect and remediate the problem, it produces the total cost of the incident. Blast radius analysis is the discipline of estimating that cost before the deploy goes out, while the estimate can still change the decision.

Trace Across Every Language Boundary

SMART TS XL computes the complete ripple scope of any proposed change across every language in your portfolio before the commit is made.

FIND OUT MORE…

What Blast Radius Actually Measures

Blast radius in software deployment context is the total set of users, systems, and business functions that are affected when a deployment fails. It is a width measure, not a severity measure: a high blast radius deployment touches many users and systems; a low blast radius deployment touches few. Severity (how bad the failure is for each affected user) and blast radius (how many users are affected) are independent variables that multiply together in the cost calculation.

The foundational formula from deployment operations:

Total incident user-pain = Blast Radius × MTTR

Where:

  • Blast Radius is the fraction of users, traffic, or systems affected (0% to 100%)
  • MTTR is the Mean Time to Recovery, from failure start to full restoration

A deployment with a 100% blast radius and a 5-minute MTTR affects every user for 5 minutes. A deployment with a 5% blast radius and a 100-minute MTTR affects 5% of users for 100 minutes. Both produce the same total user-pain by the formula, but their cost profiles differ significantly: the first is a visible outage that triggers immediate response; the second is a slow degradation that may not be detected for hours.

Blast radius is not the same as:

Change failure rate, the DORA metric that measures what fraction of deployments require immediate intervention. Change failure rate is a trailing, aggregate metric measured after the fact. Blast radius is a pre-deploy estimate and a real-time incident scope measure.

Impact radius, a synonym. The two terms are used interchangeably; blast radius is more common in deployment risk and AI agent governance contexts.

Risk, risk is probability times impact. Blast radius is one component of impact. A low-probability, high-blast-radius deployment may have lower expected cost than a high-probability, low-blast-radius deployment.

The Blast Radius Cost Model

“User pain” is a useful operational metric. Finance requires dollars. The complete blast radius cost model translates user-pain into the five cost categories that build the business case for blast radius reduction investment:

Cost Category 1: Revenue impact

For revenue-generating services, the formula is straightforward: revenue per hour × blast radius percentage × MTTR in hours. A checkout service that processes $500,000 per hour, affected at 100% blast radius for 45 minutes: $375,000 in lost revenue. A recommendation service that drives 15% of purchases, affected at 100% blast radius for 45 minutes: $56,250 in lost revenue from the affected feature, assuming purchases at non-recommended items continue.

The blast radius percentage is the key variable: a 5% canary deployment limits the revenue impact to 5% of the full figure, regardless of how long recovery takes.

Cost Category 2: Engineering cost

Incident response is expensive. A P1 incident that requires a bridge call with 8 engineers for 3 hours, followed by a rollback procedure and a post-mortem, consumes approximately 30 engineer-hours plus 8 hours of on-call overhead. At $150 average fully-loaded engineering cost per hour, that is $4,500 in direct engineering cost for a 3-hour incident, before accounting for the opportunity cost of the features those engineers were not building.

Cost Category 3: Regulatory and compliance cost

Deployments that affect regulated systems, systems that hold PII, financial transaction records, PHI, or cardholder data, may trigger compliance obligations that extend well beyond the incident itself. A deployment failure that corrupts customer financial records may trigger GDPR breach notification requirements (within 72 hours of discovery), HIPAA breach reporting (within 60 days of discovery), and PCI-DSS incident documentation requirements. The regulatory cost is not just the notification, it is the legal review, the documentation burden, the potential fine, and the regulator engagement that follows.

For organizations subject to DORA’s operational resilience framework, ICT incidents affecting critical functions have formal reporting requirements to the relevant financial regulator. A single high-blast-radius deployment that reaches a DORA-regulated function can trigger a regulatory reporting process that costs significantly more than the engineering response.

Cost Category 4: SLA and contractual penalties

Enterprise software agreements typically include service level agreements with financial penalties for availability failures. A deployment that causes a P1 outage for 45 minutes may trigger SLA credits across every enterprise customer whose contracted uptime is exceeded. SLA credit costs accumulate rapidly: a 0.1% monthly uptime SLA credit across 200 enterprise customers, each paying $50,000 annually, produces $100,000 in credits from a single 45-minute outage.

Cost Category 5: Recovery cost

Rollback is not free. Rolling back a deployment requires: detecting the failure (which takes time, detection latency directly increases blast radius exposure), triggering the rollback procedure (automated or manual), executing the rollback (redeployment, recompile for compiled systems, data cleanup if state was corrupted), and validating the recovery. The total recovery time is the MTTR. The recovery cost is the labor and infrastructure cost of that MTTR.

For legacy COBOL systems, recovery cost has an additional dimension: recompile-and-promote procedures that may take 30-60 minutes before the reverted code is running in production. Every minute of compile-and-promote time is a minute of blast radius exposure. Modern systems that support instant rollback via blue-green switching have a structural MTTR advantage over compiled legacy systems.

The complete cost estimate:

Total Blast Cost = (Revenue/hr × Blast% × MTTR_hrs)
                 + (Eng_hourly_cost × Eng_headcount × MTTR_hrs)
                 + Regulatory_cost (if regulated system in blast)
                 + SLA_credit_cost (per customer per SLA tier)
                 + Recovery_labor_cost

Example (high blast radius incident):
  Revenue:    $500K/hr × 100% × 0.75 hrs      = $375,000
  Engineering: $150/hr × 10 engineers × 3 hrs  =   $4,500
  Regulatory:  Legal review + notification      =  $15,000
  SLA credits: 50 enterprise customers          =  $25,000
  Recovery:    4 engineers × 3 hrs              =   $1,800
  ─────────────────────────────────────────────────────────
  Total blast cost:                              = $421,300

The Pre-Deploy Blast Radius Score

A pre-deploy blast radius score is a number computed before a deployment executes that estimates the potential cost of failure, expressed as a risk classification that gates the deployment decision.

The score has four inputs:

Input 1: Dependency fan-out. How many services, programs, or systems depend on the component being deployed? A component with 50 downstream dependents has a larger blast radius than one with 2. This is the structural input, derived from the dependency graph, not from estimation. Blast radius cannot be calculated reliably without a dependency graph. Without knowing which services depend on the target, the estimate will miss indirect impact.

Input 2: Traffic percentage affected. What fraction of production traffic flows through the component being deployed? A shared authentication service that handles every user request has a 100% traffic impact if it fails. A feature flag-gated A/B test component handles 5% of traffic. This input determines the revenue impact multiplier.

Input 3: Criticality of affected components. Does the blast scope include any Tier 1 (mission-critical) systems, regulated systems, or systems with SLA obligations? A deployment that reaches a DORA-regulated function has a categorical blast radius score increase, regardless of the traffic percentage, because the regulatory consequence is binary, the function is affected or it is not.

Input 4: Rollback time estimate. How long does recovery take if the deployment fails? A microservice with automated blue-green rollback recovers in seconds. A COBOL batch program with a manual recompile-and-promote procedure takes 30-60 minutes. This input determines the MTTR multiplier.

Blast ScoreDeployment GateTypical Profile
0-25Auto-deployLow fan-out, low traffic %, fast rollback, no Tier 1 in blast
26-50Deploy with enhanced monitoringModerate fan-out or traffic %, fast rollback
51-75Human approval requiredHigh fan-out or traffic %, or Tier 1 in blast scope
76-100Impact review and staged rollout mandatoryVery high fan-out, regulated system in blast, slow rollback

Containment Strategies: Shrinking the Radius Before It Expands

The most cost-effective blast radius management is pre-deploy containment, limiting how much of the system a bad deployment can reach before it is caught and stopped.

Canary releases. Deploy to a small percentage of production traffic, 1%, 5%, 10%, before full rollout. A canary at 5% has a maximum blast radius of 5% of users if the deployment fails before promotion. Monitor canary error rates, latency, and business metrics; promote to full traffic only when the canary is healthy.

Feature flags. Decouple deployment from release. The code ships to all servers but is activated only for a defined population. A feature flag that activates a new pricing algorithm for 1% of users has a 1% blast radius. Roll back by toggling the flag off, no redeployment required, rollback in seconds.

Blue-green deployment. Maintain two identical production environments. New deployments go to the inactive environment; traffic switches instantaneously when ready. A bad blue-green deployment is reversed by switching traffic back to the previous environment in seconds, not minutes. MTTR measured in seconds dramatically reduces total incident cost regardless of blast radius.

Circuit breakers and bulkheads. Architectural patterns that contain failures within defined boundaries. A circuit breaker that opens when a downstream service fails stops the cascade at the circuit boundary, the blast radius is contained to the failing service’s direct consumers rather than propagating transitively.

The blast radius containment formula in practice:

# Kubernetes: progressive canary with blast radius gate
# Using Argo Rollouts for automated canary analysis

apiVersion: argoproj.io/v1alpha1
kind: Rollout
spec:
  strategy:
    canary:
      steps:
        - setWeight: 5        # 5% blast radius maximum at step 1
        - analysis:
            templates:
              - templateName: blast-radius-gate
        - setWeight: 25       # Expand only if analysis passes
        - analysis:
            templates:
              - templateName: blast-radius-gate
        - setWeight: 100      # Full rollout only after staged validation
      analysis:
        successfulRunHistoryLimit: 3
        unsuccessfulRunHistoryLimit: 3
---
apiVersion: argoproj.io/v1alpha1
kind: AnalysisTemplate
metadata:
  name: blast-radius-gate
spec:
  metrics:
    - name: error-rate
      successCondition: result < 0.01   # Block if error rate > 1%
      provider:
        prometheus:
          query: |
            rate(http_requests_total{status=~"5.."}[5m])
            / rate(http_requests_total[5m])
    - name: latency-p99
      successCondition: result < 500    # Block if p99 > 500ms
      provider:
        prometheus:
          query: histogram_quantile(0.99, rate(http_request_duration_seconds_bucket[5m]))

The Legacy System Problem: When Containment Strategies Break Down

The containment strategies described above, canary releases, feature flags, blue-green deployment, assume a system architecture where traffic can be split between old and new versions, where deployment is instantaneous, and where rollback is a configuration change rather than a build process. Legacy COBOL batch systems violate all three assumptions.

A COBOL batch program cannot be canary-deployed. A nightly batch that processes 10,000 customer records does not have a “5% of records” mode, it processes all records or none. There is no traffic splitting for batch.

A COBOL deployment requires recompile and promote. A bad COBOL deployment is not rolled back by toggling a feature flag or switching an Argo Rollout back to the previous image. Rolling back requires: recompiling the previous version from source, promoting the compiled load module through the change management system to the production library, and rerunning the batch from the failure point. Under ideal conditions this takes 30-60 minutes. In practice, for complex changes or when the recompile reveals downstream impacts, it takes longer.

A COBOL blast radius is measured in batch windows, not user percentages. A bad COBOL deploy at 2 AM that causes the nightly batch to abend is not discovered until 8 AM when the operations team arrives. Six hours of blast radius exposure, during which the next scheduled batch may also fail because it depends on output from the failed run. The cascade of batch failures that can follow a single bad COBOL deploy is the legacy equivalent of the microservices cascade that the circuit breaker was designed to stop.

The blast radius containment strategy for COBOL must therefore focus on MTTR reduction rather than blast radius reduction:

Pre-tested rollback procedures. The rollback procedure for a COBOL deployment should be documented, tested in a non-production environment, and executable in under 15 minutes by an operator who has not been previously involved in the failed deployment. A rollback procedure that requires the original developer to be located, woken up, and given access to the change management system has a structural MTTR measured in hours, not minutes.

Warm recompile environments. Pre-staging the rollback compile in a warm environment, where the previous version’s compilation artifacts are available and the recompile can start immediately, reduces MTTR from the compile time plus the rollback time to the rollback time alone.

Batch checkpoint and restart. COBOL batch programs that implement checkpoint/restart capability, writing their progress to a recoverable state at defined intervals, reduce the blast radius of a mid-batch failure from “rerun the entire batch from the beginning” to “restart from the last checkpoint.” For long-running batch jobs, this is the structural equivalent of reducing blast radius: the blast is contained to the records processed since the last checkpoint rather than the entire batch.

The Blast Radius vs MTTR Tradeoff

Blast radius analysis is sometimes misunderstood as optimization for the smallest possible blast radius. This is not the correct goal. The correct goal is the smallest possible total incident cost, which may be achieved by minimizing blast radius, by minimizing MTTR, or by a combination.

The tradeoff is real and worth making explicit:

StrategyBlast RadiusMTTRTotal Cost ProfileBest For
Canary releaseVery low (5%)AnyLow if monitored aggressivelyHigh-traffic web services
Blue-green deploy100% momentarilyVery low (seconds)Low due to fast recoveryMicroservices with instant rollback
Pre-tested rollback100% (no canary)Low (< 15 min)ModerateBatch, compiled, legacy systems
Feature flagsVery low (flag%)Very low (flag toggle)Very lowFeature-gated new functionality
No containment100%VariableHighestThe ZopDev $180K scenario

For legacy COBOL systems, the canary and feature flag rows are inapplicable. Blue-green is partially applicable (some organizations maintain parallel COBOL library environments) but requires significant operational infrastructure. The practical strategy is pre-tested rollback combined with checkpoint/restart, accepting the 100% blast radius inherent in batch processing while investing in MTTR reduction to minimize the total cost.

The blast radius score for a COBOL deployment will typically be higher than for an equivalent microservice, not because the deployment is riskier in terms of code quality, but because the structural constraints of batch processing eliminate the traffic-splitting options that reduce blast radius for web services. Acknowledging this structural constraint is the first step toward the correct mitigation: invest in MTTR infrastructure, not in containment infrastructure that the architecture cannot support.

How SMART TS XL Provides the Dependency Graph for Blast Radius Calculation

The foundational insight from blast radius analysis practice is that accurate blast radius calculation requires an accurate dependency graph. Without knowing which systems depend on the target, the estimate will miss indirect impact, and the estimate that misses indirect impact is the estimate that produced the $180,000 incident.

SMART TS XL’s application dependency mapping provides the dependency graph that makes blast radius calculation accurate for legacy COBOL and multi-language enterprise environments. For any proposed change, a copybook modification, a subprogram interface change, a JCL dataset redefinition, the dependency map enumerates every program in the blast scope: the direct dependents at Depth 1 and the transitive dependents at Depth 2 and beyond. This enumeration is the structural input to the blast radius score: the fan-out count, the criticality of each dependent, and the data contract dependencies that cross system boundaries.

The impact analysis capability converts the dependency graph into a deployment risk assessment: how many programs must be recompiled, which downstream systems receive changed data outputs, which regulatory functions are in the blast scope. This assessment is the structured input to the pre-deploy blast radius score, converting the abstract dependency graph into the specific, quantified risk profile that gates the deployment decision.

The static code analysis capability identifies the rollback complexity dimension: programs with high cyclomatic complexity, dense coupling, and large fan-out have higher rollback complexity scores, they are more expensive to recompile, more likely to have downstream compilation dependencies, and more likely to require extended validation before the rollback is confirmed successful. This complexity score is the MTTR input to the blast radius cost calculation.

The enterprise search capability makes the blast radius inventory queryable at decision speed: find every program that includes a specific copybook (the compile-time blast scope), every program that reads from a specific dataset (the runtime blast scope), every program that feeds a regulatory reporting system (the compliance blast scope). These queries produce the blast radius inventory in seconds, before the change is approved, not after the incident is declared.

For organizations conducting legacy modernization programs, blast radius analysis is a prerequisite discipline for every migration wave. Every migration decision is a deployment decision, and every deployment decision in a legacy COBOL environment has a blast radius that is structurally larger than the equivalent microservice deployment. Knowing that blast radius before the wave commitment is what separates modernization programs that manage risk from those that discover it.

Conclusion: The Blast Radius Is Calculable. The Excuse to Not Calculate It Is Not.

The $180,000 incident was not unforeseeable. The services that cascaded were known. The dependencies that carried the failure were real and, in principle, discoverable before the deployment. What was absent was not the information, it was the discipline of calculating the blast radius before the deploy, using that calculation to size the containment investment, and treating undeclared dependencies as live financial exposure rather than undocumented architecture.

Blast radius analysis is not a post-incident activity. It is a pre-deploy activity, the calculation that converts deployment decisions from “we think this is safe” into “we know the blast radius is bounded to X, the estimated cost of failure is $Y, and our rollback time is Z minutes.” Organizations that make deployment decisions from this evidence deploy more confidently, contain failures more effectively, and spend less on incident response than organizations that discover their blast radius when it is already expanding.

The blast radius is always calculable before the deploy. The only question is whether the calculation happens before the change ships or after the incident declares.

Meta Description, 165 characters

Option 1: Blast radius analysis: five-component cost model, pre-deploy scoring, containment strategies, legacy COBOL batch challenges, and the MTTR tradeoff.

Option 2 (recommended): Estimating the cost of a bad deploy: blast radius cost model, pre-deploy scoring, canary vs blue-green vs COBOL batch containment, and the MTTR tradeoff explained.

Option 3: Blast radius analysis: the $180K incident, cost model, pre-deploy score, canary and blue-green containment, and the COBOL batch challenge.