4.6 Article

Monolithic vs. Microservice Architecture: A Performance and Scalability Evaluation

Journal

IEEE ACCESS
Volume 10, Issue -, Pages 20357-20374

Publisher

IEEE-INST ELECTRICAL ELECTRONICS ENGINEERS INC
DOI: 10.1109/ACCESS.2022.3152803

Keywords

Microservice architectures; Computer architecture; Scalability; Business; Companies; Java; Complexity theory; Software architecture; microservices; monolith; software measurement; benchmarking; performance; scalability; cloud computing; Azure

Ask authors/readers for more resources

This paper compares the performance and scalability of monolithic and microservice architectures on a reference web application. The findings suggest that a monolith performs better than its microservice-based counterpart on a single machine. The Java platform is more efficient for computation-intensive services, while the technology platform effect is reversed for non-computationally intensive services on machines with low computational capacity. Vertical scaling is more cost-effective than horizontal scaling in the Azure cloud. Scaling out beyond a certain number of instances degrades the application performance. The implementation technology (Java or C#.NET) does not have a noticeable impact on the scalability performance.
Context. Since its proclamation in 2012, microservices-based architecture has gained widespread popularity due to its advantages, such as improved availability, fault tolerance, and horizontal scalability, as well as greater software development agility. Motivation. Yet, refactoring a monolith to microservices by smaller businesses and expecting that the migration will bring benefits similar to those reported by top global companies, such as Netflix, Amazon, eBay, and Uber, might be an illusion. Indeed, for systems that do not have thousands of concurrent users and can be scaled vertically, the benefits of such migration have not been sufficiently investigated, while the existing evidence is inconsistent. Objective. The purpose of this paper is to compare the performance and scalability of monolithic and microservice architectures on a reference web application. Method. The application was implemented in four different versions, covering not only two different architectural styles (monolith vs. microservices) but also two different implementation technologies (Java vs. C#.NET). Next, we conducted a series of controlled experiments in three different deployment environments (local, Azure Spring Cloud, and Azure App Service). Findings. The key lessons learned are as follows: (1) on a single machine, a monolith performs better than its microservice-based counterpart; (2) The Java platform makes better use of powerful machines in case of computation-intensive services when compared to.NET; the technology platform effect is reversed when non-computationally intensive services are run on machines with low computational capacity; (3) vertical scaling is more cost-effective than horizontal scaling in the Azure cloud; (4) scaling out beyond a certain number of instances degrades the application performance; (5) implementation technology (either Java or C#.NET) does not have a noticeable impact on the scalability performance.

Authors

I am an author on this paper
Click your name to claim this paper and add it to your profile.

Reviews

Primary Rating

4.6
Not enough ratings

Secondary Ratings

Novelty
-
Significance
-
Scientific rigor
-
Rate this paper

Recommended

No Data Available
No Data Available