Header background

Azure Service Fabric explained

This article is the first part of our Azure services explained series, focussing on Azure Service Fabric. In part 2 we will focus on Azure Functions. In part 3 we focused on Azure IOT Hub.

Even though it’s slightly behind AWS in cloud market share, Microsoft Azure is clearly the preferred option for many companies, especially for retailers. Some of the reasons for this:

  1. As it claims, Microsoft indeed provides a “consistent hybrid cloud”. With Azure Stack, businesses now have the ability to create a hybrid option which is a big preference for many cloud users, especially when there is a need for an on-premise solution.
  2. It has more regions than any other cloud provider.
  3. It provides a huge range of tools and services to boost developer productivity.

Welcome to our brand-new blog series where we’ll take a closer look at the most important Azure services, what they do and how they relate to other popular tools like Kubernetes, Cloud Foundry, or OpenShift. Let’s start with Azure Service Fabric.

From monolithic applications to microservice architecture

To understand the essence of Service Fabric, first, we must talk about the evolution from monolithic apps to microservices-based apps.

Before microservices were a thing, most applications were built in a “monolithic” way. In a monolithic architecture, the app’s functionalities are tightly coupled into one service. This approach can (and usually does) mean long downtimes when deploying new features, which results in fewer opportunities to make updates.

Also, there are downsides when it comes to scaling. Because every component scales at the same rate regardless of use, scaling monolithic apps to meet demand is slow and expensive. Availability and reliability are achieved by hardware redundancy, which means additional cost and complexity.

In the cloud era, this is a rather unproductive and costly way of doing business. Today, time-to-market, availability, and the ability to scale on demand have become more critical than ever. This has resulted in a shift towards building microservices-based applications.

The name “microservices” conveys the fact that the size of the service matters; microservices are supposed to be small. In this approach, each application is split into a set of fine-grained, loosely coupled services. Examples of such services can be protocol gateways, user profiles, shopping carts, inventory processing, and so on.

The benefit of decomposing an application into different smaller services is that it makes the application easier to understand, develop and test. This is great, because then services can be updated and scaled independently from each other, improving agility and productivity.

It is unclear when exactly the term was coined, because, just like in the case of containers, microservices too have a longer history than most people think. Still, according to Google Trends it was somewhere in mid-2014 when the people of the web started to be more interested in microservices.

"Microservices" in Google Trends

But a microservices architecture is not a bed of roses.

Even though they simplify things a great deal, microservices-based environments are more complex than their monolithic counterparts. To make a microservice-based environment work, developers need to write additional code in areas like inter-service communication or handling failure. Still, today’s Internet-scale services are built of microservices. How? With the right tools in place that keep microservices healthy.

Microservices complexity

Welcome to Microsoft Azure Service Fabric.

Azure Service Fabric is Microsoft’s platform-as-a-service (PaaS) for building and deploying highly scalable microservices-based cloud applications. It was born from Microsoft’s many years of experience in delivering mission-critical cloud services. It’s also common knowledge that Microsoft is eating its own dog food when it comes to developing and deploying microservices: Azure’s core infrastructure is based on Service Fabric, as well as many Microsoft services we all know.

Azure Service Fabric enables developers to compose cloud applications from microservices that run at high density on a shared pool of machines. It’s tailored to create cloud-native services that can start small and grow to massive scale with hundreds or thousands of machines.

Like Kubernetes, Service Fabric lets developers orchestrate their microservices. All they need to do is tell Service Fabric how many instances of a particular service they want, how much compute power and storage these need, and Service Fabric takes care of spinning up virtual machines, launching services, and so on.

Where Service Fabric goes further than Kubernetes is the automated lifecycle management it offers. It can manage, for example, software updates and watch over the health of the services throughout the process. Let’s say you update a component of your application, and have Service Fabric roll that into production. If the health check fails, Azure Service Fabric automatically rolls back the application to the previous version.

A few key Azure Service Fabric capabilities

  1. Azure Service Fabric is neutral on infrastructure, available for deployment on premises, or in any cloud you can imagine – Azure, AWS, OpenStack, VMware, you name it.
  2. It’s neutral regarding operating system, supporting Windows and Linux as well.
  3. It supports a range of developer tools and provides built-in programming models (Reliable Services or Actor Model) to simplify writing applications.
  4. In addition to stateless microservices, it supports stateful microservices, where compute and data are co-located to reduce latency and enhance performance.
  5. The development environment in the software development kit (SDK) is identical to the production environment. That means the exact same code that runs on your local development cluster will be deployed to the clusters in other environments.
  6. It provides full application lifecycle management and CI/CD.
  7. An outstanding functionality of the lifecycle management is the automated update rollout with a health check, with the option of automatically rolling back buggy updates.

Today, hundreds of organizations are realizing the benefits of the microservices approach. Azure Service Fabric is definitely one of the most powerful tools to reduce the complexities of such environments and meet the needs of many industries: manufacturing, financial services, gaming, IoT, or any application that benefits of added scalability and resiliency.

Do you plan to use Azure Service Fabric? Or you are using another Azure product to build microservices? Use the comment section below to share any stories or thoughts you may have on Microsoft Azure. And be my guest in the second part of this series, to see what Azure Functions is and how it compares to AWS’s famous serverless technology, AWS Lambda.