Thursday, 24th of Oct 2019
AWS vs GCP; Deciding on serverless platforms
Starting a new cloud development project is daunting. With so many things to consider this list could be endless. Some questions that you'll likely ask at the start of a serverless project are, what programming language should be used? What's the best database engine to use? How will the solution scale and what kind of environment should it be setup on? Then finally, AWS vs GCP?
AWS vs GCP is the big question we want to address today. Which provider offers all the services you need to make your project successful? You could run your project off a virtual machine in any cloud provider, but that's so old school. To make the project top-notch the right services need to be leveraged from the right cloud provider.
In this post we're going to take a deep dive into both Amazon Web Services (AWS) and Google Cloud Platform (GCP) to help you answer some of these questions. Importantly we'll help you make the right cloud platform choice.
Context is paramount when evaluating cloud platforms, there are nuances to platform projects that make a one size fits all approach difficult. What we have done is we have set up a scenario for a common serverless project.
Introducing Frankbook: Frankbook is a social media platform which allows users to create an online profile of themselves and publish content. On Frankbook users are required to upload a profile picture before they can share their content to friends. Sound familiar?
As corny as it is we think this is a great example of a modern single page application (SPA). For the purpose of this scenario, Frankbook is built with React and uses various APIs to allow for users to upload content.
It goes without saying, if your project is more complex than this scenario, you can get in touch with us at Franklin and we can help make your serverless project successful projects.
Where are the data centres?
Our advice: If you're in North America, Europe or Asia Pacific then there is decent coverage with good support for most of the core product offerings in each region.
When hosting an application you want to make sure the data is stored in your local region, or a region that is local to your consumers. If it's too far away then latency will increase, and if you're storing sensitive information there might be regulations around what country can house that data. So location is key starting point to any new project build.
Over the past few years AWS and GCP have been adding new data centers around the globe to ensure they are hitting every region that wants to consume their services.
AWS have a few more regions than GCP and more importantly they have a footprint in the Chinese market, which is something Google has been unable to achieve. Without directly comparing which provider has more regions, it's worth looking at their websites to ensure the services you want to consume are available in your prefered region. As their data centers are constantly growing, so are their available services.
Compliance & Security
Our advice: First identify your organisation's level of required compliance and use this to research the list of compliance for each. Do your research!
Is your data safe? Can it legally reside on your cloud providers servers? Compliance and security is crucial in a successful cloud based project so you will need to consult your organisational stakeholders to identify what level of compliance you require.
Both AWS and GCP have a large list of certifications for compliance. Depending on what kind of project you're building will depend on what kind of compliance your provider will require, by comparing some of the main global-like reports we can compare;
|ISO 27001||ISO 27001|
|ISO 27017||ISO 27017|
|ISO 27018||ISO 27018|
|SOC 1||SOC 1|
|SOC 2||SOC 2|
|SOC 3||SOC 3|
|PCI DSS||PCI DSS|
This list isn't very comprehensive, but you'll notice AWS has ISO 9001 and GCP doesn't. This doesn't mean that AWS is more compliant across the board, often it means they've taken the time to validate their data centers and processes to adhear to ISO 9001 standards, and they've given priority to get the certification. GCP might meet all the requirements too, but they don't have the official certification.
AWS and GCP are both in a position to work with country specific regulations (refer to each platforms compliance policies above). Looking at their client list for FinTech there are some major brands on each platform such as; HSBC, PayPal, GoCardless, Revolut on GCP and RobinHood, TransferWise, Coinbase, Stripe on AWS.
If you're building a project that requires extra certifications, compliance or is highly regulated you'll need to dig deeper into their compliance certifications, but for the majority of projects either provider is able to manage your sites.
Serverless language support
After determining that GCP or AWS can meet your compliance requirements it's down to language selection. If the cloud provider does not natively support the language you can Dockerize your application and have it run within a container, or even get it running on a virtual machine.
As mentioned earlier there are great tools you can leverage within AWS and GCP which make running your applications much easier, such as serverless compute, and database engines as a service.
Our advice: AWS has greater support for languages and a larger number of triggers but Google's open source support for Kubernetes is a big plus.
AWS and GCP are both investing heavily in serverless technologies. One of the most well known services is AWS Lambda, and for good reason. It has been credited as being the first public cloud provider with a serverless compute offering. Since then lots of other providers have started offering serverless compute, including GCP and smaller providers like CloudFlare and even applications like Twilio.
AWS Lambda supports a lot of languages and can be triggered from many of their other services.
GCP Cloud Functions doesn't support as many languages, or as many triggers.
In our example of Frankbook, either solution would work, however Lambda's often outperform Cloud Functions in benchmarks, particularly in cold starts; which is where a function boots up a new container for the request.
Although this blog post isn't about Azure, it would be remiss not to mention the work they are doing on their Azure Functions. They offer a variety of languages, some still experimental and not yet generally available, such as PowerShell and PHP. They also recently launched Durable Functions in a few languages, which is an interesting concept and worth watching closely.
Both Lambda and Cloud Functions have limitations on languages, CPU, memory and execution times. If you want to build solutions in your own language and not be restricted by serverless architecture you can use a serverless container environment.
Some of the other common complaints of utilising serverless features is the worry of vendor lock in, and running larger workflows, or unsupported languages. Again, serverless containers can solve this sticking point.
Fargate is the AWS solution which takes care of scaling and resourcing of new containers and scaling up and down the containers based on usage.
GCP similarlly has Cloud Run. Both work with Docker which is a well known and highly utilised container platform.
GCP often wins points of its strong support for Open Source software, and the fact that there is Cloud Run for GKE (Google Kubernetes Engine). This allows you to run your containers on your own Kubernetes cluster if you wish. Meaning you could pick up this solution and host it anywhere. Whereas Fargate is a docker container, but the service is uniquely AWS.
Now that Kubernetes has been mentioned, it's worth noting that Google built this software and open sourced it, and are now big contributors to the project. As they are contributing they support new features sooner on GCP than other providers which is a huge plus.
Our advice: Both GCP and AWS offer stable, scalable and feature rich SQL and NoSQL database solutions. Consider things like scaling, redundancy and trigger support when making your choice.
Databases are important to all projects and as expected AWS and GCP offer support for multiple engines and configurations of the CPUs, storage limits & memory.
As with most other services that AWS and GCP offer, there are a lot of features that overlap. Both providers have capability for automated backups, multi-zone replication with automatic failover, encryption at rest and SSL/TLS protocols for external connections.
Side-by-side comparisons offer little differences apart from a higher maximum scale by GCP and more engine support from AWS.
If traditional database engines aren't what you're looking for, then AWS offer DynamoDB and GCP have Firestore which are both NoSQL, fully managed Document stores. It's hard to compare both these databases because they aren't exactly the same.
Firestore lives within GCP but also sits nicely in the Firebase PaaS offering. It allows setup of Cloud Function triggers which perform specific actions; when a record is created, deleted or updated. Another interesting feature is client side authentication, with a small code snippet Mobile & Web App developers can allow users to read and write to the database without any server to verify the requests, Firebase handles all the logic and security itself.
DynamoDB sits within AWS, it can scale and is also heavily utilised by serverless web apps and mobile apps. It too supports triggers that fire off Lambda functions. Scalability is a big deal, it can handle more than 10 trillion requests per day and support peaks of up to 20 million requests per second.
Our advice: For our scenario, Frankbook could adequately sit on either AWS S3 buckets or GCP Cloud Storage.
React is a frontend framework which can be hosted in object storage service, such as AWS S3 or GCP Storage Buckets. With a CDN in front the content can be served from edge location close to the user.
Outside of hosting a site, cloud storage is also used for things like user-uploaded media, archiving and backups. Both cloud providers offer a suite of classes depending on throughput performance, latency, and durability.
|Glacier Deep Archive|
AWS benchmarks historically showed higher file throughput with uploads and downloads when working with lots of smaller files. Whereas GCP had higher throughput with larger files as their bandwidth was greater and the larger files had time to leverage those higher speeds. Currently it's hard to know which is better as they both update their services often and benchmarks become outdated quickly.
In our case, a simple website could sit on either S3 Bucket or Cloud Storage, both will be adequately performant.
Content Delivery Networks
Our advice: Whilst both have a highly performant CDN service, GCP ranks higher on benchmarking tests
Regions, locations and networks, which we're touched on already help define how powerful a CDN can be. Both GCP and AWS have CDNS, Cloud CDN and CloudFront respectively.
|Global reach with 190+ points of presence||Global reach with 90+ cache locations|
|SSL/TLS support||SSL/TLS support|
|Support request of up to 20GB||Support of files up to 5TB|
AWS have built out a large network since launching in 2006 and it's maturing nicely, but most benchmarks put AWS behind GCP in their tests. GCP has the tried and tested Google network to leverage and the CDN smarts that have propelled their assets like Google, YouTube to the most visited sites on the world-wide-web.
Code repositories & CI/CD Pipelines
Our advice: This area really comes down to tooling personal preference but the majority of our projects and products are in GitHub and Travis CI.
Outside of hosting an application it's important that your cloud provider can support some of the surrounding tools that enable projects to run smoothly.
Now that we know how our environment is going to work with our object storage, CDN, serverless functions and our database engine we have to store application code, test and deploy our application so it can be consumed.
AWS and GCP both offer GIT based repository services; AWS with CodePipelines (or CodeBuild) and GCP with Cloud Source Repositories. We won't go into detail here as they are GIT based and there are strong legacy options like GitHub, BitBucket and GitLab that a lot of developers tend to use.
Pipelines, similar to code repositories have strong legacy contenders like Travis CI, Jenkins, and CircleCI. All the major GIT repositories also offer their own native pipelines to further dilute the market.
If you do want to keep your pipelines and code repos within your cloud environments, it's on offer. AWS and GCP offer similar support, you can plug in external code repos, like GitHub to the pipelines, so when a new PR or Commit is made, the pipeline will start, test and deploy your solution. GCP supports Docker builds and AWS has support for Jenkins, both of which are great for attempting to avoid vendor lock-in.
Our advice: Both AWS and GCP provide the ability to easily and securely deploy to templated environments. If you want to use an external tool such as Terraform, good news as it's supported by both.
After testing your application and building it, you'll want to deploy it. Although the pipelines mentioned above can deploy simple applications, if you want to to create a whole environment like VPCs, Firewalls and spin up multiple containers then you need a deployment tool.
GCP has Deployment Manager, AWS has CloudFormation. Both services are really robust and allow you to template out your environment so it's created in a consistent manner each time. Additionally if you want to use third party tooling instead of native then Terraform is supported on both AWS and GCP and is a great alternative.
Our advice: We prefer GCP as it makes it easy to collate logs from multiple cloud environments.
Another important feature of running applications is having access to logging and reporting. Both GCP and AWS offer notifications and alarms to trigger events - such as Lambda and Cloud Function processes. All their tools output information to their logging tools.
With these logs, developers can use the native tools, or they can export them to powerful programs like Splunk or convert them to BigData sets for querying and manipulation.
It's important to note, in 2014 Google acquired Stackdriver and then worked it into their core GCP offering. Because it was an acquisition, and not natively built by Google, it has an interesting feature that gives it an edge over AWS CloudWatch. It's multi cloud enabled, meaning it can ingest logs from CloudWatch. Users that want to leverage some of GCP's big data tools and inject their CloudWatch logs right into GCP for consumption. Additionally it also has built in trace and debugging features, which CloudWatch lacks, but AWS does make up for with other services like X-Ray.
Our advice: AWS has more images available and more mature offering in terms of features, image ratings and feedback.
If you're not looking at integrating with all the fancy services that GCP and AWS have to offer, then you might want to look at their simple Virtual Machine offerings. AWS has EC2 and GCP with Compute Engine.
Both providers have a marketplace of predefined images that you can download and utilise, which is great if you want to get off the ground running. As an example, if you want a certified Wordpress optimised image, with a few clicks you can download them from the marketplace.
We searched a few keywords and it's clear the GCP marketplace doesn't have as many images as AWS as it's not as mature, although most common environments should be there. Another missing feature on GCP is a rating and comment system on the images. AWS allows users to provide feedback on the environment, which is useful to weed out the duds given there is so much choice on AWS.
Our advice: If you want to follow the flock and feel safety in numbers then AWS has the largest market share as a cloud platform provider.
Both platforms have managed to attract some large enterprise clients, as well as entice smaller start-ups to their platforms.
AWS has a clear lead with their client footprint because they were first out the gate with their cloud offering and have kept up the pace by iterating and releasing new products quickly.
GCP on the other hand was later to the game, but are catching up, winning some big names away from AWS and self-hosted solutions. Although they don't have nearly the same footprint as AWS and are even behind Azure in most reports, they consistently growing their customer base and spending big on bringing better services to market.
Our advice: AWS has the broadest scope and depth of products that suit almost any digital project in 2019. If however your application has its core functionality in content delivery, big data, ML and AI then GCP should be highly considered.
AWS has a huge set of products, so big that there are podcasts and blogs dedicated to “What's new in AWS” that update weekly. They play in all corners of technology, they have products such as;
- Managed Blockchain solution which helps customers execute transactions and contracts with decentralized ownership.
- Space as a service! A product which allow you to easily control satellites and ingest data with a fully managed ground stations as a service.
- Physical IoT device solutions. AWS IoT button is a physical dedicated hardware button to trigger IoT events.
GCP on the other hand hasn't gone as broad with their solutions, sadly they don't offer space as a service, or blockchain support out of the box, but the services that they offer are robust and some of them are market leaders. Google has a large focus on Content Delivery, Big Data, ML and AI - it's part of what makes their other products like Search, AdWords and YouTube so successful.
By focusing on a few key areas many write-ups and benchmarks prefer Google when it comes to big data and ML, however it's often a very close race and sometimes down to personal preference.
Our advice: Both platforms have excellent training programs.
AWS and GCP both want more clients using their cloud solutions, the best way to get more clients is to train engineers to better use their products.
AWS offers a wide range of certifications and training options for different roles including architects, developers, operations and general business. They have courses on popular e-learning platforms like ACloudGuru, CloudAcademy and Udemy.
GCP also has training available for developers, data engineers, architects, security engineers and general business. There are courses scattered around various e-learning platforms like AWS.
They both offer solutions through QuikLabs which allow you to spin up a new instance and complete hands on labs direct in the AWS or GCP console. There are also official training courses available on Coursera for both providers.
If you're wanting to up your skills and get a better understanding of how to use either cloud provider then the options are there.
Our advice: AWS has a larger number of partners to select from due to its market maturity.
If you don't have the skills within your business to work with a cloud provider yourself, or you want additional help both providers have partner programs.
AWS and GCP both share some top-tier enterprise partners like Accenture, PWC, Deloitte and Rackspace. If you're looking for a smaller partner for a more niche product then it's best to check their partner listings. Some quick searches show unsurprising results that aWS has more partners available then GCP - which is what you would expect with a large customer base and more time in the market.
|Law / Government||71||4|
At the end of the day it's hard to pick a “winner” or decide who is a better provider. Both are very powerful, competitive with price and share a lot of the same common features that most workloads require.
AWS definitely has an edge overall due to its maturity but it's GCPs immaturity that's its edge. The things it does, it does very well.
When using AWS users can often get overwhelmed with choice. A lot of their products overlap and it can be hard to select the correct tool. This is because AWS has independent teams for most of their products, which can result in less-than-impressive integrations between AWS tools and wildly varying user-interfaces within the AWS console.
GCP easier to use, with a consistent UI, smaller product offering and easier to read and find documentation. Although it's still immature compared to AWS it's often called the dark horse of the cloud world. As mentioned earlier, Google is throwing more and more resources at the division and it's gaining traction. It has some good supporting ecosystem products like Firebase, and is pushing its machine learning capabilities. If you haven't played with GCP it's worth dipping your toe in to see how it differs.
One final word when comparing AWS vs GCP, we know it's a cop out to not have a clear winner but honestly we find ourselves working more with AWS as it's a project requirement but if you're in the luxurious position of having no legacy systems to dictate which vendor to go with then contact us to talk about which platform is best suited to your project.
You may also like
2 minute read
Building on the previous article about the building of the Monolithic Serverless Hybrid, we wanted to discuss how we handled deployments. We…
5 minute read
Who is MessageMedia? MessageMedia is a global business SMS service provider based in Melbourne, Australia. Their global reach extends to New…