I’ve done extensive work on AWS using CloudFormation, Autoscale groups and have implemented pretty much every service that Amazon offers in some shape or form over the last 3 years for various projects. Probably the most notable implementations being Remote Control Tourist and AusPost Video Stamp. So with all this AWS work and experience why would I look at Google Cloud Platform? Platform as a Service (PaaS) is the short answer, let me explain…
Imagine you have a small development team (half a dozen people), some are amazing frontend programmers, others (like me) do a lot of the backend programming, another is a solution architect and another is a tester. You need to have DevOps skills in-house to be able to use AWS the way it is intended. Which means you need:
a.) multiple people trained in the AWS suite and how to implement them
b.) multiple people with sys admin/devops skills to software the instances or implement a system for automating software installation and configuration
In a small team you are unlikely to have this crossover of skills which means you are going to want a Platform as a Service offering. Now I know you can go with Elastic Beanstalk however there is no comparison to Google AppEngine (in my opinion).
Where AppEngine shines
You have a small site, it only gets a little bit of traffic but when it does get traffic, the traffic is really spiky. Naturally high availability is mandatory because customers love it when their sites go down under load. On AWS this would like something like:
1x Elastic Load Balancer
2x Small EC Instances (in separate Availability Zones)
1x Small Multi Availability Zone RDS Instance
On top of that, Elastic Load Balancers are not as “elastic” as people think. In order to prepare for a big spike you need to:
a.) have a support contract with Amazon
b.) notify Amazon via support ticket at least 24 hours in advance with an estimation of your traffic breakdown
So that’s quite a list of stuff. What other requirements are there? Oh you need the hosting to always be on in case you get the odd bit of traffic from time to time outside of your peak windows. Even with reserved instances you are talking about a fair bit of cash each month for the setup I’ve outlined above and on top of all of that you still need to have Chef/Puppet/Ansible/Saltstack to handle the autoscaling aspect which means a developer coding up configurations for this infrastructure.
Or you could create a AppEngine project, press one button to deploy it, and then pretty much forget about it. As an added bonus AppEngine will scale up and down as it needs to, loadbalancing is a non-issue and completely automatic. So I have a high availability, autoscaling, 1 click deployable application that is also free when the traffic is below the daily free limits. This is possibly the most significant. A recent project would have cost me ~$250 on AWS per month. The project ran for 3 months. The cost on Google AppEngine was a staggering $75 for the 3 months!
What is particularly interesting about the Google Cloud Platform is that while it appears that they have fewer tools available the fact is that the tools they do have are exactly what you need to build large scale applications. Additionally, doing due diligence on optimisation and aggressively caching wherever possible to reduce database reads pays big dividends in cost savings. The way AppEngine is priced encourages developers to code properly as they are rewarded for it.
The most recent thing I’ve noticed in the last few weeks is that the UI of both the administration system and the documentation have undergone a huge restructuring and styling treatment. The Google Cloud Platform really is the most accessible it has ever been and is definitely worth consideration. Well done Google!