Large scale distributed applications with high and dynamic workload are moving towards cloud to cope up with high demands, disaster recovery and easy management of infrastructure.
BMW moved its “BMW Connected” app to cloud. About 6 million BMW owners worldwide use this cloud-based application that offers a wide range of intelligent services. Users can use this app for entertainment, navigation, live traffic updates, communicating with friends, family and colleagues while on the road, remotely monitoring or controlling their cars, etc.
Building and maintaining such a complex application intended for a large customer group is a real challenge. From the end user’s perspective, they are simply enjoying the seamless experiences provided by the BMW app. However, under the hood, the app’s reliability and resiliency are maintained by Microsoft Service Fabric. This is a framework that helps build cloud-centric Microservices-based applications. Microsoft Skype, Azure SQL DB, Cosmos DB, Azure Event Hub, Intune, Cortana, Azure IoT Suite are other popular cloud-based apps.
Microsoft Service Fabric’s user base has always been unfamiliar with the internal architecture of the system, in spite of the system being the backbone of Microsoft’s cloud-computing business for over a decade. At the beginning of 2015, a Bangladeshi student Shegufta Bakht Ahsan, from the computer science department of the University of Illinois at Urbana-Champaign (UIUC), first got the opportunity from outside Microsoft to thoroughly dig the system to analyse and measure its different components. He, under the guidance of Prof Indranil Gupta, completed a project in collaboration with the Microsoft team, exploring and validating the reasons behind Service Fabric’s several claimed properties such as strong consistency. The duo also provided a high-level overview of Service Fabric, how its different components solve different distributed-system’s problems and how these components are connected to form a single entity.
Shegufta said that the old day’s monolithic architecture, where all the components were stacked into a single package, is not appropriate for today’s cloud-centric world. To cope-up with today’s high demand, applications need to be designed in a distributed, robust, agile and cloud-friendly way. Microservices-based architecture is the key to designing such cloud-ready applications.
The software is divided into smaller components called “microservice” that can work independently to perform small tasks. They can communicate with each other and share their results using well-defined protocols. They can independently run in different data centres located globally. If some of the components crash, the system needs an Oracle that will detect and recover the failure. The Oracle also monitors the load to increase or decrease the number of microservices depending on changing demand. The unpredictable cloud-environment ups the probability of servers or network-links failing at any time. Besides, the dynamic characteristics of the “load” deteriorate things. Therefore, it is not practical for unaided “human operators” to act as the Oracle and handle such a large fleet of microservices.
Microsoft Service Fabric is a distributed platform that handles these challenges and orchestrates the large number of microservices. It enables design and life-cycle management of microservices in the cloud to efficiently solve problems so that application developers can fully concentrate on designing applications.
Shegufta said, “This research is just a starting point that sketches out the directions of further researches on Service Fabric.” He plans to find out how to manage risks and ensure consistency in an unpredictable environment, unlike the well-maintained and well-monitored infrastructure at Microsoft.
For students who look forward to doing research in this field, Shegufta said, “The field is still expanding and so are the opportunities to explore it. With university-industry collaborations, there are greater opportunities for students to do research.”