Publication date: 19 December 2019
Existing web applications are often implemented following a monolithic approach. A fast growing code base continuously introduces greater complexity and will eventually reveal the technical and organizational limitations of a monolithic application. A solution to overcome these limitations is the transformation into a microservices architecture.
In a first step, this thesis gives an overview of advantages and disadvantages of the microservices pattern and helps to decide whether a transformation from a monolithic to a microservices architecture is worthwhile or profitable. Based on an open source application implemented in .NET that serves as an example, an incremental approach for splitting a monolith into microservices is demonstrated and evaluated. Concluding, benefits and drawbacks of a microservices architecture are identified.
Furthermore, the created microservices are containerized using Docker. By utilizing container orchestration platforms, the microservices application is deployed onto cloud infrastructure. The available orchestration platforms in Azure are Azure Kubernetes Services (AKS), Service Fabric on Linux and Service Fabric on Windows. The evaluation of these platforms with regard to their functionality as well as performance shows that the Service Fabric platform is lacking mechanisms for full encapsulation and only provides basic functionality for container management. However, under high load, a Windows-based Service Fabric cluster performs significantly better than AKS and Linux-based Service Fabric.
A quick glance at the microserivces architecture after the transformation:
Title photo by Hal Gatewood