There are a number of providers offering scalable cloud hosting, however most of them do not offer true Cloud hosting. They offer scalable solutions, however in my eye, the term cloud hosting represents a “cloud” or network of servers able to scale at a moments notice, and “follow” application traffic around the world. If my application suddenly gets an influx of users logging in from America, I want my application to be able to respond by instantly making more servers available in America, if traffic then moves to Australia, lets make more servers available in the Asia Pacific region. To me, responding to traffic in this way is a true Cloud based SaaS setup. There are two major front-runners providing this type and level of cloud solution, unsurprisingly, one of these is provided by Google, in its App Engine service. The other major company is Amazon, with is Amazon Web Services. Let’s have a brief look at both.
Amazon Web Services
Amazon Web Services was launched in 2006 with the aim to provide scalable, affordable web services. Amazon started out providing an IaaS service, or Infrastructure as a Service. This mean you could leverage the infrastructure of Amazon, but you were left handling all of the configuration of the servers you wished to utilise. Amazon have since launched their Beanstalk service, which behaves more like a Paas, or Platform as a Service. This leaves most of the configuration to Amazon, freeing you up to work on your application.
Google App Engine
In contrast to Amazon, Google started out with their App Engine, a true Paas, later releasing Compute Engine, the IaaS equivalent. App engine handles all of the configuration necessary, and you can control all your app scalability settings directly from your App code, in the way of an app.yaml file. Google’s App Engine also gives you access to their database systems, in particular Big Table, which is the service Google itself relies on for its high speed database. Using App Engine, you have access to a service called Datastore, which is a simplified way to store your data in Big Table. This is highly scalable, and incredibly fast and efficient, although does come with some restrictions.
Amazon VS. Google
Both services offer more features than we will need for our application. Both provide a pay-per-use model which allows you to only pay for the resources you have actually used. Which way do we go then? While Amazon provides a very viable option for this application, and is in fact the majority player in this particular field, we will be working with Google’s App Engine for a few reasons.
- App Engine provides a free monthly quota on most of its services, as opposed to Amazon who provides a free quota for the first 12 months only at roughly the same level as Google’s persistent free quota. This will allow this project to remain financially viable for longer for readers of this series.
- Google’s App Engine is very flexible when it comes to scalability, and is said to be quicker to respond to changes in load than Amazon’s Web Services. Google’s App Engine and Compute Engine are capable of handling incredible loads, as detailed In This Article.
- Google’s App Engine has support and ample documentation for splitting projects into modules, each with their own scalability settings. For example, a login module could handle all user authentication and scale to demand, without having to scale the entire application. Likewise, time consuming tasks can be set up to scale on larger, more powerful servers, and we would only need to pay for the more expensive servers on a per user basis.
- There is more material available on the web for Amazon’s Web Services, and I would like to explore and share some experiences with Google’s App Engine.
From this point on, we will start working with, and setting ourselves up to use Google App Engine. The next article will focus on setting up our development environment for App Engine, and we will upload a simple app to show that our setup is working correctly. If you would like to read more on App Engine, Click Here.