kiko - Fotolia
With cloud-based, distributed systems, IT teams can practice continuous delivery, reduce management overhead and more efficiently build and deploy software. However, a microservices approach requires a clear strategy and careful consideration with regard to storage, networking, updates, APIs, containers and more.
For Microsoft Azure users, there are several native services and implementation frameworks that help reduce complexity and make it easier to manage distributed resources. IT technicians can access a range of tools through Azure Service Fabric, Microsoft's cloud-based hub for deploying container technology, invoking functions as a service (FaaS) or creating API protocols to expose a microservice.
In this article, we look at how Microsoft Azure supports microservices, including how it works with containers and serverless technologies. We focus on the eight key Azure tools available for building distributed systems and best practices to consider for microservices deployment.
Tools to deploy microservices on Azure
In general, IT teams can build and deploy software faster, and more flexibly, with microservices. Applications are broken into smaller service-based components, which makes them easier to autonomously scale and adjust. However, admins and developers must be prepared to adapt to the complexities that accompany these interconnected services.
The following Azure tools and services are designed for microservice deployment:
Azure Service Fabric
Azure Service Fabric is an application platform for microservices that run on premises or in Azure. DevOps teams can use its declarative model to deploy an application, and its dependencies, without the need to set up and manage the infrastructure. It runs globally, which reduces bottlenecks and delivers the high availability required by modern applications.
The framework provides application lifecycle management from the initial deployment to daily maintenance to decommissioning. Administrators can use it to detect and restart failed systems, discover service locations, monitor application health and manage state. Similar to Kubernetes, Azure Service Fabric simplifies configuration and deployment of applications comprised of container-hosted microservices as well as Azure's own platform services.
Azure Service Fabric Mesh
With Azure Service Fabric Mesh, IT teams indicate the resources needed, service availability requirements, and any resource limits, and it handles all the nuances of the underlying tools and infrastructure. The platform provides a serverless host for .NET Core microservices and enables developers to use any language supported by a Docker container. Service Fabric Mesh automatically handles upgrades and offers the ability to swap out containers when a new application version is deployed. In addition to being highly scalable for cloud-native workloads, the platform is both modular and adaptive.
In general, FaaS ensures that code runs on demand when triggered by certain service events. With Azure Functions, you install parts of an app and the functions are only loaded when needed. They can also be executed in parallel on demand. As a result, administrators can eliminate the need to provision and build an application infrastructure, opting to only pay for the time spent running explicit pieces of code.
Azure Event Grid
Developers and administrators use event-based architectures to receive alerts on application state changes. Azure Event Grid provides alerts so developers and administrators can immediately respond to those changes. The tool essentially acts as the glue for building event-driven microservice applications.
Azure Kubernetes Service
Azure Kubernetes Service facilitates deployment and eases the ongoing testing and management of container instances. DevOps teams can quickly build and launch containerized applications using the Azure Cloud Shell or a remote Azure command-line interface (CLI).
Azure Container Instances (ACI)
Containers include all the elements that microservices need to run, including code, runtime, toolsets, system libraries and settings. Since ACI is essentially containers as a service, end users are shielded from the orchestrator and CLI. The only requirement is an accurate image of the container to be created. ACI also handles cluster initiations, updates and patching.
Azure API Management
Azure API Management ensures a single point of ingress for service functions. Through API management integration, DevOps teams can access multiple tools and services without changing application code. This includes importing service definitions, defining complex routing rules, logging events as they occur and caching responses.
Service Fabric Reliable Volume
As a temporary container disc, Service Fabric Reliable Volume helps microservice applications maintain a persistent state while removing some of the latency issues typically associated with accessing storage with containerized apps. However, while Service Fabric Reliable Volume does provide general-purpose file storage and enables read/write capabilities, admins can also access Azure File Storage to ensure data reliability.
Best practices to consider
Developers and admins need unified monitoring tools and practices in place to successfully deploy microservices on Azure. For example, use Azure Monitor's data metrics and a Log Analytics agent in conjunction for performance and cost analyses. DevOps teams can analyze different data streams to quantify write transactions or correlate service partitions to help monitor costs.
And rather than using traditional approaches to error handling, such as relying on return codes, use Azure Service Fabric health policies instead. The platform offers a detailed, flexible and extensible model for evaluation and reporting. By actively monitoring service deployment health, IT teams can prevent problems from cascading and causing massive outages.
Moreover, by collecting service-based reports based on local views, DevOps teams can capture cluster-level views and diagnose potential issues in advance. In fact, it's an approach that can be applied more broadly in Azure. The resulting improvements to your workload responsiveness will enable your IT team to focus more on app development and less on infrastructure management.