Michiel De Koninck
Machine Learning Engineer and LLM specialist
Amazon launched AWS in 2006, Google entered the picture in 2008 with GCP and finally, in 2010, Microsoft threw Azure into the mix in 2010. None of that matters in 2023. The typical complex choice to be made is:
“Which Cloud Provider should I go with for my company?”
Many factors come into play in the quest for a wise decision. We want to weigh in on merely one aspect of that decision by giving you a developer’s perspective on the differences between the major cloud providers. More specifically, we discuss our findings in comparing GCP and Azure.
A good disclaimer is never bad.
Wiser words have surely been spoken but nonetheless we must add that this is but our view on the matter. As a team of AI experts, we have our own particular preferences and annoyances. We merely present our view, take it with a grain of salt and feel free to comment on your own experiences.
Note that there are many articles already available that compare price related aspects of GCP and Azure, we do not go into that here. The goal is purely to compare functional differences when building solutions.
The general difference in experience comes down to this: while GCP takes your hand and leads you through its land of managed services that are quite easy-to-use, Azure allows (and even forces) you to make choices on a deeper level of complexity.
We provide a visual below to further illustrate that difference. We find the Google Cloud Platform to be quite straightforward in use while during development on Azure you will often need to know exactly what you are doing and make clear choices based on that.
From this comparison, you can’t make an absolute statement on which is better. Instead, the choice should fit your development preferences.
Now, let’s add body to these statements and look at some of the actual services offered by both our Google and Microsoft friends!
In this section we go through some explicit cloud services and compare how they are offered in Azure and GCP. We challenge you to: spot the general trend.
Azure App Service vs Google App Engine
To use an Azure App Service, you first need to create an App Service Plan.
While on GCP you can create an App Engine straight away, Azure provides an extra layer of abstraction in defining the infrastructure upon which your app runs as a separate resource.
The clear benefit of course, is that you have an explicit coupling between your app (defined by the App Service) and the infrastructure upon which it actually runs. Moreover, one plan can support multiple App Services.
Azure Container App vs Google Cloud Run
To use an Azure Container App, you first need to create a Container Apps Environment.
In line with the idea behind App Service Plans needed for App Services, you need a Container Apps Environment to define a Container App.
Note that while Azure lets you know that your containers will be running on a Kubernetes cluster that you don’t have to manage. On GCP you have no actual idea about the underlying infrastructure: “it just works”.
Azure App Function vs Google Cloud Function
To use an Azure App Function, you first need to create a Function App.
A third and final time for these compute services, we note the extra layer of grouping forced by Azure. The idea is again that you can group functions that need similar resources + have predictable cloud costs for your functions because their SKU is defined upfront in the Function App.
Overall, the same conscious management is also feasible in GCP, but the way Azure obliges you to allocate your compute resources through a decoupled layer, forces you to put thought into this upfront.
Azure Resource Groups vs Google ???
To create any useful resources in Azure, you first need a resource group.
Perhaps the clearest example of the extra layer of abstraction that Azure adds to the mix. The difference with GCP is apparent here: Azure presents Resource Groups as an extra layer of abstraction on the Subscription level (i.e. Project level for GCP) to allow for more separation between your cloud components. As always: this abstraction could either be useful or burdensome to you.
Azure Machine Learning vs Google Vertex AI
To use the Azure Machine Learning Pipelines, you first need to create a compute cluster.
Moreover, in Azure, you need to define all the machine types used by your pipelines upfront. In Vertex AI Pipelines, you can run a pipeline using “default settings” (overriding the machines used is just an option), meanwhile in Azure Machine Learning Pipelines, you can’t run a pipeline without explicitly defining which infrastructure you want to use.
Azure Synapse vs Google BigQuery
To use Azure Synapse, you first need to create the data as blobs in a Storage Account.
It is widely known that Google’s BQ is an absolute powerhouse . If you are used to the convenience of its functionalities (e.g. data goes straight into BQ, no explicit blob creation required, you have the feeling that you’re working with traditional SQL datasets and tables), working with Synapse’s low-level “make sure you manage all of the blob data yourself” may feel like a step back.
Besides these service-level comparisons, we also want to say a word regarding the current state of the Azure/GCP documentation, SDK/CLI and Terraform (IAAC-tooling).
For all of these, we feel that a lot of the Azure-related resources were either changed/released very recently or are in a preview state (note: time of writing is Q2 2023). We note a clear difference when comparing to the maturity and stability of the GCP equivalents.
While the fact that a lot of stuff is moving/has recently moved regarding Azure services may give us a feeling of working with unfinished tooling right now, this difference with GCP may have vanished entirely by 2024. It remains to be seen if the “extra effort currently required to make sense of the state of Azure tooling” is more easily manageable in the future.
From the above comparison of Azure and GCP services, you should have spotted the general concept shining through:
In Azure → to use X you need to first have Y
Because of those extra layers of abstraction added in the Azure Cloud environment; you can exert more explicit, fine-grained control on your cloud environment and infrastructure than you are able to in the Google Cloud Platform.
Whether that extra layer of control is a burden or a blessing to you and your team, is up for you to decide.
I spy with my little eye something beginning with a C.
Cloud?
Yes.
— Monty Python’s “Airline Pilots” sketch
In this article, we only discussed a small part of our multi-cloud learnings. As hinted at the beginning of this article, there is much more to talk about. Next up: stay tuned for a similar analysis of yet another of our favourite cloud providers (hint: starts with ‘ama’, ends with ‘on’).