In recent times, more and more organizations are moving their applications and infrastructure to the cloud. The flexibility that cloud-based applications have provided to businesses has, in turn, made them want more. No business likes to have its website down for the maintenance, not even for a few minutes. The websites crashing on a Black Friday sale is something less heard of, these days. The new features or updates are expected to be delivered to market quick to stay ahead of the competition. The overall goal of any business is to reduce the costs by a better utilization of resources.
Microsoft Azure with its wide range of service offerings has emerged as one of the leading cloud computing platforms in the market. While all of the above business requirements are technically achievable on Azure, they still present a challenge for the IT Service Provider that is responsible for building and maintaining the cloud-based application. More than the skill set of the development or administrative teams, it’s the design of the application that defines how flexible an application would be in reacting to the dynamic requirements.
Monolithic Design vs Microservices Design
Traditionally, applications have been built using a three-tiered architecture with a presentation layer, a business layer, and a data access layer. Even though the application can be logically considered as three units it is ultimately one process, or in other words, a monolith. In the monolithic design, if a change has to be made in a small area within the application, the whole application needs to be rebuilt, repackaged and redeployed.
This obviously increases the time-to-market and makes the business unhappy. Another challenge with this approach is that if a certain functionality of the application needs a scale-up the entire application has to be scaled up. This implies wastage of resources that are unnecessarily added. The cost goes up, and once again, the business is not happy.
Microservices is a design approach that comes to the rescue of a cloud application developer or administrator. Using this approach, an application can be developed as a set of small services, with each service encapsulating a functionality or a feature. Each service is an independent process with a communication mechanism that logically unites them. The benefit of using this approach is that the services can be independently changed, deployed, and scaled without impacting other services. For developers, the added advantage is that they can pick any programming language to build microservices.
The diagram below illustrates the difference between a monolithic design and a microservices design.
What is Azure Service Fabric?
While microservices design allows your cloud-based application to be ultra-flexible, you still have to manage various aspects like scalability, availability, replication, upgrades, etc. Azure Service Fabric is a distributed systems platform that allows you to focus on your application-specific issues and makes the administration of your microservices application a lot simple. One of the key features of Service Fabric is that it allows your application to be deployed to either a Windows Server or a Linux machine, and on any cloud – Azure, private cloud or even hosted cloud like Amazon.
Another cool feature of Service Fabric that every cloud application developer would appreciate is that it creates a development environment that is identical to the production environment. It essentially creates a local cluster of nodes that mimics the Service Fabric Cluster, and in other words, creates a “datacenter on your machine”. This approach eliminates the need of a simulator and ensures that if your code runs fine on the local cluster it would do so on the production cluster. As far as programming microservices is concerned, Service Fabric offers developers three choices as shown below.
Advantages of Service Fabric
Service Fabric may be relatively a new platform in the market but it has been used by Microsoft for its own cloud-based services like Azure SQL Database, Cortana Intelligence, Azure IoT, Power BI and much more. Below are some of the advantages of using Service Fabric.
• Hyper-scalability
• Reliability
• Low latency
• Programming Model Flexibility
• Deploy, Quick, Deploy Anywhere
• Health Monitoring
• Self-Healing
• Coordinated Upgrades
We recently hosted a webinar on Azure Service Fabric. The recording of the webinar can be viewed here.