Microsoft uses their own products to build and host their own products. This is done from the development platform level, all the way into the Microsoft Azure cloud. This concept of using your own products is called “Dogfooding”. (I have no idea where this term came from, but that’s what it means.) Dogfooding refers to the concept of “eating your own dog food”; meaning that you consume your own products and that helps you make your own products better. Microsoft does this a lot and in fact in the Microsoft Azure cloud, many services are built out “on top of” or using other services.
VM Turtles All the Way Down
At the core of the Microsoft Azure cloud lies the Virtual Networks, Virtual Machines, and Azure Storage Accounts. These 3 key services provide the foundations of which Azure is built on top of. All your custom VMs are running on this, and so are Azure SQL Database, Azure Web Apps, Cosmos DB, and every single Azure service. Every Azure PaaS (Platform as a Service) service is built on Azure IaaS (Infrastructure as a Service).
Every Azure PaaS service is built on Azure IaaS.
While Azure Storage Accounts are at the core of absolutely everything in Azure, it’s still just a storage service. Azure Storage is used to many different types of data, including Virtual Machine (VM) operating system and disk images; or .VHD files. Then the Virtual Machines and Virtual Networks are used to run any kind of Windows or Linux workloads in the cloud.
Additionally, Microsoft Azure Infrastructure as a Service (IaaS) contains a service called VM Scale Sets (or Virtual Machine Scale Sets), VM Scale Sets allow you to spin up a cluster of multiple VMs that are all identically configured and implements the ability to automatically scale out. VM Scale Sets allow you to dynamically scale your VM workloads by setting up rules that will scale out (add VMs) and scale in (remove VMs) from the cluster based on server / workload metrics.
While everything is built on Virtual Networks, Virtual Machines, and Storage Accounts, the Platform as a Service (PaaS) services are all built on top of VM Scale Sets so they can provide the built-in, managed scaling capabilities that allow you to deploy and manage your applications / data without being concerned about the VM details underneath.
Azure Service Fabric Core
Azure Service Fabric is a “pseudo-service” within Microsoft Azure. It’s really just Microsoft Service Fabric that gets provisioned for you from an ARM Template. The reason for this is that Azure Service Fabric, when provisioned, will spin up a Resource Group that contains a VM Scale Set that runs the cluster of VMs that will be making up the Service Fabric Cluster.
Microsoft Service Fabric is a product that is actually a Polynimbus cloud product. This means it supports multiple cloud providers in that you can install and run a Service Fabric Cluster in Microsoft Azure, Amazon AWS, or even any other cloud provider. In fact, Microsoft Service Fabric can even be fun on physical servers or VMs in any on-premises datacenter as well. Along with all of this, however, Service Fabric is easier to provision in Microsoft Azure since Azure provides an easy to use wizard and template to get up and running faster. On-premises or in other clouds you would need to do all the setup and configuration manually, but it can definitely be done.
Microsoft Service Fabric is a Polynimbus cloud product that can run in Microsoft Azure, Amazon AWS, other cloud providers, or even on-premises!
Service Fabric was released in 2015, however, it’s has foundations that go all the way back to the very beginning of Microsoft Azure. The technology and patterns used to build out Microsoft Service Fabric (aka Azure Service Fabric) come from the Azure Fabric Controller which is the underlying service that automates and manages the Microsoft Azure cloud platform and data centers. As a result, Service Fabric is older than it seems and really has been around as long as Microsoft Azure, and is a very proven and battle tested system.
When provisioning an instance of Azure Service Fabric it will setup a VM Scale Set for the cluster of VMs that comprise the Service Fabric Cluster, complete with Azure Load Balancer, Azure NICs, Azure IP Addresses, Azure Virtual Network, Azure Storage Accounts, and other necessary IaaS services.
Beyond just spinning up a cluster of IaaS VMs, Azure Service Fabric is a full “custom PaaS” system. It runs as a bunch of micro-services that run on the VM Scale Set cluster itself, and it allows you to deploy out your own micro-service based applications and systems across the cluster. It also allows you to easily scale and manage your micro-services that are hosted within that “custom PaaS” service as well.
Azure Service Fabric is a full “custom PaaS” system.
Customers of Microsoft Azure aren’t the only ones who use Azure Service Fabric. Microsoft uses Azure Service Fabric themselves, and this is the reason that Service Fabric exists in the first place. Without Microsoft needing to use Service Fabric, it’s possible they may have never created it in the first place. Azure Service Fabric was grown out of the necessity of the cloud to have a PaaS service platform that can be used to build out and host micro-service architectures more affectively.
Service Fabric Powers PaaS
With Service Fabric growing out of the need to host micro-service architectures in the Microsoft Azure cloud, it makes logical sense that Microsoft uses it to provide the managed VMs that host Azure PaaS services within the platform. Essentially, Azure Service Fabric powers many PaaS services offered within Microsoft Azure.
Azure Service Fabric powers many PaaS services offered within Microsoft Azure.
The fact that Microsoft uses Azure Service Fabric to host and manage certain PaaS services is proof and validation that Service Fabric is ready for Enterprise use. You may need to rearchitect or build your systems differently to fully support a micro-services architecture and the additional state management and other features of Service Fabric, however, you or anyone can do it to provide “Internet scale” systems in the cloud.
Microsoft doesn’t really publish a full list of all the services in Azure that are built on and hosted using Azure Service Fabric. However, there are some services that have been stated in keynotes, conference presentations or other mediums to be running on Azure Service Fabric within the Microsoft Azure cloud.
Here’s a couple services that are publicly known to be hosted by Microsoft using Azure Service Fabric:
- Azure SQL Database
- Azure Cosmos DB
- Azure Service Fabric
I’m sure there are other Azure PaaS services that run on Azure Service Fabric, but hasn’t seen indication of which services yet (at least at the time of this writing.) There are a few Azure PaaS services built on Service Fabric. I wonder if the following services are running on Azure Service Fabric as well:
- Azure MySQL and Azure PostgreSQL
- Azure IoT Hub
- Azure Service Bus
There is a common misconception that Azure Service Fabric is new since the service / product was released in 2015. Actually, Azure Service Fabric is merely a new product offering, as Service Fabric itself takes it’s origins from the Azure Fabric Controller that is the underlying service that manages and automates the Azure Regions and Data Centers. As a result of this, Azure Service Fabric is really as old as Microsoft Azure itself, and as such is a very proven and “battle tested” service.
Azure Service Fabric is sort of the unseen hero or hidden automation powerhouse behind much of the success of the Azure platform.
If you are hesitant and untrusting of using Azure Service Fabric for your own projects, just remember that Microsoft uses the same Service Fabric to host Azure Services. This is the same Service Fabric you can use for your own micro-services based applications and workloads. Azure Service Fabric is sort of the unseen hero or hidden automation powerhouse behind much of the success of the Azure platform.