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 list of a few services within the Microsoft Azure platform that are hosted and managed using Service Fabric underneath. Included in the list are a couple services that aren’t really Azure specific, but PaaS or SaaS services provided by Microsoft.
- Azure SQL Database
- Azure Cosmos DB
- Azure IoT Hub
- Azure Event Hub
- Power BI
- Azure Database for MySQL
- Azure Database for PostgreSQL
- Azure Container Registry
- Azure Event Grid
- Azure Stream Analytics
- Azure DevOps (formerly Visual Studio Team Services)
- Azure Monitor
- Core Azure Services
- Azure Archive Storage
(The above graphic was presented within a couple sessions at the Microsoft Ignite 2018 conference on the topics of the Azure Service Fabric and Azure Service Fabric Mesh services.)
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.
Microsoft originally popularized the term “eating your own dogfood” during the development of Windows NT, when Dave Cutler insisted that the coding of the OS be performed under the current builds. Cutler went on to work on building Azure in the early days.
great and helpful blog to everyone.. thanks a lot for sharing
What could a good example/usecase for enterprises to use Azure Service Fabric beyond the PaaS platform?
Interesting that there was no description of service fabric mesh, and the reasons why it has been stalled.