Cost optimization
Pricing models, right-sizing, tiering, visibility.
Cost Optimization is a first-class Well-Architected pillar, and cloud makes cost an engineering concern: you pay for what you provision, so architecture decisions are cost decisions. The levers are pricing models, right-sizing, storage tiering, and visibility.
Pricing models and right-sizing
The biggest compute savings come from matching pricing models to usage: commit with Savings Plans or Reserved Instances for your steady baseline (up to ~70% off), use On-Demand for variable load, and Spot for fault-tolerant, interruptible work (up to ~90% off). On top of that, right-size — match instance and resource sizes to actual utilization using CloudWatch metrics and Compute Optimizer, rather than over-provisioning "to be safe" or defaulting to large instances. Turn off or scale down idle resources (dev environments overnight, for example). Serverless and managed services also cut cost by charging only for use and removing the operational overhead of idle capacity.
# LEVER ACTION# pricing models → Savings Plans/RIs (baseline) + On-Demand + Spot (bulk)# right-sizing → match size to utilization (Compute Optimizer)# storage tiering → S3 lifecycle → IA/Glacier; delete unneeded data# idle resources → schedule dev off-hours; scale in when idle# managed/serverless → pay per use, no idle capacity to run# visibility → tags + Cost Explorer + Budgets/alerts
Storage tiering and visibility
Storage cost is optimized with S3 lifecycle rules that move cold data to Infrequent Access or Glacier and expire what is no longer needed, plus choosing the right EBS volume types and deleting unattached volumes and old snapshots. Underpinning all of it is visibility: a consistent tagging strategy (owner, environment, cost-center) lets you attribute spend, Cost Explorer shows where money goes, and Budgets alert before you overspend. Cost optimization is not a one-time cleanup but an ongoing practice — you continuously right-size, adjust commitments as usage stabilizes, and remove waste. An architecture that is cheap to run is a design outcome, achieved by matching every resource to real demand.