Microservices with Azure Service Fabric
During the past months, I've been looking at the different options for hosting applications built with a microservices architecture. It was during this research phase that I discovered Azure Service Fabric. This post will serve as an introductory post for a series of post on how to build applications using Azure Service Fabric.
Options for Building Microservices Applications
Developers are spoiled for choice when it comes to building microservices applications using .Net Technologies. The following is a list of some of the options available:
- Roll your own infrastructure
- On-Premise Containers with Docker orchestrated by Swarm, DC/OS or Kubernetes
- Azure Container Services (orchestrated by Swarm, DC/OS or Kubernetes)
- Azure Service Fabric
All of these are perfectly good options for building microservices applications. Rolling your own infrastructure is the hardest option. This is because it involves building the infrastructure orchestration from scratch. Using the on-premise or azure containerisation options solve most of the infrastructure headaches. This leaves you with the task of building the distributed application. This is not an easy task as you will need to perform significant tasks such as building communication channels between service instances, service discovery, telemetry collection, upgrading instances and determining when a service has failed and what to do with it.
Azure Service Fabric is different to the other options. It provides a platform meant to serve as a base for building distributed systems. It provides an orchestrator which handles the coordination of the cluster. In addition it comes with a programming model for building distributed applications.
What is Azure Service Fabric?
At its core, Azure Service Fabric is a platform for building distributed systems. It provides a framework which handles the infrastructure complexities of building distributed systems. This allows developers to focus their effort on building the business logic of the application rather than on building the plumbing required for the distributed application to work.
Azure Service Fabric supports applications built using .Net Core,.Net Framework, guest executables and even containers. In addition for applications built with .Net the platform allows for deploying either service projects, ASP.Net projects or an actor service (more on this in a future post). The service and ASP.Net projects can be either stateless (data is stored outside of the service) or stateful (data is stored with the service). For stateful services, Azure Service Fabric handles the replication of the storage.
A management console is provided that allows the administrator to manage the Azure Service Cluster. Through this console, one can view the health of the cluster, the health of the applications and deploy or update applications.
One of the great plus points of Azure Service Fabric can be used on-premise, on Azure or even on non-Microsoft cloud providers like AWS. On Azure, you have the option to select between Windows or Linux virtual machines. Only Windows is currently supported for on-premise clusters. Another great feature is the ability to run the Azure Service Fabric runtime on your development machine which means that your applications will behave the same between your development environment and your production environment.
Next Steps
This post is just the first in a series of posts on AzureService Fabric which I will be writing in the coming weeks. The following posts are part of this series. (Links will be added when a new post is published)
- Installing and Configuring Azure Service Fabric on Your Development Machine
- Anatomy of an Application in Azure Service Fabric
- Guest Executables in Azure Service Fabric
- Containers in Azure Service Fabric
- Stateless and Stateful Services in Azure Service Fabric
- Stateless and Stateful ASP.Net Services in Azure Service Fabric
- Actor Services in Azure Service Fabric
- Deploying Applications to Azure Service Fabric
- Fault and Upgrade Domains in Azure Service Fabric