Cloud Computing may not make sense for all application types. But as with the adoption of commodity hardware and Linux over a decade ago, economic considerations will continue to pressure adoption.
What types of applications do fit well in the cloud?
- Applications with Seasonal Traffic Patterns
- Proof-of-concept Applications
- Quick Temporary Dev & Test Environments
- CPU Intensive Applications
- On-Demand or Unknown Future Demand
Seasonal Traffic Patterns
Web applications often show the following traffic patterns. Traffic is steady for weeks or months, then experiences a spike in traffic. That spike may be due to a launch of a new product or service, a new marketing or advertising campaign or sudden user interest. Inevitably you'll need more servers and compute power to handle that spike. That is your peak capacity requirement.
With traditional servers you would need to buy enough servers or big enough ones to support that load or else suffer outages. What's more you'd have to plan in advance in order to have those servers online and integrated into the web infrastructure.
With Cloud Computing, you already have spinup scripts for your server types, and can bring additional compute power online with only a few commands. Even better with AWS Autoscaling, you can define rules to have new servers spinup for you automatically!
Proof-of-Concept ApplicationsIf you're in the process of testing a new business idea or internet startup, you may not have the budget to order all sorts of heavy iron to support it. Cloud Computing complements this type of requirement very nicely. You need dev servers, voila they're up and running. Quickly and cheaply. You may not know what you'll need in six months or if your idea will take off, and don't have to risk a big purchase. Buy only what you need.
Dev and Test EnvironmentsAnother application type that really complements cloud computing well is dev and test environments. You may want to clone your production servers, or bring on a temporary test environment with all of the same components as production. But you don't need that setup all of the time. Just bring the servers online when you need them and stop them when you're done testing. You won't get instance charges while the servers are stopped, but the server images will remain resident on your EBS snapshots!
CPU Intensive ApplicationsServer farms are used for all sorts of applications such as SETI or the Human Genome Project. These applications require legions of servers working together to churn through large amounts of data. That are uniquely fitted to cloud computing, as they are cpu-intensive. Once you are done, you can easily decomission all of those servers.
Online gaming is another CPU intensive application. As users access Facebook applications such as Farmville, it's hard to know in advance what those demands will be from day-to-day. Enabling a feature like AWS Autoscaling means the compute power does a lot of the capacity planning for you, responding dynamically to need.
On-Demand or Unknown Future RequirementsAny other types of applications that have on-demand needs, and for which you don't know what the future will look like, match cloud computing well. You avoid the up-front costs of buying a whole rack of servers, and keep servers offline when they're not busy.
** Original article -- Intro to EC2 Cloud Deployments **