Microservices Architecture on Azure Fabric Services:
Azure Service Fabric is a distributed system platform that makes the packaging and deployment of microservices-based applications easy, fast and mange scalable and reliable. It helps avoiding complex infrastructure and addressing challenges in developing and managing the cloud native applications.
Microsoft Azure Service Fabric provides the necessary mechanism to build Microservices-based applications. Under the hood it facilitates the below capabilities.
- Provides necessary APIs to build Microservices applications
- Manages state for the services in the Microservices applications
- Provides hosting mechanism for Microservices based applications
- Handles scaling out for independent services in the Microservices application
- Guarantees High Availability by spinning out a new service instance for the Microservices application when one of the instances goes down,
- Provides mechanism to monitor node and service instance health,
- Helps in managing life cycle of Microservices application using a feature rich and intuitive dashboard.
- Provides all that is needed to build, manage, and deploy Microservices based application.
The major benefits for using Microsoft Azure Service Fabric are:
- Fast deployment times – Creating VM instances can be time consuming. In Service Fabric, VMs are only deployed once to form a cluster that hosts the Service Fabric application platform. From that point on, application packages can be deployed to the cluster very quickly.
- High-density hosting – In Cloud Services, a Worker Role VM hosts one workload. In Service Fabric, applications are separate from the VMs that run them, meaning you can deploy a large number of applications to a small number of VMs, which can lower overall cost for larger deployments.
- The Service Fabric platform can run anywhere that has Windows Server or Linux machines, whether it’s Azure or on-premises. The platform provides an abstraction layer over the underlying infrastructure so your application can run on different environments.
- Distributed application management – Service Fabric is a platform that not only hosts distributed applications, but also helps manage their lifecycle independently of the hosting VM or machine lifecycle.
- Deploy and evolve the services at the lowest cost and at the highest speed,
- Low costs due to the rapid response of the service to meet the changing business requirements.
- Exploit the widespread skills of developers in the mainstream marketplace, for instance it is not necessary to use specialist developers as services can be created through widely used developer languages.
The figure shows the architecture of Azure Service Fabric for microservices deployment,
The Architecture consists of the following components:
Service Fabric cluster – A network-connected set of virtual machines (VMs) into which your microservices are deployed and managed.
Azure Load balancer – After creating an Azure Fabric Service cluster, the cluster is ready to use the load balancer. Azure load balancer is created and configured with our public IP address and all the traffic is redirected to azure load balancer and it’s responsible to redirect to specific API Gateway based on the load.
Azure Active Directory – Azure Fabric Service uses an Azure Active Directory (Azure AD) identity to create and manage other Azure resources such as Azure load balancers. Azure AD is also recommended for user authentication in client applications.
Virtual network – By default, Azure Fabric Service creates a virtual network into which agent nodes are connected. Which lets you control things like subnet configuration, on-premises connectivity, and IP addressing.
Virtual machine scale sets – Virtual machine scale sets allow you to create and manage a group of identical, load balanced, and autoscaling VMs. It also provides the fault and upgrade domains.
Nodes – The nodes are the VMs that belong to the Service Fabric cluster.
Azure API Management – In this architecture, API Management acts as an API gateway that accepts requests from clients and routes them to your services.
Azure Key Vault – Use Key Vault to store any application secrets used by the microservices, such as connection strings.
Data Stores – Microservices architecture should not share storage data between one service to another services. Microservices should be independent to each other services so at any point of time any service can be developed, build, and deployed independently. Data should not be stored in the local cluster because it will be lost when we do the deployment always, data should be stored in some external services Azure SQL or Cosmos DB.
Azure Logic Apps – Is a cloud-based platform for creating and running automated workflows that integrate your apps, data, services, and systems. With this platform, you can quickly develop highly scalable integration solutions for your enterprise and business-to-business (B2B) scenarios.
Azure Storage – Highly available, massively scalable, durable, and secure storage for a variety of data objects in the cloud. Azure Storage data objects are accessible from anywhere in the world over HTTP or HTTPS via a REST API.
Azure Container Registry – Container Registry to store private Docker images, which are deployed to the cluster. Azure Fabric Services can authenticate with Container Registry using its Azure AD identity.
Azure Monitor – Azure Monitor collects and stores metrics and logs, application telemetry, and platform metrics for the Azure services. Use this data to monitor the application, set up alerts, dashboards, and perform root cause analysis of failures. Azure Monitor integrates with Azure Fabric Service to collect metrics from controllers, nodes, and containers.
SendGrid – strips large scale sending of corporate emails of their complexity and the deliverability of a business’s application-generated email is improved.
Azure Defender – Microsoft Defender for Containers is the cloud-native solution that is used to secure your containers so you can improve, monitor, and maintain the security of your clusters, containers, and their applications.
Azure Pipelines – Azure Pipeline is a cloud service that we can use to build and test our code project automatically. The Azure pipeline has a lot of capabilities such as continuous integration and continuous delivery to regularly and consistently test and builds our code and ship to any target.