Dave Winer put up a great guide on how to start a server in Amazon’s cloud a few weeks back. The article takes the user’s hand and step by step you go on to create your first server on the cloud. It’s a great accomplishment (I still remember the first time I did it) and you feel like you have become a member of an exclusive club.
However, once you see that “Hello world!” screen in there, many people ask, as Daniel Pritchett does in Winer’s post: “what do I put on my new cloud server?”
Winer answers, brilliantly: “We’ll have to figure it out. :-)”
The truth is that every day I read on forums, email lists and listen in conversations the same questions over and over. What is really the benefit of getting your application on the cloud?
In this post I’ll try to line up a list of five truths (or lies) about this subject , so that I can help clarify people’s perception of what can and can’t be done by putting your application on the cloud.
1. A server on the cloud is exactly the same as a dedicated server on any internet hosting company.
This is true. Putting your application on a cloud server is exactly the same as putting it on a physical server. There will be no added scalability, or power, or instant scaling. A server is a server no matter where it lives.
2. I need cloud servers because I will have a high traffic application.
This is false. Putting your application in cloud servers doesn’t mean it will scale. You can scale your application using regular physical servers.
The application itself has to be designed in a way that it can leverage horizontal scaling. For instance, if your application uses a database, the database has to be designed horizontally, i.e. your application has to be able to split data across many servers based on indexes. That way, if traffic goes up, you can split requests across many servers that get data from many points. If all those servers get data from one database point, your application will probably crash.
I am putting together a tutorial on how to design an application on the cloud that should be completed in the next few days, and will explain how to design your application using a cloud approach.
3. Cloud hosting is much more expensive than regular hosting.
This is false. Amazon now offers reserved instances that will allow you to host for around $40 a month. This is comparable with a dedicated server hosting on a conventional internet hosting provider. The cost will go up as you maintain more servers to scale your application, but the overall cost using cloud computing should be equal or lower than hosting it yourself, as there are costs to server leasing, space allocation and storage.
4. Hosting an application on the cloud is more difficult than hosting in a regular host.
This is false. The hosting part is exactly the same. But to point #2 above, there’s no inherent benefit of hosting in the cloud if you just want to host your application on the cloud versus in a regular setup.
5. There is no benefit of hosting in the cloud.
This is false. The benefit of hosting in the cloud is its elasticity (that’s where the name Elastic Cloud Computing or EC2 comes from). If one day you have a huge increase in traffic, you can rather quickly and programatically create as many servers as you need to meet these sudden demands. As your traffic dies down a couple of days later, you can then destroy these added servers, paying only for the hours you used them.
{ 1 comment… read it below or add one }
#1 is false.
A ‘server’ in the cloud normally means a virtual server not a physical server. A virtual server is a shared server not a full, dedicated server so you aren’t going to be able to get one that’s as powerful as you can get with a dedicated server. In addition, cloud computing typically virtualizes storage too. Accessing your files over a network is not going to match accessing them over a directly connected SATA connection.
If your system has a non-horizontally-scaleable component (like, say a SQL Server instance) or if you have some key latency requirements that require a very fast response calculated on a high-end CPU, then you may well be better off running those pieces on a dedicated server rather than on a cloud-based server.
More from author