Most small SaaS companies on AWS pay the full On-Demand rate for compute. On-Demand exists for unpredictable, short-term workloads. Your production servers have been running for 18 months. They are not unpredictable.
AWS Savings Plans let you commit to a steady amount of compute spend for one or three years in exchange for a lower rate. The catch is the commitment. If your usage drops, you still pay. That is why most teams never do it: they are unsure about the future. But if the product and the infrastructure are stable, there is little reason to keep paying the highest price.
What each option covers
AWS currently sells these:
- Compute Savings Plans give up to 66% off On-Demand. They apply to EC2 whatever the instance family, size, OS, tenancy or Region. They also apply to Fargate and Lambda.
- EC2 Instance Savings Plans give up to 72% off. EC2 only, tied to one instance family in one Region (for example m5 in Virginia). Size, OS and tenancy within that family are flexible.
- Reserved Instances: Standard RIs also reach up to 72%. Convertible RIs reach up to 66%, but you exchange them by hand to change family, OS or tenancy.
These are maximums, not promises. The real discount depends on instance type, Region, term and payment option. Always read the figure for your own usage in the console.
Terms are one or three years. Payment options are all upfront, partial upfront and no upfront. The commitment is measured in dollars per hour. Usage up to that amount gets the discounted rate. Anything above it is billed On-Demand. Savings Plans do not apply to Spot usage or usage already covered by a Reserved Instance, and they do not reserve capacity.
For most small SaaS teams, Compute Savings Plans are the sensible default. You can change instance types, move from EC2 to Fargate, or move Regions, and the discount follows. EC2 Instance Savings Plans make sense only if you are certain about the instance family. The extra discount rarely beats the flexibility you give up. There are also separate Database Savings Plans (up to 35%) for RDS, Aurora and similar. Those are a different decision.
Check your own account
Look at the history first. In Cost Explorer, group EC2 usage by day for the last 60 to 90 days. If the line is flat or slowly rising, you are a candidate. If it swings wildly, fix that first.
Then ask AWS what it would recommend. In the console, open Billing and Cost Management and choose Savings Plans, then Recommendations. The page shows a recommended hourly commitment, your estimated monthly savings, and lets you change type, term, payment option and lookback period.
The same data is available from the CLI:
aws ce start-savings-plans-purchase-recommendation-generation
aws ce get-savings-plans-purchase-recommendation \
--savings-plans-type COMPUTE_SP \
--term-in-years ONE_YEAR \
--payment-option NO_UPFRONT \
--lookback-period-in-days THIRTY_DAYS
Lookback can be SEVEN_DAYS, THIRTY_DAYS or SIXTY_DAYS. Use the longest one that still reflects your current setup. To see what you already own:
aws savingsplans describe-savings-plans
How much to commit
AWS’s recommendation tends to cover as much steady usage as it can justify. I would not take the number blindly.
My rule is to commit to the floor, not the average. Look at your lowest sustained hourly spend across the lookback period. Commit to a good part of that, leave the rest On-Demand, and add another plan later when you are sure. Savings Plans cannot be changed or cancelled once purchased, but you can always buy more.
For a first purchase I would take a one-year term with no upfront payment. It gives a smaller discount than three years, but it limits regret. Move to three years only when the architecture has been stable for a long time and a rewrite is not on the roadmap. Before you buy, use the Purchase Analyzer to estimate the effect on cost, coverage and utilization.
Also know the escape hatch. A Savings Plan with an hourly commitment of $100 or less can be returned if you bought it in the last seven days and in the same calendar month. After that it is yours.
After you buy
Check Utilization and Coverage under Savings Plans. Utilization shows whether you use the whole commitment. Coverage shows how much eligible usage is still On-Demand. You can also create Savings Plans utilization and coverage budgets in AWS Budgets, so you get an email if utilization drops below a target.
Keeping it right
Buying one is easy. Keeping coverage right as your infrastructure changes is the part people forget. If you want someone to watch it and handle renewals, that is part of my AWS management service.