Auto scaling pays off when load is uneven: daily peaks, weekend spikes, marketing campaigns, or batch jobs that come and go. If your traffic is flat and predictable, a fixed fleet is simpler and the savings are small.
The biggest trade-off is startup time. A new VM can take one to three minutes to boot and warm up, so a sudden 10x spike can overwhelm you before new capacity arrives. Teams fight this by keeping a warm buffer of spare capacity, scaling on a leading metric like request rate instead of CPU, or using faster units such as containers and serverless functions that start in seconds.
Your app also has to be stateless and tolerant of instances appearing and disappearing at any moment. Sessions belong in Redis or a database, not in local memory, and the app must shut down cleanly when scale-in removes it. Watch costs too: an aggressive scale-out triggered by a bad metric or a retry storm can launch dozens of instances and surprise you on the bill, which is why most teams set a maximum instance count.