11 min read
September 14, 2020

What is the right Cloud Service Provider (CSP)?

The answer is not as straight forward as you would hope. Working for my current employer, in January 2020 and April 2020, I help co-author the following blog posts diving into the question:I would recommend reading the posts above as they will provide other information not presented here, and other views.

One thing I would like to state upfront is that the cloud that people talk about is a buzzword. Its definition at its heart is someone else's computer. There are hundreds of services that make up this term "cloud". If you think about it the term "cloud" covers everything from infrastructure services like virtual machines to web-based services like GSuite. With that in mind I would like to define the core services as the following:

Infrastructure as a Service
(IaaS/Virtual Machines)
Platform as a Service
Database as a Service
Function as a Service
IoT as a Service
Analytical Services
(Data lakes, Hadoop, Spark, etc)

There are several cloud providers, at the time of writing this I would say the more known providers are:

Amazon Web Services (AWS)
Microsoft Azure (Azure)
Google Cloud Platform (GCP)
IBM Cloud
Alibaba Cloud

Each provider has their take on how to do certain things. Most of this doesn't change the outcome just how you go about it. This article is only going to focus on the providers that I would call the big three AWS, Azure, and GCP. One of the things that can very is discounts. All three have discounts in some form or another. GCP is mostly about sustained use, Azure and AWS both have Reserved Instance discounting, and AWS also just introduced Savings Plans. Outside of these, there could be other discounts that your partner might be able to get for you.

With that little intro, we are a place where we can cut to the chase. At this moment in time if you go with any of the "Big Three", you will be fine, and you will have a decent/good experience. At the end of the day, AWS and Azure have the largest offerings. In my opinion, GCP is more focused on "The Google Way" and how the cloud supports that, we will get into that below. I would say all the major providers will have what you need to get the job done. Somethings might work better in one or the other or be easier to set up in one or the other.

With that understanding. I would say the quickest way to decide who to go with is, are you currently using services from any of the providers? If so are you satisfied? You have your answer, use them. If you are not satisfied or want to use this as an opportunity to try another provider this post will do its best to try to help. However, if you are struggling to make the decision, I strongly recommend using a company like the Nerdery.

From here there are a few questions to ask:
  • Should we be cloud agnostic?

    If you want to be cloud-agnostic, and provider would work, but using GCP could help force the point with their emphasis on containers and Kubernetes, and not as many product/services to try to lock you in.

  • Do we need to think about what can be done the quickest?

    If you are working with .NET applications, VMWare virtual machines, or any numerous Microsoft systems using Azure would probably get done the quickest.

  • Are you planning to refactor the app to support specific services?

    Do you know you want to use CosmosDB, Apigee, SageMaker, or any other service that is specific to a cloud provider? Then your choice is decided.

  • Are there certain services you know you want?

    You probably have a list of services you would like to use along with backups. Which provider has the most services, or what services are most important?

After going through those basic questions you probably have an idea of who to use. The rest of this post will look and compare some of the features and functionality of the providers.

First, diving into GCP. When GCP first started, and up to probably the last year, GCP was very much the Google Way. Some of that was great for the customer. I would say they have an emphasis on global and edge networks more so than AWS or Azure. Their goal is to get people into their network at edge points so then the traffic is happening over their high-speed internal connections, which will be faster than the public internet. Their PaaS offering is container-based, here is what their docs say about their App Engine Standard Environment:
"The App Engine standard environment is based on container instances running on Google's infrastructure. Containers are preconfigured with one of several available runtimes."

They also have a flex environment (App Engine Flexible), which like its name indicates has some more flexibility but still is container-based. There is nothing wrong with this approach and depending on the software you are running might work out of the box, but if you are dealing with any legacy code it could pose some problems.

GCP does not have as made regions as the others, 24 regions (2020/09), GCP Locations. However, the emphasis to get you in their network sooner can help provide a better experience even if you cannot get resources in that region. Depending on what you need, you might have to set up what is called a Virtual Private Network (VPC). It can span regions but requires subnets in each region. Some of the great features of GCP I would like to call out are cloud storage lifecycle, Apigee, BiqQuery, firewall tagging, BigTable, Cloud Spanner, AI Services (Tensorflow), and IoT. To see GCP product listing you can go, GCP Products. The other aspect I would like to call out about GCP, is they know that they might not have all the services when compared to the others around 90 (2020/09), AWS which has around 175.
You can find this information from:

This is part of why I would say GCP has a developer mindset and encourage you to use opensource solutions. If you dive into some of the current GCP Architect training (2020/09) there are several answers where the right answer was an open-source solution running on GCP.

Next up is AWS. I would say like GCP they are more global first, but still lacking when compared to GCP. Their Virtual Private Networks, also span regions. They are the first one to be a Cloud Provider, and really got some great publicity after their service survived a DDoS attack from a hacking group called "Anonymous", AWS Wikileaks DDoS. As mentioned above AWS has around 175 products/services, Wikipedia - AWS, and probably would say is considered the most complete cloud offering. When compared to GCP or even Azure, and you could have an easier time migrating legacy software to their system because of their offerings. I would make some of the same callouts around their features like cloud storage lifecycle management, network tagging, AI Services (Rekognition, SageMaker, etc), Athena, and Aurora. To see a full list of AWS products you can go, AWS Products.

Not diving into specifics as much as it was on GCP is not implying AWS is less, but the services do not need the call out. AWS is probably the most complete cloud offering at the moment. If you want to use containers they have an offering, if you want MySQL or NoSQL, AWS supports MySQL and has both DynonoDB and MongoDB. One of the biggest features I would complain about with AWS is its web site. If you have 5 servers in 5 different regions if you watch the URL, each server is managed by a system in that region. So even though AWS talked about being global their site almost gives off a different feel.

Last but not least is Azure. If you are running MS SQL Server, applications created with .NET, VMWare servers, Microsoft Active Directory, or other Microsoft Services, moving to Azure can be the simplest, and most natural choice. Azure does not have as many services/products as AWS, but I would estimate it probably has at least 150, and so most products you can find a direct one to one replacement. Some of the things I would call out on Azure is IoT, Service Fabric, Azure SQL Server, AI Services (cognitive services), and CosmosDB. Azure has been improving its global edge network but is the leader with 54 regions, Microsoft Global Network, which include regions in China. So you should be able to set up a service that is close to your clients. I would say Azure has put an emphasis on all their compliance offers with over 90, Azure Compliance. Azure also has Azure Stack, which brings Azure Environment to your data center. This can have some major benefits. Let's say you have regulatory requirements that certain data cannot leave your data center, this can help meet that requirement, or if you are a manufacturing plant this could bring some of their AI cognitive services to your data center to connect your cameras to help monitor your goods for product defects in real-time. For more information around Azure Stack you can go Azure Stack.

As mentioned before, this choice for which provider to choose really comes down to learning and thinking about which provider aligns best with your business. The other question that is starting to become more of the question, do I go multi-cloud or not.

Other Resources:

Amazon Web Services (AWS)
Microsoft Azure (Azure)
Google Cloud Platform (GCP)