When considering about porting your app to the cloud for all those good reasons, the first thing you might encounter is: which platform you should go for?
After having tried some of the major ones here are some brief reviews:
1. Google App Engine
PaaS (Platform as a Service)
- Ease of use
yeah, it's for me by far the most easiest cloud computing platform with full functionalities provided right out of the box.
PaaS means, it's already thought that you'll develop something on the cloud to provide your application to the wide variety of users on the web.
User authentication, some nice Google APIs, easy to use database, and straight away ready to go IDE (Eclipse based for Java) and App Engine Launcher (for Python).
Nothing to really configure, build, learn, etc... Can't really complain.
- Easy to use, an excellent non-relational database
one of the plus in this might be, that we can just use the Google's excellent non-relational database. It's straight away to go, so easy to use.
Though this might be a minus, when people want to stick with traditional relational database with SQL. Though with paid-option, with the
App Engine for Business, you can use the traditional SQL database.
- Pricing
pricing is very reasonable. Even excellent should I say? It's free up to some stage of usage, and we use it free until we have enabled the "paid usage" option.
Still with free-option we get the full functionality.
- Programming language limitations
programming language of choice is limited to Python and Java.
- Any external libraries?
well, it's one of the main issues for me and probably for most of the scientists and engineers who'd like to port their scientific and engineering applications to the cloud in choosing the Google App Engine.
Usage of external libraries is limited to pure Java or pure Python package. In this sense, Java seems to be a better choice for development with some external libraries (see my previous post "
Java or Python"). Yeah, that means no Numpy or Scipy for Python... You might consider using Java with
Apache Commons Math library instead when you're looking for an option to use any mathematic library with Google App Engine.
And further, the number of files you can upload to your cloud computing instance is limited to 3000 files (for both
Python and
Java). That means, you can't just dump any arbitrary files of libraries on the cloud.
- Summary
I think it's definitely the first thing to try out when you want to try out cloud computing development. Though when thinking your application might become complicated, consider about using something else.
2. Microsoft Windows Azure Platform
PaaS (Platform as a Service)
- Ease of use
not quite much so. It's also a
PaaS service, designed with the thought that you'll service your app on the cloud, but, the approach is quite transitional or even traditional.
The web service approach is very much taken as the
ASP.NET framework, and you need to have all those things to develop something like ASP.NET, MS application things on Windows (Windows Vista or higher, MS Visual Studio 2010, Windows Azure SDK, etc...).
Not so easy thing like the Google App Engine, where all those things for webapp development is provided straight away, you need to implement by yourself. Oh, yeah... Not so much recommended for the beginners...
- MS SQL Server database
MS SQL Server is the default database system provided.
- Pricing
Similar to the Google App Engine. Though you need to provide all your credit card information and so on when you register. Scary? Well, I registered, tried a simple development, haven't done anything on Azure since then, and I've not been charged since.
- Programming language limitations
they say almost any language can be use to develop your Azure application (this is a big plus!). Though some tweaks would be needed. The default programming language of choice, with nice samples and examples provided, is C#.
- Any external libraries?
again, they say you can install and use almost any external libraries for your Azure application (again, this is a big plus!), as long as it doesn't conflict the
Web Role and various other Roles... (somewhat complicated here with those
various roles...) And some tweaks would be needed.
But unlike Google App Engine, it seems like MS Azure team is quite interested in attracting scientists and engineers to their cloud computing platform, and quite a few cool things are provided or planed to be provided (Web N-gram Services, Matlab support, etc... look
here).
- Summary
it would be a good choice when you're already very serious about porting your application to the cloud and have already some working set, with some library dependencies. Limited to MS Windows platform, but good support for scientific & engineering application development is expected. Not quite suitable for beginners or someone who just want to try out cloud computing
PaaS.
3. Amazon EC2
IaaS (Infrastructure as a Service)
- Ease of use
it's easy to use in the sense that you get the familiar computing instance (on the cloud, of course) as you're used to using your own personal computer.
It's not easy to use in the sense that you need to develop all the applications and services to serve your application on the cloud (no straight to go user authentication and database connection as in the Google App Engine).
Yes, it's a
IaaS, unlike those Google App Engine and Windows Azure. You kind of get a machine... on the cloud. Then you remote connect to it, and you develop your application... remotely. As a machine you can choose Linux or Windows. And they take all the goodies of the cloud computing (scalability etc...)
And you can copy your virtual machine instance to give it to anyone, or make a branch.
- Database
as you get a machine instance, you can install what ever database you want. Though you need to build the platform by yourself, like connecting the database to the webserver and application.
- Pricing
you pay by the usage hours of your machine instance. And pay extra when you use more then those are covered by the default allowance (see
here).
Though you can turn your machine instance "off" when you're not using it, to prevent being charged for nothing.
- Programming language limitations
no limitations, of course. You use whatever you want... almost.
- Any external libraries
no limitations, of course. You use whatever you want... almost.
- Summary
it's good when you already have a working web application, which you want to deploy on the cloud computing infrastructure. You get a machine on the cloud!
Not quite much for beginners, or who want to try out cloud computing.
The pricing can become expensive, when you want to keep your web service always on. Unlike the Google App Engine, which is turned on by request, the machine is either always turned on or off by you. And when it's turned on, you pay for it.