Autoscaling is a feature of AWS that allows extra EC2 instances to be added to your infrastructure automatically during periods of high load, and then allows the same instances to be decommissioned automatically when the load has passed. While this seems great in principle, in practice, this is harder to achieve than the hype suggests.
One of the biggest hurdles to overcome that enable Autoscaling to be practical is that most enterprise applications are not built around the principles of scaling horizontally. Let's take a look at our sample enterprise application Waaah:
As seen in the previous diagram, while both the web servers and the application servers can scale horizontally, the database servers are limited to one instance. Using Microsoft SQL Server, we can provide redundancy and failover as in the case of the architecture previously mentioned, but we cannot add extra SQL Server instances and expect the load to be evenly balanced between them.
For example, if the load on...