Cloud compute often consumes over half of an organization's monthly AWS bill. Yet many engineering teams default to On-Demand instances out of convenience. Others avoid Spot instances entirely after experiencing a single unexpected node termination, or lock themselves into 3-year commitments for workloads that change within six months.
Choosing the wrong EC2 pricing model burns money fast. Understanding the exact trade-offs between On-Demand, Spot, and Reserved Instances (including Savings Plans) enables you to reduce infrastructure costs by 50% to 70% without compromising uptime.
On-Demand Instances: Maximum Flexibility, Highest Unit Cost
On-Demand pricing is the baseline for AWS compute. You pay for compute capacity by the second (with a 60-second minimum) with no long-term commitment or upfront payment.
Actual Cost Profile
For a modern compute-optimized instance like c6i.2xlarge (8 vCPU, 16 GB RAM) in us-east-1:
- On-Demand Rate: $0.34 per hour
- Monthly Cost (24/7): ~$248.20 per month
When to Use On-Demand
- Short-term workloads lasting less than a few weeks.
- Unpredictable traffic spikes where immediate capacity scaling is mandatory.
- Development and staging environments that run for brief, irregular intervals.
- Initial application testing before establishing steady-state resource demands.
The Problem with 100% On-Demand
Running production workloads entirely on On-Demand is equivalent to paying full retail price for every server 24/7/365. If a service runs continuously for more than two months, keeping it on On-Demand wastes money.
Spot Instances: Up to 90% Discounts with Preemption Mechanics
Spot instances allow you to bid on spare AWS EC2 capacity. AWS offers these idle servers at steep discounts, typically 65% to 75% below On-Demand prices, and up to 90% for less common instance types.
Actual Cost Profile
Comparing the same c6i.2xlarge instance in us-east-1:
- Spot Rate: ~$0.091 per hour (varies dynamically based on supply)
- Monthly Cost (24/7): ~$66.42 per month
- Savings: ~73% discount compared to On-Demand
The Catch: Unreliability and Preemption
AWS can reclaim a Spot instance at any time when demand for On-Demand capacity increases. When AWS needs the capacity back, it sends a 2-minute preemption notification.
Spot capacity is organized into pools. A Spot pool is defined by three parameters:
- Instance Type (e.g.,
c6i.2xlarge) - Availability Zone (e.g.,
us-east-1a) - Region (e.g.,
us-east-1)
If a specific pool runs low on spare hardware, AWS terminates Spot nodes in that pool.
Spot Preemption Timeline
- 0:00: AWS signals interruption via IMDS or EventBridge.
- 0:05: Node Handler marks node as Unschedulable (
kubectl cordon). - 0:10: Active pods receive
SIGTERM, new pods route elsewhere. - 1:50: Workloads finish flushing state to disk or network.
- 2:00: AWS terminates the EC2 instance.
How to Engineer for Spot Reliability
- Instance Diversification: Never rely on a single instance type. Configure Auto Scaling Groups or Kubernetes Karpenter to request multiple instance families across multiple Availability Zones (for example:
c6i.2xlarge,c5.2xlarge,c6a.2xlarge,m6i.2xlarge). - Automate Node Draining: Intercept the 2-minute preemption notice via Instance Metadata Service (IMDS) at
http://169.254.169.254/latest/meta-data/spot/instance-actionor EventBridgeEC2 Instance State-change Notification. - Use Capacity Rebalance Notifications: AWS provides an
EC2 Instance-rebalance-recommendationsignal up to 15 minutes before reclamation when pool capacity degrades.
Best Workloads for Spot
- Stateless web servers and API microservices behind a load balancer.
- Kubernetes worker pools running fault-tolerant container pods.
- Batch processing jobs (AWS Batch, EMR, Ray, Spark).
- CI/CD build agents and automated testing runners.
Avoid Spot For
- Relational databases (RDS PostgreSQL, MySQL) and single-node data stores.
- Monolithic applications without graceful shutdown handlers.
- Stateful applications without real-time cross-node replication.
Reserved Instances and Savings Plans: Discounts for Commitment
When you have stable, predictable workloads, AWS provides discounts in exchange for a 1-year or 3-year commitment.
RIs vs. Savings Plans
While traditional Reserved Instances (RIs) still exist, AWS Savings Plans are the modern standard for commit-based discounts.
| Pricing Option | Commitment | Flexibility | Typical Discount |
|---|---|---|---|
| Compute Savings Plans | 1 or 3 Years | Highest. Applies across instance families, OS, regions, Fargate, and Lambda. | 37% (1-Yr) to 66% (3-Yr) |
| EC2 Instance Savings Plans | 1 or 3 Years | Medium. Locked to a single instance family in one region. | 40% (1-Yr) to 72% (3-Yr) |
| Standard RIs | 1 or 3 Years | Low. Locked to instance type, OS, and region. Tradable on RI Marketplace. | 35% (1-Yr) to 60% (3-Yr) |
| Convertible RIs | 1 or 3 Years | Medium. Allows exchanging for different instance specifications. | 30% (1-Yr) to 54% (3-Yr) |
Actual Cost Profile
Using c6i.2xlarge in us-east-1:
- On-Demand: $0.340 per hour ($248.20 / month)
- 1-Year Compute Savings Plan (No Upfront): ~$0.214 per hour ($156.22 / month, 37% savings)
- 3-Year EC2 Instance Savings Plan (All Upfront): ~$0.095 per hour ($69.35 / month, 72% savings)
The Lock-in Risk
The main drawback of commitments is financial lock-in. If you commit to a 3-year EC2 Instance Savings Plan for c6i instances and your engineering team rewrites the stack to run on Graviton c7g processors or moves to AWS Lambda six months later, you remain financially obligated for the remaining 2.5 years of the c6i commitment.
Compute Savings Plans mitigate this risk by automatically applying hourly dollar commitments across all instance families, architectures (x86 vs ARM), and compute services (EC2, Fargate, Lambda).
Direct Pricing & Feature Comparison
Here is how the four main purchasing paths stack up for an 8 vCPU, 16 GB RAM server footprint (c6i.2xlarge equivalent):
| Metric / Feature | On-Demand | Spot Instances | 1-Yr Compute Savings Plan | 3-Yr EC2 Instance Savings Plan |
|---|---|---|---|---|
| Hourly Rate | $0.340 | ~$0.091 | ~$0.214 | ~$0.095 |
| Monthly Bill | $248.20 | ~$66.42 | ~$156.22 | ~$69.35 |
| Discount vs. OD | 0% | 65% - 75% | ~37% | ~72% |
| Commitment | None | None | 1 Year | 3 Years |
| Interruption Risk | None | High (2-min notice) | None | None |
| Family Flexibility | Instant | Instant | High (Auto-applies) | Low (Family locked) |
| Region Flexibility | Instant | Instant | High (Global) | Low (Region locked) |
The 70/20/10 Hybrid Production Strategy
The most cost-effective cloud architectures do not choose a single pricing model. They combine all three into a hybrid allocation structure.
Hybrid Allocation Structure
- Baseline (60% to 70%): Compute Savings Plans (1 or 3 Year) for core infrastructure.
- Scale-Out (20% to 30%): Spot Instances across multiple AZs and instance families.
- Peak Spikes (10%): On-Demand Auto Scaling Groups for sudden headroom buffer.
Architectural Breakdown
- 60% to 70% Baseline (Compute Savings Plans): Cover your minimum daily compute baseline with 1-Year or 3-Year Compute Savings Plans. This handles database clusters, control planes, and baseline web servers.
- 20% to 30% Scalable Compute (Spot Instances): Use Spot instances for stateless application scaling during daytime traffic peaks. Configure Karpenter or Auto Scaling Groups with at least 4 to 6 instance types.
- 10% Safety Buffer (On-Demand): Keep On-Demand as a fallback mechanism. If Spot capacity pools become depleted, Auto Scaling Groups temporarily launch On-Demand instances until Spot capacity recovers.
ROI Calculation: 100 vCPU Workload
Consider an infrastructure requiring 100 vCPUs (equivalent to twelve c6i.2xlarge instances) running continuous production:
- 100% On-Demand Strategy: 12 x $248.20 = $2,978.40 per month
- 100% 3-Year EC2 Savings Plan: 12 x $69.35 = $832.20 per month (Risk: zero agility)
- 70/20/10 Hybrid Strategy:
- 8 nodes on Compute Savings Plan (3-Yr): 8 x $95.00 = $760.00
- 3 nodes on Spot Instances: 3 x $66.42 = $199.26
- 1 node on On-Demand (burst): 1 x $248.20 = $248.20
- Total Hybrid Cost: $1,207.46 per month
The hybrid approach cuts monthly spend by 59.4% while preserving technical agility and eliminating single-point failure risks during Spot reclamation events.
Decision Checklist
Before selecting an instance pricing tier, evaluate your workload against these criteria:
- Can the workload tolerate node termination with a 2-minute warning? Use Spot.
- Is the workload a stateful database or core infrastructure component running 24/7? Use Savings Plans.
- Is the workload an unproven prototype or an unpredictable short-term burst? Use On-Demand.
- Are you migrating between architectures or instance types over the next 12 months? Choose Compute Savings Plans over EC2 Instance Savings Plans.
