Microservices Architecture and the design options in Microsoft Azure

November 28, 2019, MOQdigital


MICROSOFT Azure Microservices blog

Over the past half a decade or so, the term Microservices has become folklore among the software development community. Some argue that Microservices is finally delivering what SOA (Service-oriented Architecture) promised.  

We all jumped into the SOA bandwagon as early as the 2000s, and have been building three-tier applications with service layer for the frontend UI's, exposing required data from backend via an endpoint. This design decoupled the application components to a certain degree. But dependant data models and shared code base made autonomous service impossible.

Microservices refers to partitioning components of your application as autonomous services. These services are independent of the other services and manage their own data. Another way to think about this is, in addition to partitioning your application vertically (User Interface, Business Services and Databases) we are partitioning the application horizontally, based on the functionality into independent autonomous building blocks.

So, what made Microservices so popular and made it interesting to developers and businesses alike?

A combination of Cloud, Containers and Domain-Driven Design can be attributed to the popularity of the Microservices. When cloud become popular, questions on storage, servers become irrelevant and developer could quickly create services, databases etc. (exactly what one needs while creating Microservices).

With docker, developers could create and run hundreds of services in their machine running inside as many containers as the resources allowed. Domain-driven design provided an architecture/design pattern, that complemented the Microservices principles. In fact, they complement each other. For example, contexts and a separate database for each service.

One silent hero in this revolution is the DevOps tools. Having the ability to deploy hundreds of services, makes your CI/CD toolchain super critical to the success of your application architected using Microservices.

Today, cloud makes it easier to build and host Microservices applications, as all of the cloud vendors offer Microservices-specific services. Let us look at what the options are for building Microservice applications in Azure.

Azure Service Fabric

Azure Service Fabric is Azure’s platform as a service (PaaS) offering to build and host Microservices applications.

What makes this offering interesting, a lot of Azure’s infrastructure itself is built-on the Azure Service Fabric platform. This means it is battle-tested and production-ready. Azure Service Fabric takes care of the underlying complexities of building Microservices applications by letting the developers focus on the business problem. Azure Service Fabric can run service code either in a container or inside the processes and orchestrate all the service needs.

Service Fabric not only supports the cloud, but it can also run in a local environment as well. Also, it brings a lot of tools and capabilities to manage deployments, upgrades, health and diagnostics and service life cycle management. As Azure Service Fabric supports bringing your existing code and transform them into the microservices, it should be one of the primary options, if you are considering migrating a legacy application to Microservices and cloud.

Azure Kubernetes Service

If you want to build your Microservice the cloud-agnostic way, containers and Kubernetes is the way to go. However, the question is ... do you want to build and manage your Kubernetes environment? Azure Kubernetes Services is Azure’s managed Kubernetes offering. Azure Kubernetes Services makes deploying and managing containerised applications easy. So if you plan to run your microservices inside a container, you should consider leveraging Azure Kubernetes Services.

Serverless Microservices using Azure Functions

A (relatively) new kid on the block is Serverless Microservices. Serverless Microservices uses Azure’s (or other cloud vendors) Serverless platform (Azure Functions) to build and deploy Microservices applications. The consumption-based pricing model of Azure Functions makes it extra appealing as there will be hundreds of services created. Depending upon how developers partition the application, a Microservice could be an Azure Function or could be multiple functions.

Microservice architecture has become mainstream and Microsoft Azure provides complete offerings to embark on a cloud native Microservices journey. These options are supported by capabilities for DevOps to build, deploy and ultimately manage these Microservices applications.  This is a compelling platform for clients looking to start the Microservices journey.

Whether you need fine grained control over your Microservices infrastructure, a  focus on your business problem or you want to migrate existing applications to Microservices architecture, a route exists with Azure. 

If you are looking for someone to help you navigate this journey, reach out to our account team, our architecture team is ready to assist you with a defining your journey - or, let us show you how we can transform your applications in our free application assessment and solutioning workshop.