The “Google Cloud vs AWS” topic is a common discussion argument among our members. Many people think that Google Cloud Platform is the biggest and strongest competitor to the AWS supremacy, as we have discussed already on our blog too some time ago. On the other side, they also know about the impressive numbers that AWS has on its side, and the huge advantage compared to its competitors. So, many people are wondering who will be the winner of this Google Cloud vs AWS competition, to better understand what platform they should focus their learning efforts on.
In this article we will try to tackle the Google Cloud vs AWS questions with a thorough and reasoned discussion about the major differences between these two major platforms. We will see what the strength and the weaknesses of both are, how to take advantage of them, and how to start learning both.
Google Cloud vs AWS: the available services
One of the biggest differences among the two platforms is the amount of services being available on each. From this point of view, AWS is the clear winner. The quantity and quality of the services available on AWS is extremely broad and wide, and it builds up a huge set of opportunities for many different needs. There are specific tools for media transcoding and Streaming, a managed Directory Service, 4 different relational and NoSQL databases, and even a Desktops in the Cloud service that provides remote Windows desktops. The various services are really well integrated, and they provide a very comprehensive cloud service. If you don’t mind locking yourself into a single vendor, AWS has no rivals with regard to the completeness of its platform and the productivity level that you can reach thanks to it.
On the other side, Google Cloud Platform’s list of product is way smaller, and mostly focused on classic IaaS and PaaS services. The latter is probably the area where Google focused most of its efforts, given that Google App Engine has been the first service ever launched in GCP. Nevertheless, you can find the usual IaaS computing, object storage, relational and non relational databases too, and a few more sertvices for DNS and Endpoints. The difference among the two competitors is huge here. How much it impacts on your architecture mostly depends on what your needs are. Chances are that the services provided by GCP can suffice for most common needs, and as we will see very soon, Google Compute Engine has many strength and pros that AWS is lacking.
One area where Google is particularly strong is Big Data, though. It comes as no surprise that a company like Google could profuse all of its experience in the area making some excellent products. And BigQuery really is, by the way. It allows you to analyze massive amounts of data in a really short time, even providing real-time insights about your datasets. And quite surprisingly for such a complex service, it’s also easy to get started with it.
Why GCE may be better than EC2
An area where Google might beat AWS is the IaaS computing platform, probably the most important service for both. EC2 is an amazing service, despite its many quirks, but Google really did an excellent job in creating a valid competitor.
For example, one thing that I really appreciated in GCE is how the “Pay per use” concept is taken to the extreme. The OPEX model is a major strength point of any cloud service, as I strongly remarked in my course “Introduction to Cloud Computing“. So why should I round up the the usage of my EC2 instance to the hour and pay for the whole fee if I used it for a smaller fraction of time? Google Compute Engine bills in minute-level increments (apart for a 10 minutes minimum charge), so you always pay exactly for what you use. You can imagine how convenient this approach can be in a situation when you need to quickly scale a complex infrastructure due to small bursts of traffic.
Speaking about traffic spikes, another huge advantage of Google Compute Engine is that its Load Balancers don’t need any pre-warming. Actually, AWS Elastic Load Balancer is not as elastic as it seems. It’s just not meant to handle a large number of requests. What you need instead is to ask for the so called pre-warming to AWS. After that, ELB can be configured to have a minimum scaling. That’s why on AWS you usually associate ELB with AutoScaling, another service in the platform. GCE balancers can scale instantly as soon as they notice a sudden traffic spike instead. Google promoted that with a great emphasis in a blogpost last year. In my opinion, the availability of this feature by default is another major point that might make GCE more interesting than EC2 in many scenarios.
Other nice GCE features too can be very interesting in same cases. For example, GCE’s persistent disk can be attached to multiple instances in read-only mode, an opportunity that is not available in AWS and allows to distribute data to a large workforce effectively. Also, GCE has a way better integrated networking compared to AWS. VPC is powerful, but is quite an external tool: it came two years after EC2. The latter wasn’t conceived to support a strong networking, a feature that has been added later on as a distinct service. Networking is a first class citizen on GCE instead, so much that you can create firewalls, subnets, routes and whatnot even before starting the instance. Quite a nice things, I have to say
So, is AWS hopeless?
Definitely not. Despite the comparison in the paragraphs above may seem strongly leaning towards GCE, AWS still has many cards to play in the Google Cloud vs AWS challenge. First and foremost, Google still lacks the widespread geographical distribution that AWS has. Just three regions (US, Europe and Asia), three Availability Zones each, versus 11 regions, and a couple dozens of AZ, including the brand new datacenter AWS just launched in Frankfurt, not including the allegedly new region in Ohio. And a much larger choice of Operating Systems and AMIs, a wider range of instance types and families, the availability of spot and reserved purchasing plans: all of them go to the advantage of AWS EC2.
Let’s consider two other services like Beanstalk and Google App Engine. They are two very common PaaS services, actually App Engine has been Google’s flasgship for months before GCE landed, and despite App Engine is a really great service that is being used by many developers, still Beanstalk seems slightly more interesting. Google App Engine is limited to Java, Python, PHP and Google’s Go, and like many classic PaaS platforms, you have small options to tune the underlying infrastructure. Beanstalk is probably half-way between a pure PaaS and a IaaS. At the price of a slightly bigger management overhead, you get a way more customizable service, and possibly even a looser vendor lock-in.
Google Cloud vs AWS: who’s the winner?
We could discuss this for days. Comparing complex platforms like GCP and AWS is not easy. I’m personally fond of AWS, and that would probably be my favourite choice, mostly because of the large variety of services available there. Nevertheless, I had a chance to play a little bit with GCE recently, and I’ve been impressed by the clean interface of the management console and by the bonus features I wrote you about. I don’t think I’d suggest anybody to migrate away from AWS, but there might be many cases where GCP can provide a better alternative to AWS. As always, it’s all about what you need to do, how you want to do it, what are your limits and constraints. That’s why it’s important to have a good knowledge about all the available options to make a wise choice, and that’s why CloudAcademy still is your best friend in the process of learning cloud computing, thanks to the courses that we recently launched about GCP and the many others that we have available on AWS. Learn both, practice with both, then make your choice. That’s probably the best way to understand what is the best cloud platform around.