I need your help about scalability on Amazon EC2 instanced. I have developed a web application using asp.net. I have decided that for start, I want to deploy it on a Medium High-CPU Windows Server 2008 instance.
I have problem understanding what is Amazon Elastic Compute Cloud and what is CloudWatch Autoscaling and what each one does?
My target: I want that when CPU utilization exceeds some kind of a limit, I want that Amazon will automatically create a duplicated instance (EC2 + EBS) from the current server and divide the visits between those two servers. When the stress is low, I want Amazon to terminate those instanced that were created in order to give more computing power when the application needs it.
Other then that, I want to know that if I choose to go with High CPU medium instance, what are my upgrading options. I use EC2 + EBS and I thought it would be easy to duplicate the EBS (create a snapshot), launch a new instance (more powerful one), attach the EBS and assign the elastic IP to the new server. Of course I don't know how it all adds up when Amazon scales the servers and when I can apply it.
The most important thing is that my application won't crash if many users visits my website, that's the most important part.
I really need your help on this. Many thanks.
You can read up more about features Amazon supports for scaling in these services:
Auto Scaling
Elastic Load Balancing
CloudWatch is just a feature used by the Auto Scaling so you can define what should trigger the starting of new instances when you need more or terminating existing ones when you don't need as many.
AutoScaling does not make a copy of a running server, but instead starts every new instance using the exact parameters you specify in the "launch configuration" you specify. This includes what AMI (image) to run along with parameters like the instance type, security groups, key, and user-data.
With EBS boot instances it is possible to change the instance type. You can do this without running a new instance, though there is a short outage. Here's an article I wrote on how to do this with a Linux instance.
The process with Windows might be similar, but test first.